
/* ==========================================================================
   WORKFLOW RH STTE v349 - CSS
   Comentários internos de manutenção: cada bloco abaixo identifica a finalidade
   visual das telas, badges, tabelas, modais, SLA, urgência e timeline.
   Estes comentários não interferem no funcionamento do sistema.
   ========================================================================== */

:root{--p:#051C3D;--p2:#1F50CD;--bg:#F4F6FA;--card:#FDFDFD;--txt:#1f2937;--mut:#64748b;--line:#D3DAE7;--ok:#126B4A;--okbg:#dcfce7;--warn:#8F5700;--warnbg:#fef3c7;--bad:#B42336;--badbg:#fee2e2;--info:#1F50CD;--infobg:#dbeafe}*{box-sizing:border-box;margin:0;padding:0;font-family:Inter,"Segoe UI",Arial,sans-serif}body{background:linear-gradient(135deg,#f7f9fc,#e9eef5);color:var(--txt);padding:18px;min-height:100vh}.login{position:fixed;inset:0;background:linear-gradient(135deg,#051C3D,#1F50CD);z-index:100;display:flex;align-items:center;justify-content:center;padding:18px}.login-card{background:white;border-radius:22px;max-width:430px;width:100%;padding:30px;box-shadow:0 30px 80px rgba(0,0,0,.28)}.login-card h1{color:var(--p);font-size:24px;margin-bottom:8px}.login-card p,.small{color:var(--mut);font-size:12px;line-height:1.4}.doc-logo{height:70px;max-width:210px;object-fit:contain;filter:none}.doc-header{display:flex;align-items:center;gap:16px;border-bottom:2px solid #051C3D;padding-bottom:12px;margin-bottom:16px}.doc-header h2{margin:0;color:#051C3D}.doc-header small{color:#64748b}/* OBS INTERNA v128 - DASHBOARD / GRID INTELIGENTE:
   O dashboard usa no máximo 5 cards por linha. Até 5 cards ficam lado a lado;
   acima disso, o JavaScript calcula a melhor quantidade de colunas para evitar sobra visual. */
.cards{display:grid;grid-template-columns:repeat(var(--dash-cols,5),minmax(0,1fr));gap:14px;margin:18px 0}
@media(max-width:1180px){.cards{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:820px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:560px){.cards{grid-template-columns:1fr!important}}.card{background:var(--card);border-radius:16px;padding:17px;border:1px solid var(--line);box-shadow:0 4px 14px rgba(15,23,42,.06)}
/* OBS INTERNA v105 - DASHBOARD / TOOLTIPS REMOVIDOS:
   A função de detalhes ao passar o mouse foi desativada porque os cards agora são interativos por clique.
   Mantém o comportamento de filtro dos cards sem exibir balões no hover. */
.card h3{font-size:12px;color:var(--p);letter-spacing:.4px;text-transform:uppercase;margin-bottom:9px}.card .value{font-size:24px;font-weight:800}.panel{background:white;border-radius:16px;padding:14px;border:1px solid var(--line);box-shadow:0 4px 14px rgba(15,23,42,.05);margin-bottom:14px}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.tab{background:#e2e8f0;color:#334155}.tab.active{background:var(--p2);color:#fff}.controls{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.search{flex:1;min-width:220px}.search input{width:100%}input,select,textarea,button{padding:10px 12px;border:1px solid #cbd5e1;border-radius:10px;font-size:14px}textarea{resize:vertical;min-height:70px}button{background:var(--p2);color:white;border:0;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:7px}button:hover{background:var(--p)}button:disabled{background:#cbd5e1!important;color:#64748b!important;cursor:not-allowed}.btn-secondary{background:#64748b}.btn-danger{background:#dc2626}.btn-ok{background:#16a34a}.btn-warn{background:#d97706}.btn-dark{background:#334155}.filters{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.filters select,.filters input{min-width:160px;background:white}.btn-toggle-finalizados{background:#e2e8f0;color:#334155;border:1px solid #cbd5e1;border-radius:10px;padding:10px 12px;font-weight:800}.btn-toggle-finalizados.active{background:#334155;color:#fff;box-shadow:0 0 0 2px rgba(51,65,85,.12)}.table-wrap{overflow:auto;background:white;border-radius:16px;border:1px solid var(--line);box-shadow:0 4px 16px rgba(15,23,42,.06)}table{width:100%;min-width:1500px;border-collapse:collapse}th,td{padding:12px 10px;border-bottom:1px solid #eef2f7;text-align:left;font-size:13px;vertical-align:middle}th{background:linear-gradient(135deg,var(--p2),#1565c0);color:white;position:sticky;top:0;z-index:1;white-space:nowrap}tr:hover{background:#f8fafc}.badge{display:inline-flex;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:800;white-space:nowrap}
/* OBS INTERNA v151 - GOVERNANÇA SALARIAL:
   Campos oficiais de solicitação ficam protegidos. Salário atual é fonte cadastral
   e não pode ser digitado em fluxos; alterações salariais oficiais só ocorrem
   pela aba Colaboradores com auditoria. */
.campo-protegido, input[readonly].campo-protegido{
  background:#f1f5f9!important;
  color:#475569!important;
  border-color:#cbd5e1!important;
  cursor:not-allowed!important;
}
.lock-note{display:block;margin-top:4px;color:#64748b;font-size:11px;font-weight:700}
.b-ok{background:var(--okbg);color:var(--ok)}.b-candidato-aprovado{background:#eafbf3!important;color:#2f855a!important;border:1px solid #b7e4c7!important}.b-warn{background:var(--warnbg);color:var(--warn)}.b-bad{background:var(--badbg);color:var(--bad)}.b-info{background:var(--infobg);color:var(--info)}.b-gray{background:#e5e7eb;color:#374151}.modal{display:none;position:fixed;inset:0;background:rgba(2,6,23,.62);z-index:200;align-items:center;justify-content:center;padding:16px}.modal-content{background:white;border-radius:18px;max-width:1120px;width:96%;max-height:92vh;overflow:auto;padding:22px;box-shadow:0 24px 60px rgba(0,0,0,.35)}.modal h2{color:var(--p);font-size:21px;margin-bottom:16px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.field label{display:block;font-size:12px;font-weight:800;color:#334155;margin-bottom:5px}.field input,.field select,.field textarea{width:100%}.span2{grid-column:span 2}.span3{grid-column:span 3}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.perm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;margin-top:10px}.perm{border:1px solid var(--line);border-radius:12px;padding:10px;background:#f8fafc}.perm label{display:flex;align-items:center;gap:8px;font-weight:700;font-size:13px}.perm input{width:auto}.empty{text-align:center;padding:42px;color:#94a3b8;font-style:italic}.audit{margin-top:12px;border-top:1px solid var(--line);padding-top:12px;max-height:170px;overflow:auto}.audit div{font-size:12px;color:#475569;padding:5px 0;border-bottom:1px dashed #e2e8f0}.impact{padding:12px;border-radius:12px;background:#f8fafc;border:1px solid var(--line);font-size:13px;line-height:1.55}.delta-pos{color:#dc2626;font-weight:400}.delta-normal{color:#111827;font-weight:400}/* OBS INTERNA v99 - PADRÃO DA COLUNA AÇÕES: decisões críticas ficam na linha superior; ações operacionais ficam na linha inferior. Mantém botões quadrados, com fundo leve, tamanho único e tooltip. */.acao{display:flex;flex-direction:column;gap:5px;align-items:flex-start;justify-content:center;min-width:118px}.acao-row{display:flex;gap:6px;flex-wrap:nowrap;align-items:center}.acao-row-decisao{padding-bottom:2px;border-bottom:1px dashed #e2e8f0}.acao-row-operacional{padding-top:1px}.action-btn{width:32px!important;height:32px!important;min-width:32px!important;padding:0!important;border:1px solid #cbd5e1!important;border-radius:9px!important;background:#f8fafc!important;color:#0f172a!important;font-size:16px!important;line-height:1!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;box-shadow:0 1px 2px rgba(15,23,42,.06);transition:.15s ease}.action-btn:hover{background:#e2e8f0!important;border-color:#94a3b8!important;transform:translateY(-1px)}.action-btn.btn-action-ok{background:#dcfce7!important;border-color:#86efac!important;color:#166534!important}.action-btn.btn-action-direct{background:#fef3c7!important;border-color:#f59e0b!important;color:#92400e!important}.action-btn.btn-action-danger{background:#fee2e2!important;border-color:#fecaca!important;color:#991b1b!important}.action-btn.btn-action-warn{background:#fef3c7!important;border-color:#fde68a!important;color:#854d0e!important}.action-btn.btn-action-dark{background:#e2e8f0!important;border-color:#cbd5e1!important;color:#334155!important}.action-btn.btn-action-reopen{background:#dbeafe!important;border-color:#bfdbfe!important;color:#1e40af!important}.footer{text-align:center;color:var(--mut);font-size:12px;margin:20px 0 6px}/* OBS INTERNA - DASHBOARD / ALERTA VISUAL DE SLA: somente o card "Solicitações em atraso" recebe a classe .atraso via JavaScript quando houver SLA vencido. */

/* OBS INTERNA v133 - DASHBOARD / ALERTA OPERACIONAL:
   Cards de captação com pendências reais piscam suavemente em vermelho.
   Aplicado somente quando o total do card for maior que zero, respeitando permissões e visibilidade. */
/* Prioridade específica para os alertas do dashboard sobre o tema corporativo.
   Pulsa somente a camada visual: não exige consulta, timer JS ou mudança de tamanho. */
#areaDashboard .card.atraso,#areaDashboard .card.card-alerta-operacional{position:relative;isolation:isolate;background:#ffe4e6!important;border-color:#dc2626!important;box-shadow:0 2px 8px rgba(185,28,28,.12)!important}
#areaDashboard .card.atraso::before,#areaDashboard .card.card-alerta-operacional::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:-1;background:#fecaca;box-shadow:0 0 0 3px rgba(220,38,38,.2);animation:pulsoPendenciaDashboard 2s ease-in-out infinite}
#areaDashboard .card.atraso h3,#areaDashboard .card.atraso .value,#areaDashboard .card.card-alerta-operacional h3,#areaDashboard .card.card-alerta-operacional .value{color:#991b1b!important}
#areaDashboard .card.atraso .small,#areaDashboard .card.card-alerta-operacional .small{color:#7f1d1d!important}
@keyframes pulsoPendenciaDashboard{0%,100%{opacity:.15}50%{opacity:.85}}
@media(prefers-reduced-motion:reduce){#areaDashboard .card.atraso::before,#areaDashboard .card.card-alerta-operacional::before{animation:none;opacity:.3}}
#desligamentoInformativo [hidden],#modalSolicitacao [data-desl-urgencia][hidden]{display:none!important}
/* OBS INTERNA v146 - DEVOLUÇÃO PARA AJUSTE / DESTAQUE SIMPLIFICADO:
   Mantém o alerta somente no status roxo e no contador discreto da aba Solicitações.
   Remove destaque visual na linha e na coluna Cargo/Colaborador para preservar limpeza da tabela. */
.b-ajuste{background:#ede9fe!important;color:#5b21b6!important;border:1px solid #c4b5fd!important}

/* OBS INTERNA v147 - PADRÃO VISUAL DE STATUS:
   Mantém todos os badges de status com mesma altura, fonte, peso e espaçamento.
   O destaque de Devolvido para Ajuste permanece apenas pela cor roxa e texto discreto. */
.badge,
.urgencia-badge,
.status-secundario{
  min-height:26px!important;
  padding:5px 10px!important;
  font-size:12px!important;
  font-weight:700!important;
  line-height:1!important;
  border-radius:999px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  white-space:nowrap!important;
  box-sizing:border-box!important;
}
.status-principal{
  min-height:26px!important;
  padding:5px 10px!important;
  font-size:12px!important;
  font-weight:700!important;
  line-height:1!important;
}
.b-ajuste{
  background:#ede9fe!important;
  color:#5b21b6!important;
  border:1px solid #c4b5fd!important;
  letter-spacing:0!important;
  text-transform:none!important;
}

.tab-contador-ajuste{display:inline-flex;align-items:center;justify-content:center;margin-left:6px;padding:2px 7px;border-radius:999px;background:#7c3aed;color:#fff;font-size:11px;font-weight:900;line-height:1}
.linha-atrasada{background:#fff1f2!important}.linha-atrasada:hover{background:#ffe4e6!important}.prio-critica{background:#fee2e2!important;border-left:5px solid #dc2626}.prio-alta{background:#fffbeb!important;border-left:5px solid #f59e0b}.prio-normal{background:#fff!important}.prio-critica:hover,.prio-alta:hover{filter:brightness(.99)}.urgencia-badge{display:inline-flex;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:900;white-space:nowrap}.urg-normal{background:#e5e7eb;color:#374151}.urg-alta{background:#fef3c7;color:#854d0e}.urg-critica{background:#dc2626;color:white}.sla-ok{color:#166534;font-weight:800}.sla-atrasado{color:#b91c1c;font-weight:900}.config-box{border:1px solid var(--line);border-radius:14px;padding:14px;background:#f8fafc;margin-bottom:14px}.rank-list{font-size:13px;line-height:1.6}.rank-list div{display:flex;justify-content:space-between;border-bottom:1px dashed #e2e8f0;padding:3px 0}.subtabs{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.subtab{background:#e2e8f0;color:#334155}.subtab.active{background:#334155;color:#fff}.mov-kpis{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:12px;margin:12px 0}.mov-kpi{background:#f8fafc;border:1px solid #cbd5e1;border-radius:14px;padding:12px}.mov-kpi span{display:block;font-size:12px;color:#64748b;margin-bottom:4px}.mov-kpi b{font-size:20px;color:#0f172a}.mov-filters{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin:12px 0}.mov-filters .field{min-width:170px}.mov-filters .field label{display:block;font-size:12px;font-weight:800;color:#334155;margin-bottom:5px}.detail-table{width:100%;min-width:0;border-collapse:collapse;margin:10px 0 16px;table-layout:fixed}.detail-table th{background:#f1f5f9!important;color:#0f172a!important;position:static;width:22%;min-width:150px;max-width:220px;white-space:normal}.detail-table td{width:78%;word-break:break-word;overflow-wrap:anywhere}.detail-table th,.detail-table td{border:1px solid #cbd5e1;padding:9px 10px;vertical-align:top}.status-final-full{width:100%;box-sizing:border-box;margin:10px 0 18px;padding:12px 14px;border-radius:10px;font-size:16px}.executive-summary .status-row th{display:none}.executive-summary .status-row td{width:100%;padding:0;border:none}.executive-summary .status-final{margin:0;padding:8px 12px;border-radius:8px;font-size:14px}.section-title{margin:18px 0 8px;color:#051C3D;border-left:4px solid #051C3D;padding-left:8px}.audit-list{background:#f8fafc;border:1px solid #cbd5e1;border-radius:10px;padding:10px;max-height:260px;overflow:auto}.audit-item{border-bottom:1px solid #e2e8f0;padding:8px 0}.audit-item:last-child{border-bottom:0}.config-grid{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:12px;margin-top:10px}.print-title{display:none}@media print{body{background:white!important;padding:0}.cards,.panel,.table-wrap,.footer,.modal:not(.printable){display:none!important}.modal.printable{display:block!important;position:static!important;background:white!important;padding:0!important}.modal.printable .modal-content{box-shadow:none!important;max-height:none!important;width:100%!important;max-width:none!important;border-radius:0!important}.modal.printable .modal-actions{display:none!important}.print-title{display:block;text-align:center;margin-bottom:15px}.doc-header{display:flex!important}.doc-logo{height:70px;max-width:210px;object-fit:contain;filter:none}.detail-table th{background:#e5e7eb!important;color:#111827!important;width:22%!important}.detail-table td{width:78%!important}.status-final-full{width:100%!important;box-sizing:border-box!important}.executive-summary .status-row th{display:none!important}.executive-summary .status-row td{width:100%!important;border:none!important;padding:0!important}}@media(max-width:820px){body{padding:10px}.grid{grid-template-columns:1fr}.span2,.span3{grid-column:span 1}}

.timeline-pro{position:relative;margin:12px 0;padding-left:26px}
.timeline-pro:before{content:'';position:absolute;left:10px;top:6px;bottom:6px;width:3px;background:#dbeafe;border-radius:99px}
.timeline-pro-item{position:relative;background:#fff;border:1px solid #dbeafe;border-radius:14px;padding:12px;margin-bottom:10px;box-shadow:0 4px 12px rgba(15,23,42,.04)}
.timeline-pro-item:before{content:'';position:absolute;left:-24px;top:16px;width:14px;height:14px;border-radius:50%;background:#051C3D;border:3px solid #fff;box-shadow:0 0 0 2px #bfdbfe}
.colab-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:12px 0}
.colab-kpi{background:#f8fafc;border:1px solid #cbd5e1;border-radius:12px;padding:10px}
.colab-kpi span{display:block;font-size:12px;color:#64748b}.colab-kpi b{font-size:18px;color:#0f172a}
.evo-badge{display:inline-flex;padding:6px 10px;border-radius:999px;font-weight:900;font-size:12px}
.evo-alta{background:#dcfce7;color:#166534}.evo-media{background:#fef9c3;color:#854d0e}.evo-baixa{background:#fee2e2;color:#991b1b}
.sal-row{display:flex;justify-content:space-between;gap:12px;border:1px solid #e2e8f0;border-radius:10px;padding:9px;margin:7px 0;background:#fff}


/* OBS INTERNA - ABA VAGAS / AÇÕES:
   Força os botões de ação da aba Vagas a ficarem lado a lado.
   Não altera a coluna Ações da aba Solicitações, que permanece em duas linhas. */
.acoes-vagas{
  display:flex!important;
  flex-direction:row!important;
  flex-wrap:nowrap!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:6px!important;
  white-space:nowrap!important;
}
.acoes-vagas .acao-btn,
.acoes-vagas button{
  width:34px!important;
  height:34px!important;
  min-width:34px!important;
  max-width:34px!important;
  padding:0!important;
  margin:0!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  flex:0 0 34px!important;
  border-radius:9px!important;
  line-height:1!important;
}
.acoes-vagas br{display:none!important;}


/* OBS INTERNA v102-ajuste - STATUS / EM CONTRATAÇÃO:
   Ajuste exclusivamente visual na coluna Status da lista principal.
   O status principal fica centralizado e o status secundário "Em Contratação"
   aparece menor e centralizado abaixo, sem alterar regras do workflow. */
.status-cell{
  text-align:center!important;
  vertical-align:middle!important;
}
.status-principal{
  display:inline-flex!important;
  justify-content:center!important;
  align-items:center!important;
  margin:0 auto!important;
}
.status-secundario{
  display:block!important;
  margin:4px auto 0!important;
  text-align:center!important;
  font-size:11px!important;
  line-height:1.15!important;
  width:max-content!important;
  max-width:100%!important;
}
button.status-secundario{
  padding:4px 8px!important;
  min-height:0!important;
  gap:0!important;
}


/* OBS INTERNA v104 - DASHBOARD INTERATIVO:
   Cards clicáveis filtram a lista principal sem alterar regras, dados ou permissões.
   Clique novamente no card ativo para limpar o filtro e voltar à visão normal. */
.card.card-clickable{cursor:pointer;transition:.15s ease}
.card.card-clickable:hover{transform:translateY(-1px);border-color:#bfdbfe;box-shadow:0 8px 22px rgba(15,23,42,.10)}
.card.card-filtro-ativo{border-color:var(--p2)!important;background:#eff6ff!important;box-shadow:0 0 0 2px rgba(25,118,210,.12),0 8px 24px rgba(25,118,210,.16)!important}
.card.card-filtro-inativo{opacity:.58}
.card.card-filtro-ativo h3,.card.card-filtro-ativo .value{color:var(--p)!important}
.filtro-card-aviso{display:inline-flex;align-items:center;gap:7px;margin-top:10px;padding:7px 10px;border-radius:999px;background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe;font-size:12px;font-weight:800}


/* OBS INTERNA v106 - PERFIS / GRUPOS DE PERMISSÕES:
   Reorganiza visualmente as permissões do perfil por grupos, com botão "Selecionar todos" por grupo.
   Mantém os mesmos IDs dos checkboxes para preservar as regras existentes de salvamento, edição e herança. */
.perfil-permissoes-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin-top:12px}
.perfil-grupo{border:1px solid var(--line);border-radius:14px;background:#f8fafc;padding:12px}
.perfil-grupo-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px;border-bottom:1px solid #e2e8f0;padding-bottom:8px}
.perfil-grupo-head h4{font-size:13px;color:#051C3D;margin:0;line-height:1.25}
.perfil-grupo-head span{display:block;font-size:11px;color:#64748b;font-weight:400;margin-top:2px;line-height:1.3}
.perfil-grupo-head button{background:#e2e8f0!important;color:#334155!important;border:1px solid #cbd5e1!important;border-radius:8px!important;padding:6px 8px!important;font-size:11px!important;white-space:nowrap}
.perfil-grupo-head button:hover{background:#cbd5e1!important;color:#0f172a!important}
.perfil-grupo .perm{background:#fff;margin-top:7px;padding:9px 10px}
.perfil-grupo .perm label{font-weight:700}
/* OBS INTERNA v113 - PERFIS / LAYOUT EM COLUNAS:
   Ajuste visual apenas no modal de Perfis (aba Usuários e Perfis).
   Mantém os mesmos checkboxes e IDs; apenas organiza os grupos para que Gestão fique logo abaixo de Ações Críticas. */
.perfil-permissoes-grid.perfil-layout-colunas{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;align-items:start}
.perfil-coluna{display:flex;flex-direction:column;gap:12px;min-width:0}


/* OBS INTERNA v107 - FLUXO CONFIGURÁVEL: estilos apenas para a área de configuração do fluxo de aprovação. */
.fluxo-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.fluxo-actions button{padding:7px 9px;border-radius:8px;font-size:12px}
.fluxo-note{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:10px;margin-top:10px;color:#64748b;font-size:12px;line-height:1.45}


/* OBS INTERNA v108 - PADRONIZAÇÃO VISUAL DAS ABAS:
   Ajuste somente de layout/densidade visual para as abas secundárias ficarem
   mais próximas da lista principal de Solicitações. Não altera regras,
   permissões, fluxo, SLA, dados ou funções do sistema. */
#tabelaAprovacoes,
#tabelaVagas,
#tabelaEquipes,
#tabelaColaboradores,
#tabelaUsuarios,
#tabelaPerfis,
#tabelaRegionais,
#tabelaAuditoria,
#tabelaMediaSLA,
#tabelaConfiguracoes,
#tabelaFluxoAprovacao{
  background:#fff;
  border-radius:16px;
  border:1px solid var(--line);
  box-shadow:0 4px 16px rgba(15,23,42,.06);
}
#tabelaAprovacoes table,
#tabelaVagas table,
#tabelaEquipes table,
#tabelaColaboradores table,
#tabelaUsuarios table,
#tabelaPerfis table,
#tabelaRegionais table,
#tabelaAuditoria table,
#tabelaMediaSLA table,
#tabelaConfiguracoes table,
#tabelaFluxoAprovacao table{
  width:100%;
  border-collapse:collapse;
}
#tabelaConfiguracoes table,
#tabelaFluxoAprovacao table,
#tabelaRegionais table,
#tabelaAuditoria table,
#tabelaMediaSLA table{
  min-width:1100px!important;
}
#tabelaEquipes table,
#tabelaUsuarios table,
#tabelaPerfis table{
  min-width:1250px!important;
}
#tabelaVagas table,
#tabelaAprovacoes table{
  min-width:1350px!important;
}
#tabelaColaboradores table{
  min-width:1500px!important;
}
#tabelaAprovacoes th,#tabelaAprovacoes td,
#tabelaVagas th,#tabelaVagas td,
#tabelaEquipes th,#tabelaEquipes td,
#tabelaColaboradores th,#tabelaColaboradores td,
#tabelaUsuarios th,#tabelaUsuarios td,
#tabelaPerfis th,#tabelaPerfis td,
#tabelaRegionais th,#tabelaRegionais td,
#tabelaAuditoria th,#tabelaAuditoria td,
#tabelaMediaSLA th,#tabelaMediaSLA td,
#tabelaConfiguracoes th,#tabelaConfiguracoes td,
#tabelaFluxoAprovacao th,#tabelaFluxoAprovacao td{
  padding:11px 10px;
  font-size:13px;
  line-height:1.35;
  vertical-align:middle;
}
#tabelaAprovacoes td,
#tabelaVagas td,
#tabelaEquipes td,
#tabelaColaboradores td,
#tabelaUsuarios td,
#tabelaPerfis td,
#tabelaRegionais td,
#tabelaAuditoria td,
#tabelaMediaSLA td,
#tabelaConfiguracoes td,
#tabelaFluxoAprovacao td{
  color:#1f2937;
}
#areaConfiguracoes .config-box{
  padding:13px 14px;
  margin-bottom:14px;
}
#areaConfiguracoes .config-box h3{
  font-size:14px;
  color:var(--p);
  margin-bottom:6px;
}
#areaConfiguracoes .config-grid{
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:10px;
}
#areaConfiguracoes .field input,
#areaConfiguracoes .field select{
  min-height:38px;
}
#areaUsuarios .controls,
#areaColaboradores .controls,
#areaEquipes .controls,
#areaVagas .controls,
#areaAuditoria .controls,
#areaRegionais .controls,
#areaConfiguracoes .controls{
  align-items:center;
}
#areaUsuarios .small,
#areaColaboradores .small,
#areaEquipes .small,
#areaVagas .small,
#areaAuditoria .small,
#areaRegionais .small,
#areaConfiguracoes .small{
  line-height:1.35;
}
/* OBS INTERNA v108 - FLUXO CONFIGURÁVEL: mantém ações compactas na mesma densidade da tabela principal. */
#tabelaFluxoAprovacao .fluxo-actions{
  gap:5px;
  flex-wrap:nowrap;
}
#tabelaFluxoAprovacao .fluxo-actions button{
  padding:6px 8px!important;
  min-height:30px;
  font-size:12px!important;
}
#tabelaFluxoAprovacao .badge{
  justify-content:center;
}



/* OBS INTERNA v110 - DENSIDADE DAS ABAS VAGAS / COLABORADORES / USUÁRIOS:
   Ajuste exclusivamente visual para reduzir linhas altas e excesso de espaçamento
   nas tabelas auxiliares, usando a lista principal como referência. Não altera
   regras, eventos, permissões, fluxo, dados ou estrutura interna. */
#tabelaVagas th,#tabelaVagas td,
#tabelaColaboradores th,#tabelaColaboradores td,
#tabelaUsuarios th,#tabelaUsuarios td,
#tabelaPerfis th,#tabelaPerfis td{
  padding:7px 8px!important;
  line-height:1.22!important;
  vertical-align:middle!important;
}
#tabelaVagas tr,
#tabelaColaboradores tr,
#tabelaUsuarios tr,
#tabelaPerfis tr{
  height:auto!important;
  min-height:0!important;
}
#tabelaVagas .badge,
#tabelaColaboradores .badge,
#tabelaUsuarios .badge,
#tabelaPerfis .badge,
#tabelaVagas .urgencia-badge,
#tabelaColaboradores .urgencia-badge{
  padding:4px 8px!important;
  font-size:11px!important;
  line-height:1.15!important;
}
#tabelaVagas .acoes-vagas,
#tabelaColaboradores .acao,
#tabelaUsuarios .acao,
#tabelaPerfis .acao{
  min-height:0!important;
  gap:4px!important;
}
#tabelaVagas .action-btn,
#tabelaColaboradores .action-btn,
#tabelaUsuarios .action-btn,
#tabelaPerfis .action-btn,
#tabelaVagas button,
#tabelaColaboradores button,
#tabelaUsuarios button,
#tabelaPerfis button{
  min-height:30px!important;
}
#tabelaVagas td p,
#tabelaColaboradores td p,
#tabelaUsuarios td p,
#tabelaPerfis td p{
  margin:0!important;
  line-height:1.22!important;
}


/* OBS INTERNA v111 - AÇÕES PADRONIZADAS EM TODAS AS ABAS:
   Mantém o padrão visual dos botões quadrados da tela principal e força ações das abas auxiliares lado a lado.
   Não altera regras, permissões ou funções chamadas pelos botões. */
#tabelaVagas .acao,
#tabelaVagas .acoes-vagas,
#tabelaEquipes .acao,
#tabelaColaboradores .acao,
#tabelaUsuarios .acao,
#tabelaPerfis .acao,
#tabelaRegionais .acao,
#tabelaFluxoAprovacao .acao,
#tabelaFluxoAprovacao .fluxo-actions{
  display:flex!important;
  flex-direction:row!important;
  flex-wrap:nowrap!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:6px!important;
  min-width:auto!important;
  min-height:0!important;
  white-space:nowrap!important;
}
#tabelaVagas .acao-row,
#tabelaEquipes .acao-row,
#tabelaColaboradores .acao-row,
#tabelaUsuarios .acao-row,
#tabelaPerfis .acao-row,
#tabelaRegionais .acao-row,
#tabelaFluxoAprovacao .acao-row{
  display:flex!important;
  flex-direction:row!important;
  flex-wrap:nowrap!important;
  gap:6px!important;
  border-bottom:0!important;
  padding:0!important;
}
#tabelaVagas .action-btn,
#tabelaEquipes .action-btn,
#tabelaColaboradores .action-btn,
#tabelaUsuarios .action-btn,
#tabelaPerfis .action-btn,
#tabelaRegionais .action-btn,
#tabelaFluxoAprovacao .action-btn,
#tabelaFluxoAprovacao .fluxo-actions .action-btn{
  width:32px!important;
  height:32px!important;
  min-width:32px!important;
  max-width:32px!important;
  min-height:32px!important;
  max-height:32px!important;
  padding:0!important;
  margin:0!important;
  border-radius:9px!important;
  font-size:16px!important;
  line-height:1!important;
}
#tabelaVagas td:last-child,
#tabelaEquipes td:last-child,
#tabelaColaboradores td:last-child,
#tabelaUsuarios td:last-child,
#tabelaPerfis td:last-child,
#tabelaRegionais td:last-child,
#tabelaFluxoAprovacao td:last-child{
  white-space:nowrap!important;
  width:1%!important;
}



/* OBS INTERNA v121 - VAGAS / PIPELINE DE CAPTAÇÃO:
   Cores suaves para status secundários de captação, sem competir com status principal, urgência ou SLA. */
.status-secundario.status-captacao-contratacao{background:#fef3c7!important;color:#854d0e!important;border:1px solid #fde68a!important}
.status-secundario.status-captacao-curriculo{background:#f1e8ff!important;color:#6f42c1!important;border:1px solid #dcc8ff!important}
.status-secundario.status-captacao-entrevista{background:#e0f7fa!important;color:#0e7490!important;border:1px solid #a5f3fc!important}
.status-secundario.status-captacao-aceito{background:#dcfce7!important;color:#166534!important;border:1px solid #86efac!important}
.status-secundario.status-captacao-rejeitado{background:#fee2e2!important;color:#991b1b!important;border:1px solid #fecaca!important}
.status-secundario.status-captacao-contratar{background:#fef3c7!important;color:#854d0e!important;border:1px solid #fde68a!important}
.acomp-captacao{border:1px solid #cbd5e1;border-radius:12px;background:#f8fafc;padding:10px;margin:10px 0}
.acomp-captacao-item{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:10px;margin:8px 0;font-size:13px;line-height:1.45}
.acomp-captacao-item b{color:#051C3D}
/* OBS INTERNA v150 - VAGAS / CURRÍCULO REJEITADO:
   Selo visual discreto para alertar a captação de que o último currículo foi rejeitado
   e a vaga está liberada para novo envio. Não cria novo card e não altera permissões. */
.alerta-curriculo-rejeitado{display:inline-flex;align-items:center;gap:5px;margin-top:6px;padding:5px 8px;border-radius:999px;background:#fee2e2;color:#991b1b;border:1px solid #fecaca;font-size:11px;font-weight:900;white-space:nowrap}
.acomp-data{display:block;color:#64748b;font-size:11px;font-weight:700;margin-bottom:4px}
.acoes-captacao{display:flex;gap:6px;flex-wrap:nowrap;align-items:center}

/* OBS INTERNA v115 - CONFIGURAÇÕES / OUTRAS REGRAS:
   Ajuste exclusivamente visual para padronizar o bloco "Outras regras do sistema".
   Não altera IDs, funções, validações, regras ou armazenamento. */
.config-regras-box{margin-top:14px!important}
.config-regras-box h3{margin-bottom:6px;color:#051C3D}
.config-regras-box .small{display:block;margin-bottom:12px;max-width:980px}
.regras-grid{display:grid!important;grid-template-columns:repeat(3,minmax(220px,1fr))!important;gap:12px!important;align-items:end!important;margin-top:0!important}
.regras-grid .field{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:10px;min-height:76px;display:flex;flex-direction:column;justify-content:flex-end}
.regras-grid .field label{min-height:30px;display:flex;align-items:flex-end;line-height:1.25;margin-bottom:6px}
.regras-grid .field input{height:36px;padding:8px 10px;background:#fff}
.regras-actions{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:14px;padding-top:12px;border-top:1px solid #e2e8f0}
@media(max-width:1000px){.regras-grid{grid-template-columns:repeat(2,minmax(220px,1fr))!important}}
@media(max-width:720px){.regras-grid{grid-template-columns:1fr!important}.regras-actions{justify-content:stretch}.regras-actions button{width:100%;justify-content:center}}


/* OBS INTERNA v116/v117 - CONFIGURAÇÕES / SEGURANÇA E INTEGRIDADE:
   Blocos de backup, restauração, controle de versão e validador de integridade.
   Ferramentas de diagnóstico e governança local; não alteram regras do workflow. */
.sistema-admin-grid{display:grid;grid-template-columns:repeat(3,minmax(240px,1fr));gap:12px;margin-top:12px}
.sistema-admin-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:10px;min-height:178px}
.sistema-admin-card h4{color:#051C3D;font-size:14px;margin:0}
.sistema-admin-card p{color:#64748b;font-size:12px;line-height:1.45;margin:0}
.sistema-admin-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto}

/* OBS INTERNA v342 - CORREÇÃO DEFINITIVA RESET DE SENHA:
   Esta versão usa endpoint dedicado para reset/troca de senha, gravando diretamente o usuário no estado atual do PostgreSQL/Render.
   O reset não depende mais do merge geral do /api/sync, evitando conflito de cache/localStorage antigo.

   OBS INTERNA v340 - OBSERVAÇÃO SALARIAL INFORMATIVA:
   Campo livre posicionado após salário proposto. Não altera budget, headcount,
   salário oficial, número de vaga, aprovações ou cálculos; apenas destaca contexto salarial. */
.obs-salarial-field textarea{border-color:#f59e0b;background:#fff7ed}
.obs-salarial-field .lock-note{color:#92400e}
.obs-salarial-destaque{border:1px solid #f59e0b;background:#fffbeb;border-radius:12px;padding:10px 12px;color:#78350f;font-size:13px;line-height:1.45}
.obs-salarial-destaque b{color:#92400e}
.obs-salarial-contratacao{border:2px solid #f59e0b;background:#fffbeb;border-radius:14px;padding:12px 14px;color:#78350f;font-size:13px;line-height:1.45}
.obs-salarial-contratacao b{color:#92400e}
.obs-salarial-mini{display:block;margin-top:6px;border-left:4px solid #f59e0b;background:#fffbeb;border-radius:8px;padding:6px 8px;color:#78350f;font-size:12px;line-height:1.35}
.versao-box{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:12px;padding:10px;font-size:12px;line-height:1.45;color:#334155}
.integridade-resultado{margin-top:12px;border:1px solid #e2e8f0;border-radius:14px;background:#fff;overflow:hidden}
.integridade-head{display:flex;justify-content:space-between;gap:10px;align-items:center;background:#f8fafc;border-bottom:1px solid #e2e8f0;padding:10px 12px;font-size:12px;color:#334155}
.integridade-lista{padding:10px 12px;max-height:260px;overflow:auto}
.integridade-item{display:grid;grid-template-columns:110px 1fr;gap:10px;padding:8px 0;border-bottom:1px dashed #e2e8f0;font-size:12px;line-height:1.35}
.integridade-item:last-child{border-bottom:0}
.integridade-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:4px 8px;font-weight:900;font-size:11px;white-space:nowrap}
.integridade-critico{background:#fee2e2;color:#991b1b}
.integridade-atencao{background:#fef3c7;color:#854d0e}
.integridade-info{background:#dbeafe;color:#1e40af}
@media(max-width:1100px){.sistema-admin-grid{grid-template-columns:1fr}}


/* OBS INTERNA v155 - PERFIS / LAYOUT ORGANIZADO:
   Reorganiza visualmente o modal de criação/edição de perfis em blocos lógicos:
   Operação, Gestão e Administração do Sistema. Mantém os mesmos IDs, grupos
   data-perm-group e funções para não alterar regras de permissão. */
.perfil-modal-intro{margin:8px 0 14px;color:#64748b;font-size:12px;line-height:1.45}
.perfil-secao{margin-top:16px}
.perfil-secao-titulo{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 10px;padding:8px 10px;border-left:4px solid #051C3D;background:#eef6ff;border-radius:10px;color:#051C3D;font-size:13px;font-weight:900;text-transform:uppercase;letter-spacing:.3px}
.perfil-secao-titulo span{font-size:11px;font-weight:500;text-transform:none;letter-spacing:0;color:#64748b}
.perfil-blocos-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:stretch}
.perfil-blocos-grid.grid-gestao{grid-template-columns:repeat(3,minmax(0,1fr))}
.perfil-blocos-grid.grid-admin{grid-template-columns:1fr}
.perfil-grupo.perfil-grupo-card{height:100%;display:flex;flex-direction:column;margin:0;background:#f8fafc}
.perfil-grupo.perfil-grupo-card .perfil-grupo-head{align-items:flex-start}
.perfil-grupo.perfil-grupo-card .perm{margin-top:7px}
.perfil-grupo.perfil-grupo-admin{background:#fdfcff;border-color:#ddd6fe}
.perfil-grupo.perfil-grupo-admin .perfil-grupo-head{border-bottom-color:#ddd6fe}
.perfil-grupo.perfil-grupo-admin .perfil-grupo-head h4{color:#5b21b6}
.perfil-admin-perms{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:12px;margin-top:2px;align-items:stretch}
.perfil-admin-col{background:#fff;border:1px solid #e9d5ff;border-radius:12px;padding:10px;min-height:112px}
.perfil-admin-col h5{margin:0 0 8px;color:#5b21b6;font-size:12px;text-transform:uppercase;letter-spacing:.25px}
.perfil-admin-col .perm{margin-top:7px!important;background:#fdfcff}
@media(max-width:1080px){.perfil-blocos-grid,.perfil-blocos-grid.grid-gestao{grid-template-columns:repeat(2,minmax(0,1fr))}.perfil-admin-perms{grid-template-columns:repeat(2,minmax(180px,1fr))}}
@media(max-width:720px){.perfil-blocos-grid,.perfil-blocos-grid.grid-gestao{grid-template-columns:1fr}.perfil-admin-perms{grid-template-columns:1fr}.perfil-secao-titulo{display:block}.perfil-secao-titulo span{display:block;margin-top:3px}}


/* OBS INTERNA v157 - LOGIN / SENHAS:
   Mantém login e senha em coluna, sem placeholders operacionais, e estiliza a tela de troca obrigatória.
   Regra: senha temporária administrativa exige troca no primeiro acesso/redefinição. */
.login-card label{display:block!important;margin-top:12px;margin-bottom:5px;font-size:12px;font-weight:800;color:#334155}
.login-card input{display:block!important;width:100%!important;margin:0 0 8px!important;background:#fff}
.login-card button{width:100%;justify-content:center;margin-top:10px}
.btn-forgot-password{background:transparent!important;color:#051C3D!important;border:0!important;box-shadow:none!important;font-size:12px!important;font-weight:800!important;padding:6px 0!important;margin-top:6px!important;text-decoration:underline;justify-content:center;width:100%}
.btn-forgot-password:hover{background:transparent!important;color:#1F50CD!important}

.password-eye-wrap{position:relative;display:block;width:100%}
.password-eye-wrap input{width:100%;padding-right:42px!important}
.password-eye-toggle{position:absolute;right:12px;top:50%;transform:translateY(-50%);cursor:pointer;user-select:none;font-size:16px;line-height:1;color:#64748b;background:transparent;border:0;padding:2px;border-radius:6px}
.password-eye-toggle:hover{color:#051C3D;background:#eef6ff}
.password-eye-toggle:focus{outline:2px solid #93c5fd;outline-offset:2px}
.password-rules-box{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:10px;margin-top:10px;color:#64748b;font-size:12px;line-height:1.45}
.password-error{color:#b91c1c;font-size:12px;font-weight:800;margin-top:8px;line-height:1.35}


/* OBS INTERNA v158 - USUÁRIOS / SENHA:
   Remove digitação manual de senha pelo administrador. Reset é feito por botão auditável com senha temporária. */
.user-password-note{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:10px;font-size:12px;color:#475569;line-height:1.45}
.user-password-note b{color:#051C3D}


/* OBS INTERNA v180 - EQUIPES / REGRAS OPCIONAIS DE BUDGET E HEADCOUNT:
   Permite desligar individualmente a trava de budget e/ou headcount por equipe.
   Campos desabilitados ficam visualmente protegidos e a validação ignora a regra correspondente. */
.regra-toggle-box{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:10px}
.regra-toggle-box label{font-size:12px;font-weight:800;color:#334155;margin-bottom:6px;display:block}
.regra-toggle-box .small{display:block;margin-top:6px}
.campo-sem-regra{background:#f1f5f9!important;color:#64748b!important;border-color:#cbd5e1!important;cursor:not-allowed!important}
.limite-sem-regra{display:inline-flex;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:800;background:#e5e7eb;color:#374151}

/* OBS INTERNA v180 - FILTROS DE AUDITORIA E BUSCA EM COLABORADORES:
   Filtros client-side, preservando dados em localStorage e sem alterar estrutura de registros. */
.audit-filters-box{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-top:12px;padding:10px;border:1px solid #e2e8f0;border-radius:14px;background:#f8fafc}
.audit-filters-box .field{min-width:170px}
.audit-filters-box .field label{display:block;font-size:12px;font-weight:800;color:#334155;margin-bottom:5px}
.colab-search-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:10px}
.colab-search-row .search{flex:1;min-width:260px}

/* OBS INTERNA v171 - CENTROS DE CUSTO / AÇÕES LATERAIS:
   Mantém os botões Editar, Ativar/Inativar e Excluir lado a lado para reduzir altura e espaço ocupado na tabela.
   Ajuste exclusivamente visual, sem alterar regras de vínculo, inativação ou exclusão. */
#tabelaCentrosCusto .acao{
  display:flex!important;
  flex-direction:row!important;
  flex-wrap:nowrap!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:6px!important;
  min-width:auto!important;
  white-space:nowrap!important;
}
#tabelaCentrosCusto .action-btn{
  width:32px!important;
  height:32px!important;
  min-width:32px!important;
  max-width:32px!important;
  min-height:32px!important;
  max-height:32px!important;
  padding:0!important;
  margin:0!important;
}
#tabelaCentrosCusto td:last-child{
  width:1%!important;
  white-space:nowrap!important;
}



/* OBS INTERNA v183 - AUDITORIA / PADRÃO EXECUTIVO:
   Cada ação recebe badge colorido e detalhe estruturado.
   A função registrarAuditoriaPadronizada() deve ser usada para novos eventos,
   preservando sempre que possível: o que aconteceu, como era antes e como ficou depois. */
.audit-action-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:5px 10px;font-size:11px;font-weight:900;line-height:1;border:1px solid transparent;white-space:nowrap}
.audit-criacao{background:#dbeafe;color:#1e40af;border-color:#bfdbfe}
.audit-edicao{background:#fef3c7;color:#854d0e;border-color:#fde68a}
.audit-aprovacao{background:#dcfce7;color:#166534;border-color:#86efac}
.audit-reprovacao{background:#fee2e2;color:#991b1b;border-color:#fecaca}
.audit-devolucao{background:#ede9fe;color:#5b21b6;border-color:#c4b5fd}
.audit-exclusao{background:#7f1d1d;color:#fff;border-color:#991b1b}
.audit-urgencia{background:#ffedd5;color:#9a3412;border-color:#fed7aa}
.audit-sla{background:#ccfbf1;color:#115e59;border-color:#99f6e4}
.audit-budget{background:#fef9c3;color:#713f12;border-color:#fde68a}
.audit-usuario{background:#e0f2fe;color:#075985;border-color:#bae6fd}
.audit-sistema{background:#e2e8f0;color:#334155;border-color:#cbd5e1}
.audit-importacao{background:#cffafe;color:#155e75;border-color:#a5f3fc}
.audit-captacao{background:#f3e8ff;color:#6b21a8;border-color:#d8b4fe}
/* OBS INTERNA v232 - AUDITORIA / EXCEÇÃO CRÍTICA:
   Destaca retornos manuais de titular afastado quando ainda existe provisório ativo.
   A regra não bloqueia a exceção, mas força justificativa e alerta para administrador. */
.audit-excecao{background:#fee2e2;color:#991b1b;border-color:#ef4444}
.audit-row-excecao td{background:#fff5f5!important}
.audit-row-excecao td:first-child{border-left:5px solid #dc2626!important}
.audit-row-excecao:hover td{background:#fee2e2!important}
.audit-detail{font-size:12px;line-height:1.45;color:#334155;white-space:normal;min-width:360px}
.audit-detail-line{margin:2px 0}
.audit-detail-line b{color:#0f172a}
.audit-detail-before{color:#854d0e}
.audit-detail-after{color:#166534}
#tabelaAuditoria table{min-width:1120px!important}
#tabelaAuditoria td:nth-child(4){min-width:420px}


/* OBS INTERNA v185 - VAGAS PROVISÓRIAS / AFASTAMENTOS TEMPORÁRIOS:
   Destaques visuais discretos para status que liberam budget temporariamente e para vínculos de vaga provisória. */
.b-afast-temp{background:#e0f2fe!important;color:#075985!important;border:1px solid #bae6fd!important}
.provisorio-box{background:#f8fafc;border:1px dashed #94a3b8;border-radius:12px;padding:10px;margin-top:8px;font-size:12px;color:#334155;line-height:1.45}
.vaga-provisoria-label{display:inline-flex;align-items:center;gap:5px;margin-top:4px;padding:4px 8px;border-radius:999px;background:#e0f2fe;color:#075985;border:1px solid #bae6fd;font-size:11px;font-weight:900}
/* OBS INTERNA v211 - COLABORADORES PROVISÓRIOS / LISTAGEM:
   A relação provisória não aparece mais na coluna Status para não poluir o status real do colaborador.
   O vínculo permanece no detalhe do colaborador/vaga e a linha recebe destaque azul claro. */
/* OBS INTERNA v214 - COLABORADORES / VAGA PROVISÓRIA FIXA:
   O destaque visual deixa de depender do status do colaborador e passa a ser vinculado
   exclusivamente à vaga provisória (.1). Laranja claro evita conflito visual com
   Licença Maternidade/Afastado INSS, que utilizam azul informativo. */
.linha-colaborador-provisorio{background:#fff7ed!important}
.linha-colaborador-provisorio:hover{background:#ffedd5!important}
.linha-colaborador-provisorio td:first-child{border-left:5px solid #fb923c!important}

/* OBS INTERNA v192 - VAGA PROVISÓRIA / BUSCA DIGITÁVEL DO TITULAR:
   O titular provisório passa a ser filtrado por Regional/Matriz e Equipe antes da busca por nome, CPF ou número da vaga.
   O input usa datalist para permitir digitação com sugestão, mas o salvamento valida o ID real do colaborador. */
.provisorio-busca-wrap{display:grid;grid-template-columns:1fr;gap:6px}
.provisorio-busca-wrap input{width:100%}
.provisorio-help{display:block;margin-top:4px;color:#64748b;font-size:11px;font-weight:700;line-height:1.35}
/* OBS INTERNA v228 - VAGA PROVISÓRIA / SELETOR PRÓPRIO COM ROLAGEM:
   Substitui o datalist nativo por dropdown controlado pelo sistema.
   Objetivo: permitir trocar o titular sem apagar o campo e mostrar rolagem quando houver muitos colaboradores.
   Mantém o mesmo hidden sProvisorioColaborador para preservar validações e banco. */
.provisorio-dropdown{
  display:none;
  position:relative;
  z-index:260;
  width:100%;
  max-height:240px;
  overflow-y:auto;
  background:#fff;
  border:1px solid #cbd5e1;
  border-radius:12px;
  box-shadow:0 12px 28px rgba(15,23,42,.14);
  margin-top:4px;
}
.provisorio-dropdown-item{
  padding:9px 11px;
  border-bottom:1px solid #eef2f7;
  cursor:pointer;
  font-size:13px;
  line-height:1.35;
  color:#0f172a;
}
.provisorio-dropdown-item:last-child{border-bottom:0}
.provisorio-dropdown-item:hover,.provisorio-dropdown-item.active{background:#eff6ff;color:#051C3D}
.provisorio-dropdown-item b{color:#051C3D}
.provisorio-dropdown-empty{
  padding:10px 11px;
  color:#64748b;
  font-size:12px;
  font-style:italic;
}



/* OBS INTERNA v190 - NOVA SOLICITAÇÃO / FLUXO GUIADO VISÍVEL:
   A tela permanece inteira visível para orientação operacional, mas os campos são bloqueados em sequência:
   1) Tipo de Solicitação; 2) Natureza da Vaga quando aplicável; 3) dados restantes conforme a regra.
   A proteção é visual e operacional; o salvamento também valida os passos obrigatórios. */
.solicitacao-step-note{grid-column:span 3;background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af;border-radius:12px;padding:10px 12px;font-size:12px;font-weight:800;line-height:1.4}
.solicitacao-step-hidden{display:block!important}
.solicitacao-step-locked{opacity:.62;filter:grayscale(.15)}
.solicitacao-step-locked input,.solicitacao-step-locked select,.solicitacao-step-locked textarea{background:#f1f5f9!important;color:#64748b!important;border-color:#cbd5e1!important;cursor:not-allowed!important}
.solicitacao-step-locked label:after{content:'  🔒';font-size:11px;color:#94a3b8;font-weight:400}
@media(max-width:820px){.solicitacao-step-note{grid-column:span 1}}

/* v2.0.89 - orientação do formulário sempre entre o título e os campos. */
#modalSolicitacao>.modal-content>.solicitacao-step-note{
  display:block;
  width:100%;
  height:auto;
  min-height:0;
  margin:0 0 14px;
  overflow:visible;
}
#modalSolicitacao .grid{align-items:start;grid-auto-flow:row}
#modalSolicitacao .field{min-width:0}
#modalSolicitacao .field input,
#modalSolicitacao .field select,
#modalSolicitacao .field textarea{min-width:0}


/* OBS INTERNA v214 - ADMIN MASTER / AJUSTE MANUAL DO NÚMERO DA VAGA:
   Permite somente ao Administrador Master liberar edição manual do número da vaga
   durante a criação/edição da solicitação. A alteração exige motivo, validação de
   duplicidade e auditoria. Não altera o fluxo, permissões comuns ou banco existente. */
/* OBS INTERNA v215 - AJUSTE ESTRUTURAL DE VAGA / LAYOUT DISCRETO:
   Mantém a regra exclusiva do Administrador Master, mas reduz o impacto visual
   no formulário de solicitação. O motivo só aparece quando o ajuste manual é ativado. */
.numero-vaga-master-box{display:none;margin-top:6px;padding:0;border:0;background:transparent;color:#9a3412;font-size:11px;line-height:1.25}
.numero-vaga-master-box label{display:inline-flex!important;align-items:center;gap:6px;margin:0!important;color:#9a3412!important;font-size:11px!important;font-weight:800!important;background:#fff7ed;border:1px solid #fed7aa;border-radius:999px;padding:5px 8px!important;width:auto!important;max-width:100%}
.numero-vaga-master-box label:hover{background:#ffedd5;border-color:#fdba74}
.numero-vaga-master-box input[type=checkbox]{width:auto!important;margin:0!important}
.numero-vaga-master-box input[type=text]{width:100%;margin-top:6px;background:#fff;border-color:#fed7aa;display:none}
.numero-vaga-master-box .numero-vaga-master-info{display:inline-block;margin-left:6px;color:#9a3412;font-size:11px;font-weight:800;cursor:help}


/* OBS INTERNA v222 - FILTROS DE DATA / SOLICITAÇÕES E VAGAS:
   Campos de período adicionados como filtro visual/client-side.
   Não alteram banco, status, permissões, auditoria, workflow, SLA ou dados existentes. */
.filtro-data-box{display:flex;gap:8px;align-items:center;flex-wrap:nowrap;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:7px 9px}
.filtro-data-box label{font-size:11px;font-weight:900;color:#334155;white-space:nowrap}
.filtro-data-box input[type=date]{min-width:136px;background:#fff;padding:8px 9px;font-size:13px}
@media(max-width:720px){.filtro-data-box{width:100%;flex-wrap:wrap}.filtro-data-box input[type=date]{flex:1;min-width:145px}}



/* OBS INTERNA v223 - TOPO CLEAN / ABAS, AÇÕES E FILTROS:
   Reestrutura visualmente a área superior principal sem alterar IDs, funções,
   permissões, banco, fluxos ou regras de negócio. Os filtros preservam os
   mesmos elementos usados pelo JavaScript existente. */
.panel.panel-clean-topo{padding:12px!important;border-radius:18px!important;background:#fff!important;border:1px solid #e2e8f0!important;box-shadow:0 4px 16px rgba(15,23,42,.05)!important}
.topo-operacional{display:grid!important;grid-template-columns:minmax(280px,1fr) auto!important;gap:10px!important;align-items:center!important;margin-bottom:10px!important}
.topo-operacional .search{min-width:0!important;flex:1!important}
.topo-operacional .search input{width:100%!important;height:38px!important;background:#fff!important;border:1px solid #cbd5e1!important;border-radius:11px!important}
.topo-acoes{display:flex!important;gap:7px!important;align-items:center!important;justify-content:flex-end!important;flex-wrap:nowrap!important;white-space:nowrap!important}
.topo-acoes button{height:38px!important;padding:8px 11px!important;border-radius:10px!important;font-size:12px!important;font-weight:800!important;box-shadow:none!important}
.topo-acoes .btn-secondary,.topo-acoes .btn-dark{background:#f1f5f9!important;color:#334155!important;border:1px solid #cbd5e1!important}
.topo-acoes .btn-secondary:hover,.topo-acoes .btn-dark:hover{background:#e2e8f0!important;color:#0f172a!important}
.filtros-clean{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important;gap:8px!important;align-items:center!important;margin-top:0!important;padding:10px!important;background:#f8fafc!important;border:1px solid #e2e8f0!important;border-radius:14px!important}
.filtros-clean select,.filtros-clean input[type=date]{width:100%!important;height:36px!important;min-width:0!important;padding:7px 9px!important;border-radius:10px!important;background:#fff!important;border:1px solid #cbd5e1!important;font-size:12px!important;color:#334155!important}
.filtros-clean .filtro-data-box{display:grid!important;grid-template-columns:auto minmax(120px,1fr) auto minmax(120px,1fr)!important;gap:6px!important;align-items:center!important;min-width:0!important;background:#fff!important;border:1px solid #e2e8f0!important;border-radius:10px!important;padding:6px 8px!important}
.filtros-clean .filtro-data-box label{font-size:11px!important;font-weight:800!important;color:#64748b!important;white-space:nowrap!important;margin:0!important}
.filtros-clean .filtro-data-box input{height:30px!important;padding:4px 6px!important;border-radius:8px!important}
.check-finalizados{display:inline-flex!important;align-items:center!important;justify-content:flex-start!important;gap:7px!important;min-height:36px!important;padding:7px 9px!important;background:#fff!important;border:1px solid #e2e8f0!important;border-radius:10px!important;color:#475569!important;font-size:12px!important;font-weight:800!important;white-space:nowrap!important;cursor:pointer!important;user-select:none!important}
.check-finalizados:hover{background:#f1f5f9!important;border-color:#cbd5e1!important;color:#0f172a!important}
.check-finalizados input{width:15px!important;height:15px!important;margin:0!important;accent-color:#1F50CD!important;cursor:pointer!important}
.check-finalizados span{line-height:1!important}
.vagas-topo-clean{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:10px!important;margin-bottom:10px!important}
.vagas-topo-clean .small{margin:0!important;color:#64748b!important;line-height:1.35!important}
.vagas-topo-clean button{height:38px!important;padding:8px 11px!important;border-radius:10px!important;font-size:12px!important;background:#f1f5f9!important;color:#334155!important;border:1px solid #cbd5e1!important}
@media(max-width:980px){.topo-operacional{grid-template-columns:1fr!important}.topo-acoes{justify-content:flex-start!important;flex-wrap:wrap!important}.filtros-clean,.filtros-principais-clean{grid-template-columns:repeat(2,minmax(140px,1fr))!important}.vagas-topo-clean{align-items:flex-start!important;flex-direction:column!important}.filtros-periodo-clean{display:block!important}}
@media(max-width:620px){.filtros-clean,.filtros-principais-clean{grid-template-columns:1fr!important}.filtro-data-box{grid-template-columns:auto 1fr!important;width:100%!important}.filtro-data-box label:nth-of-type(2){grid-column:1}.topo-acoes button{flex:1 1 auto!important}.check-finalizados{width:100%!important;justify-content:center!important}}


/* OBS INTERNA v226 - TOPO / CHECKBOX FINALIZADOS HARMÔNICO:
   Mantém o checkbox Incluir finalizados ao lado dos filtros de data, porém como
   controle único, com área clicável, texto e marcador alinhados. Ajuste visual
   apenas; ID btnMostrarFinalizados preservado e evento tratado por delegação. */
.filtros-periodo-clean{display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:8px!important;flex-wrap:wrap!important;margin-top:8px!important;padding:8px 10px!important;background:#f8fafc!important;border:1px solid #e2e8f0!important;border-radius:14px!important}
.filtros-periodo-clean .filtro-data-box{flex:0 1 430px!important;max-width:430px!important;width:auto!important;display:grid!important;grid-template-columns:auto minmax(135px,1fr) auto minmax(135px,1fr)!important;background:#fff!important}
.check-finalizados-periodo{
  flex:0 0 auto!important;
  min-width:170px!important;
  height:36px!important;
  align-self:center!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:8px!important;
  padding:0 12px!important;
  background:#fff!important;
  border:1px solid #cbd5e1!important;
  border-radius:10px!important;
  box-shadow:0 1px 2px rgba(15,23,42,.04)!important;
  color:#334155!important;
  font-size:12px!important;
  font-weight:800!important;
  line-height:1!important;
  white-space:nowrap!important;
  cursor:pointer!important;
  user-select:none!important;
}
.check-finalizados-periodo:hover{background:#f1f5f9!important;border-color:#94a3b8!important;color:#0f172a!important}
.check-finalizados-periodo input[type=checkbox]{
  position:static!important;
  display:inline-block!important;
  flex:0 0 16px!important;
  width:16px!important;
  height:16px!important;
  min-width:16px!important;
  margin:0!important;
  padding:0!important;
  vertical-align:middle!important;
  accent-color:#1F50CD!important;
  cursor:pointer!important;
}
.check-finalizados-periodo span{display:inline-block!important;line-height:16px!important;margin:0!important;padding:0!important;cursor:pointer!important}
.check-finalizados-periodo:has(input:checked){background:#eff6ff!important;border-color:#93c5fd!important;color:#051C3D!important;box-shadow:0 0 0 2px rgba(25,118,210,.08)!important}
@media(max-width:720px){.filtros-periodo-clean{display:grid!important;grid-template-columns:1fr!important}.filtros-periodo-clean .filtro-data-box{max-width:none!important;width:100%!important;flex:auto!important}.check-finalizados-periodo{width:100%!important;justify-content:flex-start!important}}


/* OBS INTERNA v227 - VAGA PROVISÓRIA / PREVISÃO DE RETORNO:
   Campo vinculado ao titular afastado temporariamente. Exibe retorno previsto
   de forma discreta na lista de colaboradores e permite edição auditável no cadastro. */
.retorno-previsto-mini{display:block;margin-top:4px;color:#64748b;font-size:11px;font-weight:800;line-height:1.2}
.retorno-previsto-mini b{color:#075985}
.retorno-previsto-mini.retorno-alerta-proximo{color:#854d0e}
.retorno-previsto-mini.retorno-alerta-proximo b{color:#854d0e}
.retorno-previsto-mini.retorno-alerta-vencido{color:#991b1b}
.retorno-previsto-mini.retorno-alerta-vencido b{color:#991b1b}
.retorno-previsto-box{background:#f8fafc;border:1px solid #dbeafe;border-radius:12px;padding:10px;color:#334155;font-size:12px;line-height:1.4}
/* OBS INTERNA v231 - COLABORADORES / FILTROS RÁPIDOS DE RETORNO:
   Chips discretos para localizar colaboradores em Licença Maternidade/Afastado INSS
   com retorno próximo ou vencido. Alteração visual/client-side, sem mudar banco, status ou workflow. */
.colab-retorno-chips{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:10px;padding:9px 10px;border:1px solid #e2e8f0;border-radius:14px;background:#f8fafc}
.colab-retorno-chips .chip-label{font-size:12px;color:#64748b;font-weight:900;margin-right:2px}
.colab-retorno-chip{background:#fff!important;color:#334155!important;border:1px solid #cbd5e1!important;border-radius:999px!important;padding:7px 10px!important;font-size:12px!important;font-weight:900!important;min-height:32px!important;box-shadow:none!important}
.colab-retorno-chip:hover{background:#eff6ff!important;border-color:#bfdbfe!important;color:#051C3D!important}
.colab-retorno-chip.active{background:#051C3D!important;color:#fff!important;border-color:#051C3D!important}
.colab-retorno-chip.ret-proximo.active{background:#d97706!important;border-color:#d97706!important;color:#fff!important}
.colab-retorno-chip.ret-vencido.active{background:#dc2626!important;border-color:#dc2626!important;color:#fff!important}

/* OBS INTERNA v244 - AVISOS EXECUTIVOS / ATALHOS INDIVIDUAIS:
   Cada aviso dentro do card é clicável de forma independente.
   O card em si não consome alerta, não dá baixa e não altera dados. */
.aviso-executivo-item{cursor:pointer;border-radius:8px;padding:4px 6px;margin:2px -4px;transition:.15s ease}
.aviso-executivo-item:hover{background:#eff6ff;color:#051C3D}
.aviso-executivo-item span{font-weight:700}
.aviso-executivo-item b{margin-left:8px}


/* OBS INTERNA v248 - VAGA RESERVADA / TESTE CONTROLADO:
   Vaga reservada é status estrutural de colaborador/vaga, não entra na aba Vagas.
   Não conta headcount/custo e nunca se aplica a vagas provisórias .1. */
.b-vaga-reservada{background:#fff7ed!important;color:#9a3412!important;border:1px solid #fed7aa!important}
.vaga-reservada-box{background:#fff7ed;border:1px solid #fed7aa;border-radius:12px;padding:10px;color:#9a3412;font-size:12px;line-height:1.4}
.vaga-reservada-box b{color:#7c2d12}
.vaga-reservada-disabled{opacity:.62;filter:grayscale(.15)}
.linha-vaga-reservada{background:#fff7ed!important}
.linha-vaga-reservada:hover{background:#ffedd5!important}
.linha-vaga-reservada td:first-child{border-left:5px solid #fb923c!important}


/* OBS INTERNA v256 - LISTAGEM PRINCIPAL / TIPO CENTRALIZADO:
   Ajuste exclusivamente visual: centraliza a coluna Tipo da listagem principal
   e mantém a nomenclatura correta por finalidade: Aumento de Quadro ou Reposição de vaga. */
.tipo-cell{
  text-align:center!important;
  vertical-align:middle!important;
  font-weight:700;
}




/* OBS INTERNA v304 - ESCOLARIDADE / OUTROS:
   Quando a opção Outros for marcada em Escolaridade, abre campo complementar
   para digitação livre. Alteração restrita ao formulário de solicitação. */
.escolaridade-outros-box{
  display:none;
  margin-top:8px;
  background:#fff;
  border:1px solid #e2e8f0;
  border-radius:12px;
  padding:10px;
}
.escolaridade-outros-box label{
  display:block!important;
  margin-bottom:5px!important;
  font-size:12px!important;
  font-weight:800!important;
  color:#334155!important;
}
.escolaridade-outros-box input{
  width:100%!important;
  background:#fff!important;
}
.escolaridade-outros-box.show{
  display:block!important;
}

/* OBS INTERNA v270 - QUADRANTES INFORMATIVOS DA SOLICITAÇÃO:
   Campos complementares apenas para Aumento de Quadro e Substituição.
   Não interferem em fluxo, SLA, budget, headcount, bloqueios ou contratação. */
.quadrantes-requisitos{grid-column:span 3;display:none;border:1px solid #dbeafe;background:#f8fbff;border-radius:16px;padding:12px;margin-top:4px}
.quadrantes-requisitos h3{color:#051C3D;font-size:14px;margin:0 0 4px}
.quadrantes-requisitos .small{display:block;margin-bottom:10px}
.quadrante-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.quadrante-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:12px}
.quadrante-card h4{margin:0 0 8px;color:#051C3D;font-size:13px;text-transform:uppercase;letter-spacing:.25px}
.quadrante-card .field{margin-bottom:9px}
.quadrante-card .field:last-child{margin-bottom:0}
.check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:7px}
.check-grid.equipamentos-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.check-grid.equipamentos-grid input[type=checkbox]{flex:0 0 15px;min-width:15px;min-height:15px}
@media(max-width:820px){.check-grid.equipamentos-grid{grid-template-columns:1fr}}
.check-grid label{display:flex!important;align-items:center;gap:7px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:8px;font-size:12px!important;font-weight:800!important;color:#334155!important;margin:0!important}
.check-grid input[type=checkbox],.check-grid input[type=radio]{width:15px!important;height:15px!important;margin:0!important;accent-color:#1F50CD}
.quadrante-beneficios{grid-column:span 3;display:none;border:1px solid #dbeafe;background:#f8fbff;border-radius:16px;padding:12px;margin-top:4px}
@media(max-width:820px){.quadrantes-requisitos,.quadrante-beneficios{grid-column:span 1}.quadrante-grid{grid-template-columns:1fr}}


/* OBS INTERNA v279 - MODAL SOLICITAÇÃO / BOTÕES E ESTRUTURA:
   Correção feita na causa: o campo VC foi removido com fechamento correto das DIVs.
   Os botões Cancelar e Salvar permanecem dentro do modal-content, após impacto e histórico. */
#modalSolicitacao .modal-actions{
  position:static!important;
  display:flex!important;
  justify-content:flex-end!important;
  align-items:center!important;
  gap:10px!important;
  flex-wrap:wrap!important;
  width:100%!important;
  margin-top:18px!important;
  padding-top:12px!important;
  border-top:1px solid #e2e8f0!important;
  background:#fff!important;
}
#modalSolicitacao .modal-actions button{
  min-width:130px;
  justify-content:center;
}
@media(max-width:620px){
  #modalSolicitacao .modal-actions button{width:100%!important}
}


/* ==========================================================================
   OBS INTERNA v282 - TESTE VISUAL / PADRÃO INVENTÁRIO TI
   Alteração exclusivamente estética.
   Não altera regras, funções, permissões, workflow, banco, auditoria, status,
   budget/headcount, vagas provisórias, SLA ou qualquer lógica operacional.
   ========================================================================== */

:root{
  --p:#051C3D!important;
  --p2:#155080!important;
  --azul:#051C3D;
  --azul2:#155080;
  --azul3:#e8f1f8;
  --prata:#eef2f5;
  --cinza:#64748b;
  --texto:#0f172a;
  --branco:#fff;
  --borda:#d9e2ec;
  --sombra:0 10px 30px rgba(15,59,99,.12);
  --line:#d9e2ec!important;
  --bg:#f4f7fb!important;
  --card:#fff!important;
  --txt:#0f172a!important;
  --mut:#64748b!important;
}

*{box-sizing:border-box}
body{
  margin:0!important;
  padding:0!important;
  font-family:Inter,Segoe UI,Arial,sans-serif!important;
  background:#f4f7fb!important;
  color:var(--texto)!important;
  min-height:100vh!important;
}

/* Login no padrão visual novo */
.login{
  background:linear-gradient(135deg,var(--azul),#061d33)!important;
  padding:18px!important;
}
.login-card{
  width:min(440px,92vw)!important;
  max-width:440px!important;
  border-radius:22px!important;
  padding:32px!important;
  box-shadow:var(--sombra)!important;
}
.login-card h1{font-size:22px!important;color:var(--azul)!important}
.login-card input{
  border:1px solid var(--borda)!important;
  border-radius:12px!important;
  padding:11px 12px!important;
}
.login-card button{
  border-radius:12px!important;
  padding:11px 14px!important;
  background:var(--azul)!important;
}

/* Sidebar visual usando as abas existentes */

/* Área principal deslocada para a direita da sidebar */
.cards,
.panel-clean-topo,
#tabelaSolicitacoes,
#tabelaAprovacoes,
#tabelaVagas,
#tabelaEquipes,
#tabelaColaboradores,
#tabelaUsuarios,
#tabelaPerfis,
#tabelaRegionais,
#tabelaAuditoria,
#tabelaMediaSLA,
#areaMovimentacaoPessoas,
.footer{
  margin-left:0!important;
  width:auto!important;
}

/* Header vira topbar executivo */

/* Cards no padrão inventário */
.cards{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(160px,1fr))!important;
  gap:16px!important;
  padding:10px 28px 0!important;
  margin-top:0!important;
  margin-bottom:18px!important;
}
.card{
  background:#fff!important;
  border:1px solid var(--borda)!important;
  border-radius:20px!important;
  padding:18px!important;
  box-shadow:var(--sombra)!important;
}
.card h3{
  margin:0 0 8px!important;
  font-size:14px!important;
  color:#334155!important;
  letter-spacing:0!important;
  text-transform:none!important;
}
.card .value{
  font-size:30px!important;
  font-weight:900!important;
  color:var(--azul)!important;
}

/* Painéis/filtros */
.panel-clean-topo{
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  padding:0 28px 14px!important;
  margin-bottom:0!important;
}
.topo-operacional,
.filtros-clean,
.filtros-periodo-clean,
.filters{
  background:#fff!important;
  border:1px solid var(--borda)!important;
  border-radius:18px!important;
  box-shadow:var(--sombra)!important;
}
.topo-operacional{
  padding:14px!important;
}
.filtros-clean,
.filtros-periodo-clean{
  padding:12px!important;
}
input,select,textarea{
  border:1px solid var(--borda)!important;
  border-radius:12px!important;
}
button{
  border-radius:12px!important;
  font-weight:800!important;
}
button:not(.tab):not(.action-btn){
  background:var(--azul)!important;
}
.btn-secondary,
.btn-dark,
.topo-acoes .btn-secondary,
.topo-acoes .btn-dark{
  background:#e2e8f0!important;
  color:#0f172a!important;
}

/* Tabelas estilo SaaS / Inventário */
.table-wrap{
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  border-radius:0!important;
  padding:0 28px 20px!important;
  overflow:auto!important;
}
table{
  width:100%!important;
  border-collapse:separate!important;
  border-spacing:0 8px!important;
  background:transparent!important;
}
th{
  background:transparent!important;
  color:#64748b!important;
  font-size:12px!important;
  font-weight:900!important;
  padding:0 10px 2px!important;
  position:static!important;
  text-align:left!important;
}
td{
  background:#fff!important;
  border-top:1px solid var(--borda)!important;
  border-bottom:1px solid var(--borda)!important;
  padding:12px 10px!important;
  font-size:13px!important;
  vertical-align:middle!important;
}
td:first-child{
  border-left:1px solid var(--borda)!important;
  border-radius:12px 0 0 12px!important;
}
td:last-child{
  border-right:1px solid var(--borda)!important;
  border-radius:0 12px 12px 0!important;
}
tr:hover td{
  background:#fbfdff!important;
}

/* Badges mais leves */
.badge,
.urgencia-badge,
.status-secundario,
.status-principal{
  border-radius:999px!important;
  padding:5px 9px!important;
  font-size:12px!important;
  font-weight:800!important;
  min-height:26px!important;
}

/* Ações quadradas preservadas, apenas suavizadas */
.action-btn{
  border-radius:10px!important;
  box-shadow:0 2px 6px rgba(15,59,99,.08)!important;
}

/* Modais no padrão inventário */
.modal{
  background:rgba(15,23,42,.55)!important;
  align-items:flex-start!important;
  justify-content:center!important;
  padding:28px!important;
  overflow:auto!important;
}
.modal-content{
  width:min(1120px,96vw)!important;
  max-width:1120px!important;
  max-height:none!important;
  background:#fff!important;
  border-radius:22px!important;
  box-shadow:0 25px 60px rgba(0,0,0,.25)!important;
  padding:0!important;
  overflow:hidden!important;
}
.modal h2{
  margin:0!important;
  padding:18px 22px!important;
  border-bottom:1px solid var(--borda)!important;
  background:#f8fafc!important;
  color:var(--texto)!important;
  font-size:20px!important;
}
.modal .grid{
  padding:20px!important;
  display:grid!important;
  grid-template-columns:repeat(3,1fr)!important;
  gap:12px!important;
}
.modal .field label{
  font-weight:800!important;
  font-size:13px!important;
  color:#334155!important;
}
.modal .modal-actions{
  padding:16px 20px!important;
  border-top:1px solid var(--borda)!important;
  display:flex!important;
  gap:10px!important;
  justify-content:flex-end!important;
  background:#f8fafc!important;
  margin:0!important;
  position:static!important;
}
.impact,
.audit,
.quadrantes-requisitos,
.quadrante-beneficios{
  margin-left:20px!important;
  margin-right:20px!important;
}
.quadrantes-requisitos,
.quadrante-beneficios{
  border-radius:18px!important;
  border:1px solid var(--borda)!important;
  background:#fbfdff!important;
}
.quadrante-card,
.config-box,
.perfil-grupo,
.sistema-admin-card{
  border-radius:18px!important;
  border:1px solid var(--borda)!important;
  box-shadow:0 4px 18px rgba(15,59,99,.05)!important;
}

/* Configurações e áreas internas */
.panel,
.config-box{
  border-radius:20px!important;
  border:1px solid var(--borda)!important;
  box-shadow:var(--sombra)!important;
}
.footer{
  padding:0 28px 24px!important;
  text-align:center!important;
  color:#64748b!important;
}

/* Responsividade */
@media(max-width:980px){
  .cards,
  .panel-clean-topo,
  #tabelaSolicitacoes,
  #tabelaAprovacoes,
  #tabelaVagas,
  #tabelaEquipes,
  #tabelaColaboradores,
  #tabelaUsuarios,
  #tabelaPerfis,
  #tabelaRegionais,
  #tabelaAuditoria,
  #tabelaMediaSLA,
  #areaMovimentacaoPessoas,
  .footer{
    margin-left:0!important;
    width:100%!important;
  }
  .cards{
    grid-template-columns:repeat(2,1fr)!important;
  }
  .modal .grid{
    grid-template-columns:1fr!important;
  }
}
@media(max-width:620px){
  .cards{grid-template-columns:1fr!important;padding:10px!important}
  .panel-clean-topo{padding:0 10px 12px!important}
  .table-wrap{padding:0 10px 16px!important}
}


/* ==========================================================================
   OBS INTERNA v286 - MENU LATERAL / ÍCONES DAS ABAS
   Alteração exclusivamente visual: adiciona ícones nas abas do menu lateral,
   preservando IDs, onclicks, regras, fluxos, permissões, banco e auditoria.
   ========================================================================== */
@media(max-width:980px){
}


/* ==========================================================================
   OBS INTERNA v283 - DASHBOARD 5x2 E CONTRASTE DE BOTÕES
   Ajuste exclusivamente visual. Mantém regras, cálculos, filtros, cliques,
   permissões, workflow, banco, auditoria e lógica já aprovados.
   ========================================================================== */

/* Dashboard: até 5 cards por linha; com 10 cards fica 5 em cima e 5 embaixo. */
.cards{
  grid-template-columns:repeat(5,minmax(150px,1fr))!important;
  gap:14px!important;
}
@media(max-width:1320px){.cards{grid-template-columns:repeat(4,minmax(150px,1fr))!important}}
@media(max-width:1080px){.cards{grid-template-columns:repeat(3,minmax(150px,1fr))!important}}
@media(max-width:780px){.cards{grid-template-columns:repeat(2,minmax(150px,1fr))!important}}
@media(max-width:520px){.cards{grid-template-columns:1fr!important}}

/* Contraste base dos botões */
button,
.btn,
input[type=button],
input[type=submit]{
  color:#ffffff!important;
  text-shadow:none!important;
}

/* Botão primário */
button:not(.tab):not(.action-btn):not(.btn-secondary):not(.btn-dark):not(.btn-toggle-finalizados):not(.check-finalizados):not(.check-finalizados-periodo),
.btn:not(.secondary):not(.danger):not(.green):not(.yellow){
  background:#051C3D!important;
  color:#ffffff!important;
  border:1px solid #051C3D!important;
}
button:not(.tab):not(.action-btn):not(.btn-secondary):not(.btn-dark):not(.btn-toggle-finalizados):not(.check-finalizados):not(.check-finalizados-periodo):hover,
.btn:not(.secondary):not(.danger):not(.green):not(.yellow):hover{
  background:#155080!important;
  color:#ffffff!important;
  border-color:#155080!important;
}

/* Botões secundários/cinza */
.btn-secondary,
.btn-dark,
.btn.secondary,
.topo-acoes .btn-secondary,
.topo-acoes .btn-dark,
button.btn-secondary,
button.btn-dark,
button.secondary{
  background:#e2e8f0!important;
  color:#0f172a!important;
  border:1px solid #cbd5e1!important;
}
.btn-secondary:hover,
.btn-dark:hover,
.btn.secondary:hover,
.topo-acoes .btn-secondary:hover,
.topo-acoes .btn-dark:hover,
button.btn-secondary:hover,
button.btn-dark:hover,
button.secondary:hover{
  background:#cbd5e1!important;
  color:#0f172a!important;
  border-color:#94a3b8!important;
}

/* Botões de alerta/ação com contraste */
.btn-danger,
.btn.danger,
button.btn-danger{
  background:#dc2626!important;
  color:#ffffff!important;
  border:1px solid #dc2626!important;
}
.btn-danger:hover,
.btn.danger:hover,
button.btn-danger:hover{
  background:#b91c1c!important;
  color:#ffffff!important;
  border-color:#b91c1c!important;
}
.btn-ok,
.btn.green,
button.btn-ok{
  background:#16a34a!important;
  color:#ffffff!important;
  border:1px solid #16a34a!important;
}
.btn-ok:hover,
.btn.green:hover,
button.btn-ok:hover{
  background:#15803d!important;
  color:#ffffff!important;
  border-color:#15803d!important;
}
.btn-warn,
.btn.yellow,
button.btn-warn{
  background:#ca8a04!important;
  color:#ffffff!important;
  border:1px solid #ca8a04!important;
}
.btn-warn:hover,
.btn.yellow:hover,
button.btn-warn:hover{
  background:#a16207!important;
  color:#ffffff!important;
  border-color:#a16207!important;
}

/* Botões pequenos também devem manter contraste */
button.small,
.btn.small{
  color:inherit!important;
}
.btn.small:not(.secondary):not(.danger):not(.green):not(.yellow),
button.small:not(.secondary):not(.btn-secondary):not(.action-btn){
  color:#ffffff!important;
}

/* Botões de ação quadrados: preservar cores próprias e legibilidade */
.action-btn{
  color:#0f172a!important;
  background:#f8fafc!important;
  border:1px solid #cbd5e1!important;
}
.action-btn:hover{
  color:#0f172a!important;
  background:#e2e8f0!important;
}
.action-btn.btn-action-ok{
  background:#dcfce7!important;
  color:#166534!important;
  border-color:#86efac!important;
}
.action-btn.btn-action-direct,
.action-btn.btn-action-warn{
  background:#fef3c7!important;
  color:#854d0e!important;
  border-color:#fde68a!important;
}
.action-btn.btn-action-danger{
  background:#fee2e2!important;
  color:#991b1b!important;
  border-color:#fecaca!important;
}
.action-btn.btn-action-dark{
  background:#e2e8f0!important;
  color:#334155!important;
  border-color:#cbd5e1!important;
}
.action-btn.btn-action-reopen{
  background:#dbeafe!important;
  color:#1e40af!important;
  border-color:#bfdbfe!important;
}

/* Abas/sidebar: texto sempre claro no azul */

/* Botões desabilitados: contraste legível */
button:disabled,
button[disabled]{
  background:#cbd5e1!important;
  color:#475569!important;
  border-color:#cbd5e1!important;
  opacity:1!important;
}

/* Botões/checks especiais não podem herdar texto branco indevido */
.check-finalizados,
.check-finalizados-periodo,
.btn-toggle-finalizados{
  background:#ffffff!important;
  color:#334155!important;
  border:1px solid #cbd5e1!important;
}
.check-finalizados:hover,
.check-finalizados-periodo:hover,
.btn-toggle-finalizados:hover{
  background:#f1f5f9!important;
  color:#0f172a!important;
}
.check-finalizados-periodo:has(input:checked){
  background:#eff6ff!important;
  color:#051C3D!important;
  border-color:#93c5fd!important;
}

/* Modal: rodapé com botões visíveis e contraste garantido */
.modal .modal-actions button{
  min-width:120px;
  justify-content:center;
}
.modal .modal-actions .btn-secondary,
.modal .modal-actions button.btn-secondary{
  background:#e2e8f0!important;
  color:#0f172a!important;
}


/* ==========================================================================
   OBS INTERNA v284 - CONTRASTE REAL DOS BOTÕES E BLOQUEIO CRÍTICO
   Ajuste exclusivamente visual.
   Botão azul escuro sempre com texto branco.
   Controle crítico de bloqueio volta ao padrão: vermelho para ativar bloqueio
   e laranja para desativar bloqueio.
   ========================================================================== */

/* Regra de maior prioridade: qualquer botão com fundo azul escuro deve ter texto branco. */
button:not(.tab):not(.action-btn):not(.btn-secondary):not(.btn-dark):not(.btn-toggle-finalizados):not(.check-finalizados):not(.check-finalizados-periodo),
.btn:not(.secondary):not(.danger):not(.green):not(.yellow),
.topo-acoes button:not(.btn-secondary):not(.btn-dark),
.modal-actions button:not(.btn-secondary):not(.btn-dark),
#modalSolicitacao .modal-actions button:not(.btn-secondary):not(.btn-dark){
  background:#051C3D!important;
  color:#ffffff!important;
  border-color:#051C3D!important;
}

/* Garante que textos internos dentro dos botões também fiquem brancos quando o botão for primário. */
button:not(.tab):not(.action-btn):not(.btn-secondary):not(.btn-dark):not(.btn-toggle-finalizados):not(.check-finalizados):not(.check-finalizados-periodo) *,
.btn:not(.secondary):not(.danger):not(.green):not(.yellow) *{
  color:#ffffff!important;
}

/* Hover primário */
button:not(.tab):not(.action-btn):not(.btn-secondary):not(.btn-dark):not(.btn-toggle-finalizados):not(.check-finalizados):not(.check-finalizados-periodo):hover,
.btn:not(.secondary):not(.danger):not(.green):not(.yellow):hover{
  background:#155080!important;
  color:#ffffff!important;
  border-color:#155080!important;
}

/* Secundários continuam com texto escuro porque o fundo é claro. */
.btn-secondary,
.btn-dark,
.btn.secondary,
button.btn-secondary,
button.btn-dark,
button.secondary,
.topo-acoes .btn-secondary,
.topo-acoes .btn-dark,
.modal-actions .btn-secondary,
.modal-actions button.btn-secondary{
  background:#e2e8f0!important;
  color:#0f172a!important;
  border:1px solid #cbd5e1!important;
}
.btn-secondary *,
.btn-dark *,
.btn.secondary *,
button.btn-secondary *,
button.btn-dark *,
button.secondary *{
  color:#0f172a!important;
}

/* Controle crítico: botão de bloqueio em Segurança/Backup/Integridade.
   Estado padrão/ativar bloqueio = vermelho. */
#btnToggleBloqueioContratacoes,
#btnToggleBloqueioContratacoes.btn-danger{
  background:#dc2626!important;
  color:#ffffff!important;
  border:1px solid #dc2626!important;
}
#btnToggleBloqueioContratacoes *,
#btnToggleBloqueioContratacoes.btn-danger *{
  color:#ffffff!important;
}
#btnToggleBloqueioContratacoes:hover,
#btnToggleBloqueioContratacoes.btn-danger:hover{
  background:#b91c1c!important;
  color:#ffffff!important;
  border-color:#b91c1c!important;
}

/* Quando o sistema trocar o botão para alerta/desativar bloqueio, manter laranja. */
#btnToggleBloqueioContratacoes.btn-warn,
#btnToggleBloqueioContratacoes[data-estado="desativar"],
#btnToggleBloqueioContratacoes[data-bloqueado="true"]{
  background:#d97706!important;
  color:#ffffff!important;
  border:1px solid #d97706!important;
}
#btnToggleBloqueioContratacoes.btn-warn *,
#btnToggleBloqueioContratacoes[data-estado="desativar"] *,
#btnToggleBloqueioContratacoes[data-bloqueado="true"] *{
  color:#ffffff!important;
}
#btnToggleBloqueioContratacoes.btn-warn:hover,
#btnToggleBloqueioContratacoes[data-estado="desativar"]:hover,
#btnToggleBloqueioContratacoes[data-bloqueado="true"]:hover{
  background:#b45309!important;
  color:#ffffff!important;
  border-color:#b45309!important;
}

/* Classes críticas gerais preservadas. */
.btn-danger,
.btn.danger,
button.btn-danger{
  background:#dc2626!important;
  color:#ffffff!important;
  border-color:#dc2626!important;
}
.btn-warn,
.btn.yellow,
button.btn-warn{
  background:#d97706!important;
  color:#ffffff!important;
  border-color:#d97706!important;
}
.btn-ok,
.btn.green,
button.btn-ok{
  background:#16a34a!important;
  color:#ffffff!important;
  border-color:#16a34a!important;
}



/* OBS INTERNA v287 - CONTRASTE GLOBAL DE BOTÕES:
   Ajuste exclusivamente visual para garantir leitura dos botões sólidos/escuros.
   Não altera IDs, onclicks, permissões, regras, banco, fluxo, auditoria ou layout estrutural.
   Botões iconográficos (.action-btn) e botões claros de navegação mantêm seu padrão próprio. */
button.btn-ok,
button.btn-danger,
button.btn-warn,
button.btn-dark,
button.btn-primary,
button.btn-save,
button.btn-confirm,
button.btn-cancelar-bloqueio,
button[style*="background:#051C3D"],
button[style*="background: #051C3D"],
button[style*="background:#1F50CD"],
button[style*="background: #1F50CD"],
button[style*="background:#1565c0"],
button[style*="background: #1565c0"],
button[style*="background:#1d4ed8"],
button[style*="background: #1d4ed8"],
button[style*="background:#2563eb"],
button[style*="background: #2563eb"],
button[style*="background:#334155"],
button[style*="background: #334155"],
button[style*="background:#dc2626"],
button[style*="background: #dc2626"],
button[style*="background:#d97706"],
button[style*="background: #d97706"],
button[style*="background:#16a34a"],
button[style*="background: #16a34a"]{
  color:#fff!important;
  text-shadow:0 1px 1px rgba(0,0,0,.18);
}
button:not(.action-btn):not(.tab):not(.subtab):not(.btn-toggle-finalizados):not(.check-finalizados):not(.check-finalizados-periodo):not(.btn-forgot-password){
  -webkit-font-smoothing:antialiased;
}
button:not(.action-btn):not(.tab):not(.subtab):not(.btn-toggle-finalizados):not(.check-finalizados):not(.check-finalizados-periodo):not(.btn-forgot-password):hover{
  color:#fff;
}
button.btn-secondary{
  color:#fff!important;
}
.topo-acoes .btn-secondary,
.topo-acoes .btn-dark,
.vagas-topo-clean button,
.perfil-grupo-head button{
  text-shadow:none!important;
}
button:disabled{
  text-shadow:none!important;
}



/* ==========================================================================
   OBS INTERNA v288 - HIERARQUIA VISUAL DOS BOTÕES
   Ajuste exclusivamente visual/cirúrgico.
   Objetivo: diferenciar ação primária, secundária e crítica sem alterar IDs,
   onclicks, regras, banco, permissões, workflow, auditoria ou layout estrutural.
   ========================================================================== */

/* Ações primárias: botões sólidos principais do sistema. */
button:not(.action-btn):not(.tab):not(.subtab):not(.btn-secondary):not(.btn-dark):not(.btn-toggle-finalizados):not(.check-finalizados):not(.check-finalizados-periodo):not(.btn-forgot-password):not(#btnToggleBloqueioContratacoes),
button.btn-primary,
button.btn-save,
button.btn-confirm{
  background:#1F50CD!important;
  color:#ffffff!important;
  border:1px solid #1F50CD!important;
  text-shadow:0 1px 1px rgba(0,0,0,.18)!important;
}
button:not(.action-btn):not(.tab):not(.subtab):not(.btn-secondary):not(.btn-dark):not(.btn-toggle-finalizados):not(.check-finalizados):not(.check-finalizados-periodo):not(.btn-forgot-password):not(#btnToggleBloqueioContratacoes):hover,
button.btn-primary:hover,
button.btn-save:hover,
button.btn-confirm:hover{
  background:#051C3D!important;
  color:#ffffff!important;
  border-color:#051C3D!important;
}

/* Ações secundárias: exportar, limpar filtros, voltar, fechar e apoio operacional. */
button.btn-secondary,
button.btn-dark,
.topo-acoes button.btn-secondary,
.topo-acoes button.btn-dark,
.modal-actions button.btn-secondary,
.modal-actions button.btn-dark,
button[onclick*="exportar"],
button[onclick*="Exportar"],
button[onclick*="limpar"],
button[onclick*="Limpar"],
button[onclick*="fecharModal"],
button[onclick*="voltar"],
button[onclick*="Voltar"]{
  background:#e2e8f0!important;
  color:#0f172a!important;
  border:1px solid #cbd5e1!important;
  text-shadow:none!important;
  box-shadow:none!important;
}
button.btn-secondary:hover,
button.btn-dark:hover,
.topo-acoes button.btn-secondary:hover,
.topo-acoes button.btn-dark:hover,
.modal-actions button.btn-secondary:hover,
.modal-actions button.btn-dark:hover,
button[onclick*="exportar"]:hover,
button[onclick*="Exportar"]:hover,
button[onclick*="limpar"]:hover,
button[onclick*="Limpar"]:hover,
button[onclick*="fecharModal"]:hover,
button[onclick*="voltar"]:hover,
button[onclick*="Voltar"]:hover{
  background:#cbd5e1!important;
  color:#0f172a!important;
  border-color:#94a3b8!important;
}
button.btn-secondary *,
button.btn-dark *,
.topo-acoes button.btn-secondary *,
.topo-acoes button.btn-dark *,
.modal-actions button.btn-secondary *,
.modal-actions button.btn-dark *,
button[onclick*="exportar"] *,
button[onclick*="Exportar"] *,
button[onclick*="limpar"] *,
button[onclick*="Limpar"] *,
button[onclick*="fecharModal"] *,
button[onclick*="voltar"] *,
button[onclick*="Voltar"] *{
  color:#0f172a!important;
}

/* Ações críticas/perigosas. */
button.btn-danger,
button[onclick*="excluir"],
button[onclick*="Excluir"],
button[onclick*="deletar"],
button[onclick*="Deletar"],
button[onclick*="cancelar"],
button[onclick*="Cancelar"]{
  background:#dc2626!important;
  color:#ffffff!important;
  border:1px solid #dc2626!important;
  text-shadow:0 1px 1px rgba(0,0,0,.18)!important;
}
button.btn-danger:hover,
button[onclick*="excluir"]:hover,
button[onclick*="Excluir"]:hover,
button[onclick*="deletar"]:hover,
button[onclick*="Deletar"]:hover,
button[onclick*="cancelar"]:hover,
button[onclick*="Cancelar"]:hover{
  background:#b91c1c!important;
  color:#ffffff!important;
  border-color:#b91c1c!important;
}

/* Sucesso e aviso. */
button.btn-ok{background:#16a34a!important;color:#ffffff!important;border-color:#16a34a!important}
button.btn-ok:hover{background:#15803d!important;color:#ffffff!important;border-color:#15803d!important}
button.btn-warn{background:#d97706!important;color:#ffffff!important;border-color:#d97706!important}
button.btn-warn:hover{background:#b45309!important;color:#ffffff!important;border-color:#b45309!important}

/* Regra específica do bloqueio crítico: ativar = vermelho; desativar = laranja. */
#btnToggleBloqueioContratacoes.btn-danger,
#btnToggleBloqueioContratacoes:not(.btn-warn){
  background:#dc2626!important;
  color:#ffffff!important;
  border:1px solid #dc2626!important;
}
#btnToggleBloqueioContratacoes.btn-danger:hover,
#btnToggleBloqueioContratacoes:not(.btn-warn):hover{
  background:#b91c1c!important;
  color:#ffffff!important;
  border-color:#b91c1c!important;
}
#btnToggleBloqueioContratacoes.btn-warn{
  background:#d97706!important;
  color:#ffffff!important;
  border:1px solid #d97706!important;
}
#btnToggleBloqueioContratacoes.btn-warn:hover{
  background:#b45309!important;
  color:#ffffff!important;
  border-color:#b45309!important;
}
#btnToggleBloqueioContratacoes *,
button.btn-danger *,
button.btn-warn *,
button.btn-ok *{color:#ffffff!important}



/* ==========================================================================
   OBS INTERNA v289 - BOTÕES / HIERARQUIA GLOBAL EM TODAS AS ABAS
   Ajuste exclusivamente visual.
   Aplica a mesma hierarquia de contraste para botões comuns em todas as abas,
   sem alterar IDs, onclicks, permissões, fluxo, banco, validações ou layout.
   ========================================================================== */

/* Botões primários comuns em qualquer aba: azul STTE com texto branco. */
body button:not(.action-btn):not(.tab):not(.subtab):not(.btn-secondary):not(.btn-dark):not(.btn-toggle-finalizados):not(.check-finalizados):not(.check-finalizados-periodo):not(.btn-forgot-password):not(#btnToggleBloqueioContratacoes){
  background:#1F50CD!important;
  color:#ffffff!important;
  border:1px solid #1F50CD!important;
  text-shadow:0 1px 1px rgba(0,0,0,.16)!important;
}
body button:not(.action-btn):not(.tab):not(.subtab):not(.btn-secondary):not(.btn-dark):not(.btn-toggle-finalizados):not(.check-finalizados):not(.check-finalizados-periodo):not(.btn-forgot-password):not(#btnToggleBloqueioContratacoes):hover{
  background:#051C3D!important;
  color:#ffffff!important;
  border-color:#051C3D!important;
}

/* Botões secundários em qualquer aba: cinza claro com texto escuro legível. */
body button.btn-secondary,
body button.btn-dark,
body .controls button.btn-secondary,
body .controls button.btn-dark,
body .modal-actions button.btn-secondary,
body .modal-actions button.btn-dark,
body .topo-acoes button.btn-secondary,
body .topo-acoes button.btn-dark,
body .vagas-topo-clean button,
body .perfil-grupo-head button,
body button[onclick*="export"],
body button[onclick*="Export"],
body button[onclick*="limpar"],
body button[onclick*="Limpar"],
body button[onclick*="fechar"],
body button[onclick*="Fechar"],
body button[onclick*="voltar"],
body button[onclick*="Voltar"],
body button[onclick*="restaurar"],
body button[onclick*="Restaurar"]{
  background:#e2e8f0!important;
  color:#0f172a!important;
  border:1px solid #cbd5e1!important;
  text-shadow:none!important;
  box-shadow:none!important;
}
body button.btn-secondary:hover,
body button.btn-dark:hover,
body .controls button.btn-secondary:hover,
body .controls button.btn-dark:hover,
body .modal-actions button.btn-secondary:hover,
body .modal-actions button.btn-dark:hover,
body .topo-acoes button.btn-secondary:hover,
body .topo-acoes button.btn-dark:hover,
body .vagas-topo-clean button:hover,
body .perfil-grupo-head button:hover,
body button[onclick*="export"]:hover,
body button[onclick*="Export"]:hover,
body button[onclick*="limpar"]:hover,
body button[onclick*="Limpar"]:hover,
body button[onclick*="fechar"]:hover,
body button[onclick*="Fechar"]:hover,
body button[onclick*="voltar"]:hover,
body button[onclick*="Voltar"]:hover,
body button[onclick*="restaurar"]:hover,
body button[onclick*="Restaurar"]:hover{
  background:#cbd5e1!important;
  color:#0f172a!important;
  border-color:#94a3b8!important;
}

/* Botões críticos e de alerta em qualquer aba. */
body button.btn-danger,
body button[onclick*="excluir"],
body button[onclick*="Excluir"],
body button[onclick*="deletar"],
body button[onclick*="Deletar"],
body button[onclick*="cancelar"],
body button[onclick*="Cancelar"]{
  background:#dc2626!important;
  color:#ffffff!important;
  border:1px solid #dc2626!important;
  text-shadow:0 1px 1px rgba(0,0,0,.16)!important;
}
body button.btn-danger:hover,
body button[onclick*="excluir"]:hover,
body button[onclick*="Excluir"]:hover,
body button[onclick*="deletar"]:hover,
body button[onclick*="Deletar"]:hover,
body button[onclick*="cancelar"]:hover,
body button[onclick*="Cancelar"]:hover{
  background:#b91c1c!important;
  color:#ffffff!important;
  border-color:#b91c1c!important;
}
body button.btn-ok{background:#16a34a!important;color:#ffffff!important;border-color:#16a34a!important}
body button.btn-ok:hover{background:#15803d!important;color:#ffffff!important;border-color:#15803d!important}
body button.btn-warn{background:#d97706!important;color:#ffffff!important;border-color:#d97706!important}
body button.btn-warn:hover{background:#b45309!important;color:#ffffff!important;border-color:#b45309!important}

/* Conteúdo interno dos botões acompanha a cor do botão em todas as abas. */
body button:not(.btn-secondary):not(.btn-dark):not(.action-btn):not(.tab):not(.subtab) *,
body button.btn-danger *,
body button.btn-warn *,
body button.btn-ok *{color:#ffffff!important}
body button.btn-secondary *,
body button.btn-dark *,
body .vagas-topo-clean button *,
body .perfil-grupo-head button *{color:#0f172a!important}

/* Preserva regra específica do bloqueio crítico: ativar = vermelho; desativar = laranja. */
body #btnToggleBloqueioContratacoes.btn-danger,
body #btnToggleBloqueioContratacoes:not(.btn-warn){
  background:#dc2626!important;
  color:#ffffff!important;
  border:1px solid #dc2626!important;
}
body #btnToggleBloqueioContratacoes.btn-warn{
  background:#d97706!important;
  color:#ffffff!important;
  border:1px solid #d97706!important;
}
body #btnToggleBloqueioContratacoes *{color:#ffffff!important}

/* Desabilitados continuam neutros e legíveis. */
body button:disabled{
  background:#cbd5e1!important;
  color:#64748b!important;
  border-color:#cbd5e1!important;
  text-shadow:none!important;
}


/* ==========================================================================
   OBS INTERNA v290 - BOTÕES GLOBAIS REMANESCENTES + MENU LATERAL MAIS FINO
   Ajuste exclusivamente visual.
   - Corrige contraste de botões remanescentes em Configurações, Auditoria e demais abas.
   - Reduz moderadamente a largura do menu lateral, preservando texto, ícones, IDs e onclicks.
   Não altera regras, banco, permissões, workflow, auditoria, validações ou funções.
   ========================================================================== */

/* Menu lateral mais fino: redução moderada de 280px para 238px. */
.cards,
.panel-clean-topo,
#tabelaSolicitacoes,
#tabelaAprovacoes,
#tabelaVagas,
#tabelaEquipes,
#tabelaColaboradores,
#tabelaUsuarios,
#tabelaPerfis,
#tabelaRegionais,
#tabelaAuditoria,
#tabelaMediaSLA,
#areaMovimentacaoPessoas,
.footer{
  margin-left:0!important;
  width:auto!important;
}

/* Primários: ações principais continuam azuis e com texto branco. */
body button:not(.action-btn):not(.tab):not(.subtab):not(.btn-secondary):not(.btn-dark):not(.btn-toggle-finalizados):not(.check-finalizados):not(.check-finalizados-periodo):not(.btn-forgot-password):not(#btnToggleBloqueioContratacoes):not(.perfil-grupo-head button){
  background:#1F50CD!important;
  color:#ffffff!important;
  border:1px solid #1F50CD!important;
  text-shadow:0 1px 1px rgba(0,0,0,.16)!important;
}
body button:not(.action-btn):not(.tab):not(.subtab):not(.btn-secondary):not(.btn-dark):not(.btn-toggle-finalizados):not(.check-finalizados):not(.check-finalizados-periodo):not(.btn-forgot-password):not(#btnToggleBloqueioContratacoes):not(.perfil-grupo-head button):hover{
  background:#051C3D!important;
  color:#ffffff!important;
  border-color:#051C3D!important;
}

/* Secundários: correção abrangente para botões de apoio que estavam escapando do padrão. */
body button.btn-secondary,
body button.btn-dark,
body button[onclick*="export"],
body button[onclick*="Export"],
body button[onclick*="import"],
body button[onclick*="Import"],
body button[onclick*="baixar"],
body button[onclick*="Baixar"],
body button[onclick*="download"],
body button[onclick*="Download"],
body button[onclick*="copiar"],
body button[onclick*="Copiar"],
body button[onclick*="limpar"],
body button[onclick*="Limpar"],
body button[onclick*="restaurar"],
body button[onclick*="Restaurar"],
body button[onclick*="fechar"],
body button[onclick*="Fechar"],
body button[onclick*="voltar"],
body button[onclick*="Voltar"],
body .sistema-admin-actions button.btn-secondary,
body .sistema-admin-actions button.btn-dark,
body .perfil-grupo-head button,
body .vagas-topo-clean button{
  background:#e2e8f0!important;
  color:#0f172a!important;
  border:1px solid #cbd5e1!important;
  text-shadow:none!important;
  box-shadow:none!important;
}
body button.btn-secondary:hover,
body button.btn-dark:hover,
body button[onclick*="export"]:hover,
body button[onclick*="Export"]:hover,
body button[onclick*="import"]:hover,
body button[onclick*="Import"]:hover,
body button[onclick*="baixar"]:hover,
body button[onclick*="Baixar"]:hover,
body button[onclick*="download"]:hover,
body button[onclick*="Download"]:hover,
body button[onclick*="copiar"]:hover,
body button[onclick*="Copiar"]:hover,
body button[onclick*="limpar"]:hover,
body button[onclick*="Limpar"]:hover,
body button[onclick*="restaurar"]:hover,
body button[onclick*="Restaurar"]:hover,
body button[onclick*="fechar"]:hover,
body button[onclick*="Fechar"]:hover,
body button[onclick*="voltar"]:hover,
body button[onclick*="Voltar"]:hover,
body .sistema-admin-actions button.btn-secondary:hover,
body .sistema-admin-actions button.btn-dark:hover,
body .perfil-grupo-head button:hover,
body .vagas-topo-clean button:hover{
  background:#cbd5e1!important;
  color:#0f172a!important;
  border-color:#94a3b8!important;
}
body button.btn-secondary *,
body button.btn-dark *,
body button[onclick*="export"] *,
body button[onclick*="Export"] *,
body button[onclick*="import"] *,
body button[onclick*="Import"] *,
body button[onclick*="baixar"] *,
body button[onclick*="Baixar"] *,
body button[onclick*="download"] *,
body button[onclick*="Download"] *,
body button[onclick*="copiar"] *,
body button[onclick*="Copiar"] *,
body button[onclick*="limpar"] *,
body button[onclick*="Limpar"] *,
body button[onclick*="restaurar"] *,
body button[onclick*="Restaurar"] *,
body button[onclick*="fechar"] *,
body button[onclick*="Fechar"] *,
body button[onclick*="voltar"] *,
body button[onclick*="Voltar"] *,
body .perfil-grupo-head button *,
body .vagas-topo-clean button *{
  color:#0f172a!important;
}

/* Críticos, sucesso e alerta preservados com texto branco. */
body button.btn-danger,
body button[onclick*="excluir"],
body button[onclick*="Excluir"],
body button[onclick*="deletar"],
body button[onclick*="Deletar"],
body button[onclick*="cancelar"],
body button[onclick*="Cancelar"]{
  background:#dc2626!important;
  color:#ffffff!important;
  border:1px solid #dc2626!important;
}
body button.btn-ok{background:#16a34a!important;color:#ffffff!important;border-color:#16a34a!important}
body button.btn-warn{background:#d97706!important;color:#ffffff!important;border-color:#d97706!important}
body button.btn-danger *,
body button.btn-ok *,
body button.btn-warn *{color:#ffffff!important}

/* Bloqueio crítico permanece com regra específica: ativar vermelho, desativar laranja. */
body #btnToggleBloqueioContratacoes.btn-danger,
body #btnToggleBloqueioContratacoes:not(.btn-warn){
  background:#dc2626!important;
  color:#ffffff!important;
  border:1px solid #dc2626!important;
}
body #btnToggleBloqueioContratacoes.btn-warn{
  background:#d97706!important;
  color:#ffffff!important;
  border:1px solid #d97706!important;
}
body #btnToggleBloqueioContratacoes *{color:#ffffff!important}

/* Desabilitados neutros e legíveis. */
body button:disabled,
body button[disabled]{
  background:#cbd5e1!important;
  color:#64748b!important;
  border-color:#cbd5e1!important;
  text-shadow:none!important;
}


/* OBS INTERNA v291 - DASHBOARD EM ABA PRÓPRIA E ÍCONES DO MENU:
   Ajuste visual/navegação: dashboard deixa de ocupar o topo fixo de todas as abas
   e passa a ser a primeira aba do menu. Não altera regras, banco, permissões,
   fluxos, aprovações, SLA ou funções existentes. */
#areaDashboard.cards{
  display:grid;
}


/* ==========================================================================
   OBS INTERNA v292 - DASHBOARD EXCLUSIVO + BOTÕES REMANESCENTES
   Atualização cirúrgica: dashboard aparece somente na aba Dashboard.
   Corrige contraste dos botões remanescentes em Colaboradores, Configurações/SLA e Auditoria.
   Não altera regras, banco, permissões, workflow, auditoria, SLA, validações ou funções existentes.
   ========================================================================== */

/* Dashboard deixa de ser fixo no topo das demais abas.
   A visibilidade é controlada pela classe do body aplicada em trocarAba(). */
body:not(.aba-dashboard) #areaDashboard{
  display:none!important;
}
body.aba-dashboard #areaDashboard{
  display:grid!important;
}

/* Botão Limpar busca da aba Colaboradores: ação secundária, fundo claro e texto escuro. */
#areaColaboradores .colab-search-row button[onclick="limparBuscaColaboradores()"]{
  background:#e2e8f0!important;
  color:#0f172a!important;
  border:1px solid #cbd5e1!important;
  text-shadow:none!important;
  box-shadow:none!important;
}
#areaColaboradores .colab-search-row button[onclick="limparBuscaColaboradores()"]:hover{
  background:#cbd5e1!important;
  color:#0f172a!important;
  border-color:#94a3b8!important;
}

/* Configurações de SLA: Alterar é ação principal de edição, azul com texto branco. */
#tabelaConfiguracoes button[onclick^="editarConfigSLA"]{
  background:#1F50CD!important;
  color:#ffffff!important;
  border:1px solid #1F50CD!important;
  text-shadow:0 1px 1px rgba(0,0,0,.16)!important;
}
#tabelaConfiguracoes button[onclick^="editarConfigSLA"]:hover{
  background:#051C3D!important;
  color:#ffffff!important;
  border-color:#051C3D!important;
}
#tabelaConfiguracoes button[onclick^="editarConfigSLA"] *{
  color:#ffffff!important;
}

/* Auditoria: Limpar filtros é ação secundária, fundo claro e texto escuro. */
#boxFiltrosAuditoria button[onclick="limparFiltrosAuditoria()"]{
  background:#e2e8f0!important;
  color:#0f172a!important;
  border:1px solid #cbd5e1!important;
  text-shadow:none!important;
  box-shadow:none!important;
}
#boxFiltrosAuditoria button[onclick="limparFiltrosAuditoria()"]:hover{
  background:#cbd5e1!important;
  color:#0f172a!important;
  border-color:#94a3b8!important;
}



/* ==========================================================================
   OBS INTERNA v293 - BOTÕES DE LIMPEZA / FILTRO ATIVO EM LARANJA
   Ajuste exclusivamente visual e cirúrgico.
   Padroniza botões de limpeza/reset de filtros, incluindo o botão "LIMPAR"
   do aviso "Filtro do card ativo", com laranja de destaque e texto branco.
   Não altera IDs, onclicks, regras, permissões, workflow, banco, auditoria,
   SLA, validações, dashboard ou lógica operacional.
   ========================================================================== */

/* Botões de limpeza/reset/filtro ativo: destaque laranja. */
body button.btn-limpar,
body button.btn-clear,
body button.btn-reset,
body button[onclick*="limparFiltro"],
body button[onclick*="limparFiltros"],
body button[onclick*="limparBusca"],
body button[onclick*="limparFiltroCard"],
body button[onclick*="limparFiltroDashboard"],
body button[onclick*="removerFiltro"],
body button[onclick*="resetarFiltro"],
body button[onclick*="resetFiltros"],
body button[onclick*="LimparFiltro"],
body button[onclick*="LimparFiltros"],
body button[onclick*="LimparBusca"],
body button[onclick*="RemoverFiltro"],
body button[onclick*="ResetarFiltro"],
body button[onclick*="ResetFiltros"],
body .filtro-card-aviso button,
body .filtro-card-aviso .btn-secondary,
body .filtro-card-aviso .btn-dark,
body .filtro-card-aviso [role="button"]{
  background:#f59e0b!important;
  color:#ffffff!important;
  border:1px solid #f59e0b!important;
  text-shadow:0 1px 1px rgba(0,0,0,.16)!important;
  box-shadow:0 4px 12px rgba(245,158,11,.22)!important;
}
body button.btn-limpar:hover,
body button.btn-clear:hover,
body button.btn-reset:hover,
body button[onclick*="limparFiltro"]:hover,
body button[onclick*="limparFiltros"]:hover,
body button[onclick*="limparBusca"]:hover,
body button[onclick*="limparFiltroCard"]:hover,
body button[onclick*="limparFiltroDashboard"]:hover,
body button[onclick*="removerFiltro"]:hover,
body button[onclick*="resetarFiltro"]:hover,
body button[onclick*="resetFiltros"]:hover,
body button[onclick*="LimparFiltro"]:hover,
body button[onclick*="LimparFiltros"]:hover,
body button[onclick*="LimparBusca"]:hover,
body button[onclick*="RemoverFiltro"]:hover,
body button[onclick*="ResetarFiltro"]:hover,
body button[onclick*="ResetFiltros"]:hover,
body .filtro-card-aviso button:hover,
body .filtro-card-aviso .btn-secondary:hover,
body .filtro-card-aviso .btn-dark:hover,
body .filtro-card-aviso [role="button"]:hover{
  background:#d97706!important;
  color:#ffffff!important;
  border-color:#d97706!important;
  box-shadow:0 5px 14px rgba(217,119,6,.26)!important;
}
body button.btn-limpar *,
body button.btn-clear *,
body button.btn-reset *,
body button[onclick*="limparFiltro"] *,
body button[onclick*="limparFiltros"] *,
body button[onclick*="limparBusca"] *,
body button[onclick*="limparFiltroCard"] *,
body button[onclick*="limparFiltroDashboard"] *,
body button[onclick*="removerFiltro"] *,
body button[onclick*="resetarFiltro"] *,
body button[onclick*="resetFiltros"] *,
body button[onclick*="LimparFiltro"] *,
body button[onclick*="LimparFiltros"] *,
body button[onclick*="LimparBusca"] *,
body button[onclick*="RemoverFiltro"] *,
body button[onclick*="ResetarFiltro"] *,
body button[onclick*="ResetFiltros"] *,
body .filtro-card-aviso button *,
body .filtro-card-aviso .btn-secondary *,
body .filtro-card-aviso .btn-dark *{
  color:#ffffff!important;
}

/* O aviso de filtro ativo recebe borda laranja discreta para conectar visualmente com o botão LIMPAR. */
body .filtro-card-aviso{
  background:#fff7ed!important;
  color:#9a3412!important;
  border:1px solid #fed7aa!important;
}
body .filtro-card-aviso b,
body .filtro-card-aviso span{
  color:#9a3412!important;
}



/* ==========================================================================
   OBS INTERNA v294 - VER/IMPRIMIR + LOGO FIXA NO TOPO
   Ajuste exclusivamente visual/cirúrgico.
   - A tela Ver/Imprimir ganha aparência de documento executivo, com limites,
     folha interna, espaçamento e impressão mais limpa.
   - A logo STTE volta a aparecer fixa no topo branco antes do título.
   Não altera IDs, onclicks, permissões, workflow, banco, aprovações, SLA,
   auditoria, regras de budget/headcount ou validações.
   ========================================================================== */

/* Logo fixa no topo branco antes do título */
@media(max-width:620px){
}

/* Modal Ver/Imprimir com limite visual de documento */
#modalDetalhe{
  align-items:flex-start!important;
  overflow:auto!important;
  padding:28px!important;
}
#modalDetalhe .modal-content{
  max-width:1040px!important;
  width:min(1040px,96vw)!important;
  background:#eef2f5!important;
  border:1px solid #d9e2ec!important;
  border-radius:22px!important;
  overflow:auto!important;
}
#modalDetalhe h2{
  background:#ffffff!important;
  border-bottom:1px solid #d9e2ec!important;
  color:#0f172a!important;
  padding:18px 24px!important;
  font-size:20px!important;
}
#detalheConteudo{
  max-width:900px!important;
  margin:22px auto!important;
  padding:26px 30px!important;
  background:#ffffff!important;
  border:1px solid #d9e2ec!important;
  border-radius:18px!important;
  box-shadow:0 12px 32px rgba(15,59,99,.10)!important;
  color:#0f172a!important;
}
#detalheConteudo .doc-header{
  margin:0 0 18px!important;
  padding:0 0 14px!important;
  border-bottom:2px solid #051C3D!important;
}
#detalheConteudo .doc-logo{
  height:52px!important;
  max-width:150px!important;
  object-fit:contain!important;
}
#detalheConteudo .section-title{
  margin:22px 0 10px!important;
  padding:8px 10px!important;
  border-left:4px solid #051C3D!important;
  background:#f8fafc!important;
  border-radius:10px!important;
  color:#051C3D!important;
  font-size:14px!important;
}
#detalheConteudo .detail-table{
  width:100%!important;
  min-width:0!important;
  table-layout:fixed!important;
  border-collapse:separate!important;
  border-spacing:0!important;
  margin:8px 0 16px!important;
  border:1px solid #d9e2ec!important;
  border-radius:14px!important;
  overflow:hidden!important;
  background:#fff!important;
}
#detalheConteudo .detail-table th,
#detalheConteudo .detail-table td{
  border:0!important;
  border-bottom:1px solid #e2e8f0!important;
  padding:10px 12px!important;
  vertical-align:top!important;
  font-size:13px!important;
  line-height:1.42!important;
  background:#fff!important;
  border-radius:0!important;
}
#detalheConteudo .detail-table tr:last-child th,
#detalheConteudo .detail-table tr:last-child td{border-bottom:0!important}
#detalheConteudo .detail-table th{
  width:28%!important;
  background:#f8fafc!important;
  color:#334155!important;
  font-weight:900!important;
}
#detalheConteudo .detail-table td{
  width:72%!important;
  color:#0f172a!important;
  word-break:break-word!important;
  overflow-wrap:anywhere!important;
}
#detalheConteudo .status-final-full,
#detalheConteudo .status-final{
  display:block!important;
  width:100%!important;
  margin:10px 0 18px!important;
  padding:12px 14px!important;
  border-radius:12px!important;
  font-size:14px!important;
  font-weight:900!important;
  box-sizing:border-box!important;
}
#detalheConteudo .audit-list,
#detalheConteudo .timeline-pro,
#detalheConteudo .acomp-captacao{
  border-radius:14px!important;
  border:1px solid #d9e2ec!important;
  background:#f8fafc!important;
  padding:12px!important;
}
#modalDetalhe .modal-actions{
  background:#ffffff!important;
  border-top:1px solid #d9e2ec!important;
  padding:14px 24px!important;
}
#modalDetalhe .modal-actions,
#modalDetalheColaborador .modal-actions{
  flex-wrap:wrap!important;
}

/* Impressão/PDF: aparência de folha A4, sem moldura cinza do modal */
@media print{
  @page{size:A4;margin:14mm 12mm}
  body{background:#ffffff!important;padding:0!important;margin:0!important}
  #modalDetalhe.printable{
    display:block!important;
    position:static!important;
    background:#ffffff!important;
    padding:0!important;
    margin:0!important;
    overflow:visible!important;
  }
  #modalDetalhe.printable .modal-content{
    width:100%!important;
    max-width:none!important;
    background:#ffffff!important;
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
    padding:0!important;
    overflow:visible!important;
  }
  #modalDetalhe.printable h2,
  #modalDetalhe.printable .modal-actions{display:none!important}
  #modalDetalhe.printable #detalheConteudo{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding:0!important;
    border:0!important;
    border-radius:0!important;
    box-shadow:none!important;
    background:#ffffff!important;
  }
  #modalDetalhe.printable #detalheConteudo .doc-header{
    page-break-inside:avoid!important;
    break-inside:avoid!important;
  }
  #modalDetalhe.printable #detalheConteudo .section-title{
    page-break-after:avoid!important;
    break-after:avoid!important;
  }
  #modalDetalhe.printable #detalheConteudo .detail-table,
  #modalDetalhe.printable #detalheConteudo .audit-list,
  #modalDetalhe.printable #detalheConteudo .timeline-pro{
    page-break-inside:avoid!important;
    break-inside:avoid!important;
  }
  #modalDetalhe.printable #detalheConteudo .detail-table th,
  #modalDetalhe.printable #detalheConteudo .detail-table td{
    font-size:11.5px!important;
    padding:7px 8px!important;
    color:#111827!important;
    background:#ffffff!important;
  }
  #modalDetalhe.printable #detalheConteudo .detail-table th{
    background:#f1f5f9!important;
  }
}



/* ========================================================================== 
   OBS INTERNA v295 - TROCA OBRIGATÓRIA DE SENHA + MENU POR PERMISSÃO
   Ajuste cirúrgico.
   1) Corrige layout do modal de primeiro acesso/troca obrigatória de senha,
      evitando margens estouradas e conteúdo fora do cartão.
   2) Reforça a navegação lateral para exibir somente abas permitidas ao usuário,
      com fallback seguro para Dashboard quando a aba atual ficar oculta.
   Não altera banco, senha, autenticação, auditoria, SLA, workflow ou regras de negócio.
   ========================================================================== */
#modalTrocaSenha{
  align-items:center!important;
  justify-content:center!important;
  padding:18px!important;
  overflow:auto!important;
}
#modalTrocaSenha .modal-content{
  width:min(520px,94vw)!important;
  max-width:520px!important;
  max-height:calc(100vh - 36px)!important;
  overflow:auto!important;
  border-radius:22px!important;
  padding:0!important;
  box-sizing:border-box!important;
}
#modalTrocaSenha h2{
  padding:18px 22px 12px!important;
  margin:0!important;
  line-height:1.25!important;
}
#modalTrocaSenha > .modal-content > p.small{
  display:block!important;
  margin:0!important;
  padding:12px 22px 0!important;
  line-height:1.45!important;
  color:#64748b!important;
}
#modalTrocaSenha .grid{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:12px!important;
  padding:16px 22px 0!important;
  margin:0!important;
  width:100%!important;
  box-sizing:border-box!important;
}
#modalTrocaSenha .field,
#modalTrocaSenha .field input{
  width:100%!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}
#modalTrocaSenha .password-rules-box,
#modalTrocaSenha #erroTrocaSenha{
  margin:14px 22px 0!important;
  width:auto!important;
  max-width:none!important;
  box-sizing:border-box!important;
}
#modalTrocaSenha .modal-actions{
  margin:18px 0 0!important;
  padding:16px 22px!important;
  border-top:1px solid #d9e2ec!important;
  background:#f8fafc!important;
  display:flex!important;
  justify-content:flex-end!important;
  gap:10px!important;
  width:100%!important;
  box-sizing:border-box!important;
}
#modalTrocaSenha .modal-actions button{
  min-width:170px!important;
  justify-content:center!important;
}
@media(max-width:560px){
  #modalTrocaSenha{padding:10px!important;align-items:flex-start!important}
  #modalTrocaSenha .modal-content{width:100%!important;max-height:calc(100vh - 20px)!important}
  #modalTrocaSenha h2{padding:16px 16px 10px!important;font-size:18px!important}
  #modalTrocaSenha > .modal-content > p.small{padding:10px 16px 0!important}
  #modalTrocaSenha .grid{padding:14px 16px 0!important}
  #modalTrocaSenha .password-rules-box,
  #modalTrocaSenha #erroTrocaSenha{margin:12px 16px 0!important}
  #modalTrocaSenha .modal-actions{padding:14px 16px!important}
  #modalTrocaSenha .modal-actions button{width:100%!important;min-width:0!important}
}



/* ==========================================================================
   OBS INTERNA v296 - USUÁRIOS E PERFIS / SEPARAÇÃO VISUAL
   Ajuste exclusivamente visual na aba Usuários e Perfis.
   Objetivo: diferenciar claramente o bloco de usuários do bloco de perfis,
   sem alterar IDs, onclicks, permissões, regras, banco, auditoria ou fluxo.
   ========================================================================== */
.usuarios-perfis-bloco{
  margin-left:0!important;
  width:auto!important;
  padding:0 28px!important;
}
.usuarios-perfis-header{
  background:#fff!important;
  border:1px solid var(--borda)!important;
  border-left:6px solid #1F50CD!important;
  border-radius:18px!important;
  box-shadow:var(--sombra)!important;
  padding:16px 18px!important;
  margin:0 0 12px!important;
}
.usuarios-perfis-header h2{
  margin:0 0 5px!important;
  color:#051C3D!important;
  font-size:20px!important;
  font-weight:900!important;
  letter-spacing:.1px!important;
}
.usuarios-perfis-header p{
  margin:0!important;
  color:#64748b!important;
  font-size:13px!important;
  line-height:1.45!important;
}
.usuarios-perfis-header .usuarios-perfis-actions{
  display:flex!important;
  gap:8px!important;
  flex-wrap:wrap!important;
  align-items:center!important;
  margin-top:12px!important;
}
.usuarios-perfis-separador{
  height:14px!important;
}
#areaUsuarios{
  margin-left:0!important;
  width:auto!important;
  padding:0 28px 12px!important;
}
#areaUsuarios .controls{
  background:#fff!important;
  border:1px solid var(--borda)!important;
  border-radius:18px!important;
  box-shadow:var(--sombra)!important;
  padding:14px!important;
  margin:0!important;
}
#tabelaUsuarios,
#tabelaPerfis{
  margin-top:0!important;
}
@media(max-width:980px){
  .usuarios-perfis-bloco,
  #areaUsuarios{
    margin-left:0!important;
    width:100%!important;
    padding:0 10px 12px!important;
  }
}



/* ==========================================================================
   OBS INTERNA v297 - NÚCLEO VISUAL PROTEGIDO / BOTÕES
   Regra permanente do Workflow RH STTE:
   - Primário: azul STTE + texto branco.
   - Secundário: cinza claro + texto escuro.
   - Limpar/reset/aviso: laranja + texto branco.
   - Crítico: vermelho + texto branco.
   - Sucesso: verde + texto branco.
   - Ativar bloqueio: vermelho. Desativar bloqueio: laranja.
   Ajuste exclusivamente visual; não altera IDs, onclicks, permissões, workflow,
   banco, auditoria, SLA, budget/headcount, regras de vaga ou lógica operacional.
   ========================================================================== */
:root{
  --btn-primary-bg:#1F50CD;
  --btn-primary-hover:#051C3D;
  --btn-secondary-bg:#e2e8f0;
  --btn-secondary-hover:#cbd5e1;
  --btn-warning-bg:#f59e0b;
  --btn-warning-hover:#d97706;
  --btn-danger-bg:#dc2626;
  --btn-danger-hover:#b91c1c;
  --btn-success-bg:#16a34a;
  --btn-success-hover:#15803d;
}

/* Botões primários globais, incluindo Novo usuário, Novo perfil, Salvar e ações principais. */
body button.btn-primary,
body button.btn-save,
body button.btn-confirm,
body .usuarios-perfis-actions button:not(.btn-secondary):not(.btn-dark):not(.btn-danger):not(.btn-warn):not(#btnToggleBloqueioContratacoes),
body button:not(.action-btn):not(.tab):not(.subtab):not(.btn-secondary):not(.btn-dark):not(.btn-toggle-finalizados):not(.check-finalizados):not(.check-finalizados-periodo):not(.btn-forgot-password):not(.btn-danger):not(.btn-warn):not(.btn-ok):not(#btnToggleBloqueioContratacoes):not([onclick*="limpar"]):not([onclick*="Limpar"]):not([onclick*="reset"]):not([onclick*="Reset"]):not([onclick*="export"]):not([onclick*="Export"]):not([onclick*="import"]):not([onclick*="Import"]):not([onclick*="download"]):not([onclick*="Download"]):not([onclick*="baixar"]):not([onclick*="Baixar"]):not([onclick*="copiar"]):not([onclick*="Copiar"]):not([onclick*="fechar"]):not([onclick*="Fechar"]):not([onclick*="voltar"]):not([onclick*="Voltar"]):not([onclick*="restaurar"]):not([onclick*="Restaurar"]){
  background:var(--btn-primary-bg)!important;
  color:#fff!important;
  border:1px solid var(--btn-primary-bg)!important;
  text-shadow:0 1px 1px rgba(0,0,0,.14)!important;
  box-shadow:none!important;
}
body button.btn-primary:hover,
body button.btn-save:hover,
body button.btn-confirm:hover,
body .usuarios-perfis-actions button:not(.btn-secondary):not(.btn-dark):not(.btn-danger):not(.btn-warn):not(#btnToggleBloqueioContratacoes):hover,
body button:not(.action-btn):not(.tab):not(.subtab):not(.btn-secondary):not(.btn-dark):not(.btn-toggle-finalizados):not(.check-finalizados):not(.check-finalizados-periodo):not(.btn-forgot-password):not(.btn-danger):not(.btn-warn):not(.btn-ok):not(#btnToggleBloqueioContratacoes):not([onclick*="limpar"]):not([onclick*="Limpar"]):not([onclick*="reset"]):not([onclick*="Reset"]):not([onclick*="export"]):not([onclick*="Export"]):not([onclick*="import"]):not([onclick*="Import"]):not([onclick*="download"]):not([onclick*="Download"]):not([onclick*="baixar"]):not([onclick*="Baixar"]):not([onclick*="copiar"]):not([onclick*="Copiar"]):not([onclick*="fechar"]):not([onclick*="Fechar"]):not([onclick*="voltar"]):not([onclick*="Voltar"]):not([onclick*="restaurar"]):not([onclick*="Restaurar"]):hover{
  background:var(--btn-primary-hover)!important;
  color:#fff!important;
  border-color:var(--btn-primary-hover)!important;
}

/* Secundários: apoio operacional e botões claramente não principais. */
body button.btn-secondary,
body button.btn-dark,
body button.secondary,
body .modal-actions button.btn-secondary,
body .modal-actions button.btn-dark,
body .topo-acoes button.btn-secondary,
body .topo-acoes button.btn-dark,
body .perfil-grupo-head button,
body .vagas-topo-clean button,
body button[onclick*="export"],
body button[onclick*="Export"],
body button[onclick*="import"],
body button[onclick*="Import"],
body button[onclick*="download"],
body button[onclick*="Download"],
body button[onclick*="baixar"],
body button[onclick*="Baixar"],
body button[onclick*="copiar"],
body button[onclick*="Copiar"],
body button[onclick*="fechar"],
body button[onclick*="Fechar"],
body button[onclick*="voltar"],
body button[onclick*="Voltar"],
body button[onclick*="restaurar"],
body button[onclick*="Restaurar"]{
  background:var(--btn-secondary-bg)!important;
  color:#0f172a!important;
  border:1px solid #cbd5e1!important;
  text-shadow:none!important;
  box-shadow:none!important;
}
body button.btn-secondary:hover,
body button.btn-dark:hover,
body button.secondary:hover,
body .modal-actions button.btn-secondary:hover,
body .modal-actions button.btn-dark:hover,
body .topo-acoes button.btn-secondary:hover,
body .topo-acoes button.btn-dark:hover,
body .perfil-grupo-head button:hover,
body .vagas-topo-clean button:hover,
body button[onclick*="export"]:hover,
body button[onclick*="Export"]:hover,
body button[onclick*="import"]:hover,
body button[onclick*="Import"]:hover,
body button[onclick*="download"]:hover,
body button[onclick*="Download"]:hover,
body button[onclick*="baixar"]:hover,
body button[onclick*="Baixar"]:hover,
body button[onclick*="copiar"]:hover,
body button[onclick*="Copiar"]:hover,
body button[onclick*="fechar"]:hover,
body button[onclick*="Fechar"]:hover,
body button[onclick*="voltar"]:hover,
body button[onclick*="Voltar"]:hover,
body button[onclick*="restaurar"]:hover,
body button[onclick*="Restaurar"]:hover{
  background:var(--btn-secondary-hover)!important;
  color:#0f172a!important;
  border-color:#94a3b8!important;
}

/* Limpeza/reset/filtros: laranja para destacar ação de limpar sem parecer crítica. */
body button.btn-warning,
body button.btn-warn,
body button[onclick*="limpar"],
body button[onclick*="Limpar"],
body button[onclick*="reset"],
body button[onclick*="Reset"]{
  background:var(--btn-warning-bg)!important;
  color:#fff!important;
  border:1px solid var(--btn-warning-bg)!important;
  text-shadow:0 1px 1px rgba(0,0,0,.14)!important;
  box-shadow:none!important;
}
body button.btn-warning:hover,
body button.btn-warn:hover,
body button[onclick*="limpar"]:hover,
body button[onclick*="Limpar"]:hover,
body button[onclick*="reset"]:hover,
body button[onclick*="Reset"]:hover{
  background:var(--btn-warning-hover)!important;
  color:#fff!important;
  border-color:var(--btn-warning-hover)!important;
}

/* Críticos. */
body button.btn-danger,
body button.danger,
body button[onclick*="excluir"],
body button[onclick*="Excluir"],
body button[onclick*="deletar"],
body button[onclick*="Deletar"],
body button[onclick*="cancelar"],
body button[onclick*="Cancelar"]{
  background:var(--btn-danger-bg)!important;
  color:#fff!important;
  border:1px solid var(--btn-danger-bg)!important;
  text-shadow:0 1px 1px rgba(0,0,0,.14)!important;
}
body button.btn-danger:hover,
body button.danger:hover,
body button[onclick*="excluir"]:hover,
body button[onclick*="Excluir"]:hover,
body button[onclick*="deletar"]:hover,
body button[onclick*="Deletar"]:hover,
body button[onclick*="cancelar"]:hover,
body button[onclick*="Cancelar"]:hover{
  background:var(--btn-danger-hover)!important;
  color:#fff!important;
  border-color:var(--btn-danger-hover)!important;
}

/* Sucesso. */
body button.btn-ok,
body button.btn-success,
body button.green{
  background:var(--btn-success-bg)!important;
  color:#fff!important;
  border:1px solid var(--btn-success-bg)!important;
}
body button.btn-ok:hover,
body button.btn-success:hover,
body button.green:hover{
  background:var(--btn-success-hover)!important;
  color:#fff!important;
  border-color:var(--btn-success-hover)!important;
}

/* Regra de prioridade máxima do bloqueio crítico. */
body #btnToggleBloqueioContratacoes,
body #btnToggleBloqueioContratacoes.btn-danger,
body #btnToggleBloqueioContratacoes:not(.btn-warn):not([data-estado="desativar"]):not([data-bloqueado="true"]){
  background:var(--btn-danger-bg)!important;
  color:#fff!important;
  border:1px solid var(--btn-danger-bg)!important;
  text-shadow:0 1px 1px rgba(0,0,0,.14)!important;
}
body #btnToggleBloqueioContratacoes:hover,
body #btnToggleBloqueioContratacoes.btn-danger:hover,
body #btnToggleBloqueioContratacoes:not(.btn-warn):not([data-estado="desativar"]):not([data-bloqueado="true"]):hover{
  background:var(--btn-danger-hover)!important;
  color:#fff!important;
  border-color:var(--btn-danger-hover)!important;
}
body #btnToggleBloqueioContratacoes.btn-warn,
body #btnToggleBloqueioContratacoes[data-estado="desativar"],
body #btnToggleBloqueioContratacoes[data-bloqueado="true"]{
  background:var(--btn-warning-hover)!important;
  color:#fff!important;
  border:1px solid var(--btn-warning-hover)!important;
  text-shadow:0 1px 1px rgba(0,0,0,.14)!important;
}
body #btnToggleBloqueioContratacoes.btn-warn:hover,
body #btnToggleBloqueioContratacoes[data-estado="desativar"]:hover,
body #btnToggleBloqueioContratacoes[data-bloqueado="true"]:hover{
  background:#b45309!important;
  color:#fff!important;
  border-color:#b45309!important;
}

/* Conteúdo interno acompanha a cor correta. */
body button.btn-primary *,
body button.btn-save *,
body button.btn-confirm *,
body button.btn-danger *,
body button.btn-warn *,
body button.btn-warning *,
body button.btn-ok *,
body button.btn-success *,
body .usuarios-perfis-actions button:not(.btn-secondary):not(.btn-dark) *,
body button[onclick*="limpar"] *,
body button[onclick*="Limpar"] *,
body button[onclick*="reset"] *,
body button[onclick*="Reset"] *,
body #btnToggleBloqueioContratacoes *{
  color:#fff!important;
}
body button.btn-secondary *,
body button.btn-dark *,
body .perfil-grupo-head button *,
body .vagas-topo-clean button *,
body button[onclick*="export"] *,
body button[onclick*="Export"] *,
body button[onclick*="import"] *,
body button[onclick*="Import"] *,
body button[onclick*="download"] *,
body button[onclick*="Download"] *,
body button[onclick*="baixar"] *,
body button[onclick*="Baixar"] *,
body button[onclick*="copiar"] *,
body button[onclick*="Copiar"] *,
body button[onclick*="fechar"] *,
body button[onclick*="Fechar"] *,
body button[onclick*="voltar"] *,
body button[onclick*="Voltar"] *,
body button[onclick*="restaurar"] *,
body button[onclick*="Restaurar"] *{
  color:#0f172a!important;
}

/* Botões iconográficos e navegação preservados. */
body .action-btn{ text-shadow:none!important; }
body .tab, body .subtab{ text-shadow:none!important; }

/* ========================================================================== 
   v2.0.121 - Auditoria harmonizada
   Somente apresentação: filtros equilibrados, categorias estáveis e leitura
   executiva. A trilha persistida e os contratos de auditoria não são alterados.
   ========================================================================== */
.auditoria-v20121 .audit-export-actions-v20121{display:flex!important;justify-content:flex-end!important;align-items:center!important;gap:8px!important;margin:0 0 4px!important}
.auditoria-v20121 .subtabs{margin:12px 0!important}
.auditoria-v20121 .audit-toolbar-v20121{display:grid!important;grid-template-columns:150px 150px minmax(280px,1.6fr) minmax(180px,.8fr) minmax(185px,.8fr) auto!important;gap:10px!important;align-items:end!important;padding:14px!important;margin:0 0 14px!important;background:#fff!important;border:1px solid #d8e3ef!important;border-radius:14px!important;box-shadow:0 5px 18px rgba(15,59,99,.06)!important}
.auditoria-v20121 .audit-toolbar-v20121 .field{min-width:0!important;margin:0!important}
.auditoria-v20121 .audit-toolbar-v20121 input,.auditoria-v20121 .audit-toolbar-v20121 select{width:100%!important;min-width:0!important;height:42px!important;box-sizing:border-box!important}
.auditoria-v20121 .audit-filter-clear{height:42px!important;white-space:nowrap!important;padding-inline:16px!important}
.auditoria-v20121 .audit-table-wrap-v20121{overflow-x:auto!important;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important}
.auditoria-v20121 .audit-table-v20121{width:100%!important;min-width:980px!important;table-layout:fixed!important;border-collapse:separate!important;border-spacing:0 8px!important;background:transparent!important}
.auditoria-v20121 .audit-table-v20121 th{position:static!important;background:transparent!important;color:#5b6f89!important;border:0!important;padding:0 12px 6px!important;font-size:12px!important;font-weight:800!important;text-transform:none!important;letter-spacing:0!important;text-align:left!important}
.auditoria-v20121 .audit-table-v20121 th:nth-child(1){width:124px!important}.auditoria-v20121 .audit-table-v20121 th:nth-child(2){width:170px!important}.auditoria-v20121 .audit-table-v20121 th:nth-child(3){width:auto!important}.auditoria-v20121 .audit-table-v20121 th:nth-child(4){width:150px!important}.auditoria-v20121 .audit-table-v20121 th:nth-child(5){width:112px!important}
.auditoria-v20121 .audit-event-row td{background:#fff!important;border-top:1px solid #dbe5ef!important;border-bottom:1px solid #dbe5ef!important;padding:13px 12px!important;vertical-align:middle!important;color:#172033!important;line-height:1.35!important}
.auditoria-v20121 .audit-event-row td:first-child{border-left:4px solid var(--audit-category-color,#64748b)!important;border-radius:12px 0 0 12px!important}.auditoria-v20121 .audit-event-row td:last-child{border-right:1px solid #dbe5ef!important;border-radius:0 12px 12px 0!important}
.auditoria-v20121 .audit-event-row:hover td{background:#fbfdff!important}
.audit-category-badge{display:inline-flex!important;align-items:center!important;max-width:100%!important;padding:6px 10px!important;border-radius:999px!important;border:1px solid currentColor!important;font-size:11px!important;font-weight:900!important;line-height:1.15!important;white-space:normal!important;text-align:center!important}
.audit-cat-solicitacoes{--audit-category-color:#2563eb}.audit-category-badge.audit-cat-solicitacoes{background:#dbeafe!important;color:#1d4ed8!important}
.audit-cat-colaboradores{--audit-category-color:#059669}.audit-category-badge.audit-cat-colaboradores{background:#d1fae5!important;color:#047857!important}
.audit-cat-contratacao{--audit-category-color:#7c3aed}.audit-category-badge.audit-cat-contratacao{background:#ede9fe!important;color:#6d28d9!important}
.audit-cat-desligamento{--audit-category-color:#ea580c}.audit-category-badge.audit-cat-desligamento{background:#ffedd5!important;color:#c2410c!important}
.audit-cat-salarios{--audit-category-color:#ca8a04}.audit-category-badge.audit-cat-salarios{background:#fef9c3!important;color:#854d0e!important}
.audit-cat-usuarios{--audit-category-color:#0369a1}.audit-category-badge.audit-cat-usuarios{background:#e0f2fe!important;color:#075985!important}
.audit-cat-perfis{--audit-category-color:#9333ea}.audit-category-badge.audit-cat-perfis{background:#f3e8ff!important;color:#7e22ce!important}
.audit-cat-seguranca{--audit-category-color:#dc2626}.audit-category-badge.audit-cat-seguranca{background:#fee2e2!important;color:#b91c1c!important}
.audit-cat-configuracoes{--audit-category-color:#475569}.audit-category-badge.audit-cat-configuracoes{background:#e2e8f0!important;color:#334155!important}
.audit-cat-backup{--audit-category-color:#0891b2}.audit-category-badge.audit-cat-backup{background:#cffafe!important;color:#0e7490!important}
.audit-cat-notificacoes{--audit-category-color:#db2777}.audit-category-badge.audit-cat-notificacoes{background:#fce7f3!important;color:#be185d!important}
.audit-cat-sistema{--audit-category-color:#64748b}.audit-category-badge.audit-cat-sistema{background:#f1f5f9!important;color:#475569!important}
.audit-date{display:flex!important;flex-direction:column!important;gap:2px!important;white-space:nowrap!important;font-size:12px!important}.audit-date strong{font-size:13px!important;color:#1e293b!important}.audit-date span{color:#64748b!important;font-variant-numeric:tabular-nums!important}
.audit-summary{display:-webkit-box!important;-webkit-box-orient:vertical!important;-webkit-line-clamp:2!important;overflow:hidden!important;font-size:13px!important;line-height:1.45!important;color:#172033!important;overflow-wrap:anywhere!important}.audit-author{display:block!important;font-size:12px!important;font-weight:800!important;color:#334155!important;overflow-wrap:anywhere!important}
.audit-result{display:inline-flex!important;align-items:center!important;justify-content:center!important;padding:5px 9px!important;border-radius:999px!important;font-size:11px!important;font-weight:900!important;white-space:nowrap!important}.audit-result-ok{background:#dcfce7!important;color:#166534!important}.audit-result-bad{background:#fee2e2!important;color:#991b1b!important}.audit-result-info{background:#e0f2fe!important;color:#075985!important}
.audit-details{margin-top:7px!important}.audit-details summary{display:inline-flex!important;cursor:pointer!important;color:#0d67ae!important;font-size:11px!important;font-weight:800!important;list-style:none!important}.audit-details summary::-webkit-details-marker{display:none}.audit-details summary:after{content:' +'!important;margin-left:3px!important}.audit-details[open] summary:after{content:' −'!important}.audit-details>div{margin-top:8px!important;padding:8px 10px!important;border-left:3px solid var(--audit-category-color,#94a3b8)!important;background:#f8fafc!important;border-radius:0 8px 8px 0!important}.audit-details p{margin:3px 0!important;font-size:11px!important;line-height:1.4!important;color:#475569!important;overflow-wrap:anywhere!important}
@media(max-width:1180px){.auditoria-v20121 .audit-toolbar-v20121{grid-template-columns:repeat(2,minmax(150px,1fr)) minmax(260px,2fr)!important}.auditoria-v20121 .audit-filter-search{grid-column:span 1!important}.auditoria-v20121 .audit-filter-clear{justify-self:end!important}}
@media(max-width:720px){.auditoria-v20121 .audit-export-actions-v20121{justify-content:stretch!important}.auditoria-v20121 .audit-export-actions-v20121 button{flex:1 1 auto!important}.auditoria-v20121 .audit-toolbar-v20121{grid-template-columns:1fr!important;padding:12px!important}.auditoria-v20121 .audit-filter-search,.auditoria-v20121 .audit-filter-clear{grid-column:auto!important;width:100%!important}.auditoria-v20121 .audit-table-wrap-v20121{overflow:visible!important}.auditoria-v20121 .audit-table-v20121{display:block!important;min-width:0!important}.auditoria-v20121 .audit-table-v20121 thead{display:none!important}.auditoria-v20121 .audit-table-v20121 tbody{display:block!important}.auditoria-v20121 .audit-event-row{display:grid!important;grid-template-columns:1fr 1fr!important;margin-bottom:10px!important;border:1px solid #dbe5ef!important;border-left:4px solid var(--audit-category-color,#64748b)!important;border-radius:12px!important;background:#fff!important;overflow:hidden!important}.auditoria-v20121 .audit-event-row td{display:block!important;border:0!important;border-radius:0!important;padding:8px 11px!important}.auditoria-v20121 .audit-event-row td:first-child{border:0!important;border-radius:0!important}.auditoria-v20121 .audit-event-row td:before{content:attr(data-label)!important;display:block!important;margin-bottom:4px!important;font-size:10px!important;font-weight:800!important;color:#718096!important;text-transform:uppercase!important}.auditoria-v20121 .audit-description-cell{grid-column:1/-1!important;grid-row:2!important;border-top:1px solid #edf2f7!important;border-bottom:1px solid #edf2f7!important}.auditoria-v20121 .audit-event-row td:nth-child(4),.auditoria-v20121 .audit-event-row td:nth-child(5){grid-row:3!important}.audit-category-badge{justify-content:center!important}.audit-date{white-space:normal!important}}

/* Desabilitados neutros e legíveis. */
body button:disabled,
body button[disabled]{
  background:#cbd5e1!important;
  color:#64748b!important;
  border-color:#cbd5e1!important;
  text-shadow:none!important;
  opacity:1!important;
}
body button:disabled *,
body button[disabled] *{ color:#64748b!important; }



/* ==========================================================================
   OBS INTERNA v298 - BOTÃO RESTAURAR PERMISSÕES DO PERFIL
   Ação administrativa de restauração deve seguir o padrão de aviso: laranja
   com texto branco. Regra de prioridade para não herdar estilos antigos.
   ========================================================================== */
#btnRestaurarPermissoesPerfil,
body #btnRestaurarPermissoesPerfil,
.modal #btnRestaurarPermissoesPerfil{
  background:#d97706!important;
  color:#ffffff!important;
  border:1px solid #d97706!important;
  text-shadow:0 1px 1px rgba(0,0,0,.16)!important;
  box-shadow:0 2px 8px rgba(217,119,6,.18)!important;
}
#btnRestaurarPermissoesPerfil:hover,
body #btnRestaurarPermissoesPerfil:hover,
.modal #btnRestaurarPermissoesPerfil:hover{
  background:#b45309!important;
  color:#ffffff!important;
  border-color:#b45309!important;
}
#btnRestaurarPermissoesPerfil *{color:#ffffff!important;}

/* OBS INTERNA v298 - ALERTA DE SINCRONIZAÇÃO
   Estilo reservado para futuras mensagens de diagnóstico sem alterar telas. */
.sync-server-note{font-size:11px;color:#64748b;margin-top:6px;line-height:1.35}


/* ==========================================================================
   OBS INTERNA v315 - USUÁRIOS / FILTRO DO QUADRANTE USUÁRIOS
   Alteração exclusivamente visual/client-side no quadrante Usuários.
   Permite buscar por nome, login, perfil aplicado, regional ou equipe sem
   alterar banco, servidor, permissões, cadastro, auditoria ou regras de perfil.
   ========================================================================== */
.usuarios-filtro-box{
  background:#fff!important;
  border:1px solid var(--borda)!important;
  border-radius:18px!important;
  box-shadow:var(--sombra)!important;
  padding:14px!important;
  margin:0 0 12px!important;
  display:grid!important;
  grid-template-columns:minmax(260px,1fr) auto!important;
  gap:10px!important;
  align-items:center!important;
}
.usuarios-filtro-box input{
  width:100%!important;
  min-height:38px!important;
  background:#fff!important;
}
.usuarios-filtro-box button{
  min-height:38px!important;
  white-space:nowrap!important;
}
.usuarios-filtro-info{
  grid-column:1 / -1;
  color:#64748b!important;
  font-size:12px!important;
  line-height:1.35!important;
}
@media(max-width:720px){
  .usuarios-filtro-box{grid-template-columns:1fr!important}
  .usuarios-filtro-box button{width:100%!important;justify-content:center!important}
}


/* ==========================================================================
   OBS INTERNA v305 - NOVA SOLICITAÇÃO / CLIQUE E MODAL PROTEGIDOS
   Correção cirúrgica do botão Nova Solicitação após proteção global de modais.
   Garante que a área de ações receba clique, que o botão fique acima de camadas
   visuais e que o modal principal continue abrindo sem fechar por clique externo.
   Não altera workflow, permissões, formulários, budget/headcount, auditoria ou banco.
   ========================================================================== */
#areaSolicitacoes .topo-operacional,
#areaSolicitacoes .topo-acoes{
  position:relative!important;
  z-index:20!important;
  pointer-events:auto!important;
}
#areaSolicitacoes .topo-acoes button[onclick*="novaSolicitacao"]{
  position:relative!important;
  z-index:25!important;
  pointer-events:auto!important;
  cursor:pointer!important;
}
.modal,
.modal .modal-content,
.modal .modal-actions,
.modal .modal-actions button{
  pointer-events:auto!important;
}
#modalSolicitacao{
  z-index:320!important;
}

/* OBS INTERNA v2.0.88 - GUARDA ESTRUTURAL DO MODAL NOVA SOLICITACAO
   O modal operacional permanece invisivel por padrao mesmo que algum codigo legado
   tente alterar apenas style.display. Somente abrirModal() pode marcar data-stte-open=1. */
#modalSolicitacao:not([data-stte-open="1"]){
  display:none!important;
  visibility:hidden!important;
  pointer-events:none!important;
}
#modalSolicitacao[data-stte-open="1"]{
  display:flex!important;
  visibility:visible!important;
  pointer-events:auto!important;
}


/* OBS INTERNA v314 - DP / BOTÕES APLICAR SALÁRIO E APLICAR CARGO:
   Correção cirúrgica: garante que solicitações de Aumento Salarial e Alteração de Cargo
   aprovadas fiquem como pendência operacional do DP e exibam os botões curtos no status.
   Não altera banco, permissões gerais, budget/headcount, vagas provisórias ou demais fluxos. */

/* OBS INTERNA v327 - IDENTIFICAÇÃO GLOBAL DA VERSÃO:
   Atualiza título da aba do navegador, rodapé, bloco de controle de versão,
   metadados de backup/exportação e sincronização local. Alteração visual/metadados,
   sem impacto em regras, banco, permissões, workflow, auditoria ou validações. */


/* OBS INTERNA historico_v_antigo - CORREÇÃO DEFINITIVA NOVA SOLICITAÇÃO:
   Helper global de campo complementar é carregado antecipadamente para impedir
   erro setValorCampoComplementar is not defined no Render/cache. */


/* OBS INTERNA v332 - AVISO GLOBAL DE ATUALIZAÇÃO DO SISTEMA
   Banner não modal para avisar todos os usuários logados, sem travar formulários. */
.aviso-atualizacao-global{position:fixed!important;left:50%!important;top:18px!important;transform:translateX(-50%)!important;z-index:2147483000!important;width:min(1040px,calc(100% - 24px))!important;background:linear-gradient(135deg,#7f1d1d,#dc2626 55%,#f97316)!important;border:4px solid #fef08a!important;border-radius:18px!important;box-shadow:0 28px 80px rgba(127,29,29,.48),0 0 0 9999px rgba(15,23,42,.16)!important;padding:18px 20px!important;display:none!important;gap:16px!important;align-items:flex-start!important;color:#ffffff!important;animation:pulseAvisoAtualizacaoGlobal 1.25s ease-in-out infinite alternate!important}
.aviso-atualizacao-global.ativo{display:flex!important}
.aviso-atualizacao-global .aviso-ico{font-size:34px!important;line-height:1!important;filter:drop-shadow(0 2px 3px rgba(0,0,0,.28))!important}
.aviso-atualizacao-global .aviso-conteudo{flex:1!important;font-size:15px!important;line-height:1.48!important;font-weight:700!important;text-shadow:0 1px 2px rgba(0,0,0,.22)!important}
.aviso-atualizacao-global .aviso-conteudo b{display:block!important;font-size:20px!important;margin-bottom:5px!important;color:#ffffff!important;text-transform:uppercase!important;letter-spacing:.02em!important}
.aviso-atualizacao-global .aviso-meta{font-size:12px!important;color:#fff7ed!important;margin-top:7px!important;font-weight:700!important;opacity:.95!important}
.aviso-atualizacao-global .aviso-acoes{display:flex!important;gap:8px!important;align-items:center!important}
.aviso-atualizacao-global button{white-space:nowrap!important;background:#ffffff!important;color:#991b1b!important;border:2px solid #ffffff!important;font-weight:900!important;border-radius:10px!important;padding:9px 13px!important}
@keyframes pulseAvisoAtualizacaoGlobal{from{box-shadow:0 22px 64px rgba(127,29,29,.42),0 0 0 9999px rgba(15,23,42,.10)}to{box-shadow:0 30px 90px rgba(220,38,38,.58),0 0 0 9999px rgba(15,23,42,.20)}}
#btnAtivarAvisoAtualizacao.btn-warn{background:#f97316!important;border-color:#ea580c!important;color:#ffffff!important}
#btnDesativarAvisoAtualizacao.btn-secondary{background:#e5e7eb!important;border-color:#cbd5e1!important;color:#111827!important}
#statusAvisoAtualizacaoSistema b.status-ativo{color:#9a3412}
#statusAvisoAtualizacaoSistema b.status-inativo{color:#166534}

/* OBS INTERNA v332 - prioridade máxima definitiva do botão de bloqueio crítico.
   Estado inativo/ação Ativar = vermelho. Estado ativo/ação Desativar = laranja. */
body #btnToggleBloqueioContratacoes.btn-danger,
body #btnToggleBloqueioContratacoes[data-bloqueado="false"]{background:#dc2626!important;border-color:#b91c1c!important;color:#ffffff!important}
body #btnToggleBloqueioContratacoes.btn-danger:hover,
body #btnToggleBloqueioContratacoes[data-bloqueado="false"]:hover{background:#b91c1c!important;border-color:#991b1b!important;color:#ffffff!important}
body #btnToggleBloqueioContratacoes.btn-warn,
body #btnToggleBloqueioContratacoes[data-bloqueado="true"]{background:#f97316!important;border-color:#ea580c!important;color:#ffffff!important}
body #btnToggleBloqueioContratacoes.btn-warn:hover,
body #btnToggleBloqueioContratacoes[data-bloqueado="true"]:hover{background:#ea580c!important;border-color:#c2410c!important;color:#ffffff!important}



/* ==========================================================================
   OBS INTERNA v333 - COR DEFINITIVA DOS CONTROLES CRÍTICOS
   Varredura final: esta regra fica no fim do CSS para impedir sobrescrita por
   classes globais, estilos herdados ou regras antigas. Não altera fluxo, login,
   salvamento, PostgreSQL, auditoria, permissões, budget/headcount ou endpoints.
   Regra visual protegida:
   - Botão Ativar bloqueio / estado inativo = vermelho.
   - Botão Desativar bloqueio / estado ativo = laranja.
   ========================================================================== */
body button#btnToggleBloqueioContratacoes[data-bloqueado="false"],
body button#btnToggleBloqueioContratacoes[data-estado-bloqueio="inativo"],
body button#btnToggleBloqueioContratacoes.btn-bloqueio-ativar{
  background:#dc2626!important;
  background-color:#dc2626!important;
  color:#ffffff!important;
  border:1px solid #b91c1c!important;
  box-shadow:none!important;
}
body button#btnToggleBloqueioContratacoes[data-bloqueado="false"]:hover,
body button#btnToggleBloqueioContratacoes[data-estado-bloqueio="inativo"]:hover,
body button#btnToggleBloqueioContratacoes.btn-bloqueio-ativar:hover{
  background:#b91c1c!important;
  background-color:#b91c1c!important;
  color:#ffffff!important;
  border-color:#991b1b!important;
}
body button#btnToggleBloqueioContratacoes[data-bloqueado="true"],
body button#btnToggleBloqueioContratacoes[data-estado-bloqueio="ativo"],
body button#btnToggleBloqueioContratacoes.btn-bloqueio-desativar{
  background:#f97316!important;
  background-color:#f97316!important;
  color:#ffffff!important;
  border:1px solid #ea580c!important;
  box-shadow:none!important;
}
body button#btnToggleBloqueioContratacoes[data-bloqueado="true"]:hover,
body button#btnToggleBloqueioContratacoes[data-estado-bloqueio="ativo"]:hover,
body button#btnToggleBloqueioContratacoes.btn-bloqueio-desativar:hover{
  background:#ea580c!important;
  background-color:#ea580c!important;
  color:#ffffff!important;
  border-color:#c2410c!important;
}
body button#btnToggleBloqueioContratacoes,
body button#btnToggleBloqueioContratacoes *{
  color:#ffffff!important;
}


/* ========================================================================== 
   OBS INTERNA v334 - CORES DEFINITIVAS DOS BOTÕES CRÍTICOS
   Correção feita na origem + CSS final para evitar conflito com padrão global azul.
   - Aviso global de atualização: ativar = laranja / desativar = cinza.
   - Bloqueio de contratações: ativar = vermelho / desativar = laranja.
   ========================================================================== */
body button#btnAtivarAvisoAtualizacao,
body button#btnAtivarAvisoAtualizacao.btn-warn{
  background:#f97316!important;
  background-color:#f97316!important;
  border-color:#ea580c!important;
  color:#ffffff!important;
}
body button#btnAtivarAvisoAtualizacao:hover,
body button#btnAtivarAvisoAtualizacao.btn-warn:hover{
  background:#ea580c!important;
  background-color:#ea580c!important;
  border-color:#c2410c!important;
  color:#ffffff!important;
}
body button#btnDesativarAvisoAtualizacao,
body button#btnDesativarAvisoAtualizacao.btn-secondary{
  background:#e5e7eb!important;
  background-color:#e5e7eb!important;
  border-color:#cbd5e1!important;
  color:#111827!important;
}
body button#btnDesativarAvisoAtualizacao:hover,
body button#btnDesativarAvisoAtualizacao.btn-secondary:hover{
  background:#cbd5e1!important;
  background-color:#cbd5e1!important;
  border-color:#94a3b8!important;
  color:#111827!important;
}
body button#btnToggleBloqueioContratacoes[data-bloqueado="false"],
body button#btnToggleBloqueioContratacoes[data-estado-bloqueio="inativo"],
body button#btnToggleBloqueioContratacoes.btn-bloqueio-ativar,
body button#btnToggleBloqueioContratacoes.btn-danger{
  background:#dc2626!important;
  background-color:#dc2626!important;
  border-color:#b91c1c!important;
  color:#ffffff!important;
}
body button#btnToggleBloqueioContratacoes[data-bloqueado="false"]:hover,
body button#btnToggleBloqueioContratacoes[data-estado-bloqueio="inativo"]:hover,
body button#btnToggleBloqueioContratacoes.btn-bloqueio-ativar:hover,
body button#btnToggleBloqueioContratacoes.btn-danger:hover{
  background:#b91c1c!important;
  background-color:#b91c1c!important;
  border-color:#991b1b!important;
  color:#ffffff!important;
}
body button#btnToggleBloqueioContratacoes[data-bloqueado="true"],
body button#btnToggleBloqueioContratacoes[data-estado-bloqueio="ativo"],
body button#btnToggleBloqueioContratacoes.btn-bloqueio-desativar,
body button#btnToggleBloqueioContratacoes.btn-warn{
  background:#f97316!important;
  background-color:#f97316!important;
  border-color:#ea580c!important;
  color:#ffffff!important;
}
body button#btnToggleBloqueioContratacoes[data-bloqueado="true"]:hover,
body button#btnToggleBloqueioContratacoes[data-estado-bloqueio="ativo"]:hover,
body button#btnToggleBloqueioContratacoes.btn-bloqueio-desativar:hover,
body button#btnToggleBloqueioContratacoes.btn-warn:hover{
  background:#ea580c!important;
  background-color:#ea580c!important;
  border-color:#c2410c!important;
  color:#ffffff!important;
}
body button#btnToggleBloqueioContratacoes *,
body button#btnAtivarAvisoAtualizacao *{color:#ffffff!important;}
body button#btnDesativarAvisoAtualizacao *{color:#111827!important;}


/* ==========================================================================
   OBS INTERNA v352 - PADRONIZAÇÃO VISUAL DE TEXTO EM MAIÚSCULAS
   Regra visual complementar: campos de texto operacional aparecem em maiúsculas
   durante a digitação. Exclui e-mail, login, senha, URLs, datas, números,
   telefones, CPF e campos técnicos para não comprometer autenticação, Render,
   PostgreSQL, endpoints, hashes, tokens ou chaves internas.
   ========================================================================== */
input:not([type="email"]):not([type="password"]):not([type="date"]):not([type="number"]):not([type="file"]):not([id*="Email"]):not([id*="email"]):not([id*="Login"]):not([id*="login"]):not([id*="Senha"]):not([id*="senha"]),
textarea{
  text-transform:uppercase;
}
input[id*="Email"],input[id*="email"],input[id*="Login"],input[id*="login"],input[id*="Senha"],input[id*="senha"],input[type="email"],input[type="password"]{
  text-transform:none!important;
}



/* ==========================================================================
   OBS INTERNA v354 - COLABORADORES / RESUMO DO QUADRO POR REGIONAL
   Atualização cirúrgica: adiciona botão e modal informativo na aba Colaboradores
   para contagem gerencial do quadro. Não altera cadastro, edição, exclusão,
   importação, salvamento, login, reset de senha, refresh, PostgreSQL, endpoints,
   permissões ou regras de workflow.
   ========================================================================== */
.btn-resumo-quadro-colaboradores{
  background:#1F50CD!important;
  color:#ffffff!important;
  border:1px solid #1F50CD!important;
  min-height:38px!important;
  white-space:nowrap!important;
}
.btn-resumo-quadro-colaboradores:hover{
  background:#051C3D!important;
  border-color:#051C3D!important;
  color:#ffffff!important;
}
.resumo-quadro-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(160px,1fr));
  gap:12px;
  padding:20px!important;
}
.resumo-quadro-card{
  background:#ffffff;
  border:1px solid #d9e2ec;
  border-radius:16px;
  padding:14px;
  box-shadow:0 6px 18px rgba(15,59,99,.06);
}
.resumo-quadro-card span{
  display:block;
  color:#64748b;
  font-size:12px;
  font-weight:900;
  text-transform:uppercase;
  letter-spacing:.25px;
  margin-bottom:6px;
}
.resumo-quadro-card b{
  display:block;
  color:#051C3D;
  font-size:28px;
  line-height:1;
}
.resumo-quadro-nota{
  margin:0 20px 20px!important;
  background:#f8fafc;
  border:1px solid #d9e2ec;
  border-radius:14px;
  padding:12px;
  color:#475569;
  font-size:12px;
  line-height:1.45;
}

.resumo-quadro-filtros{margin:0 20px 14px!important;background:#f8fafc;border:1px solid #d9e2ec;border-radius:14px;padding:12px;display:flex;gap:10px;align-items:end;flex-wrap:wrap}
.resumo-quadro-filtros .field{min-width:260px;flex:1}
.resumo-quadro-filtros label{display:block;font-size:12px;font-weight:900;color:#334155;margin-bottom:5px}
.resumo-quadro-filtros select{width:100%;background:#fff}
.resumo-quadro-subtitulo{margin:18px 20px 8px!important;color:#051C3D;font-size:14px;font-weight:900;border-left:4px solid #051C3D;padding-left:8px}
.resumo-quadro-tabela-wrap{margin:0 20px 20px!important;overflow:auto;border:1px solid #d9e2ec;border-radius:16px;background:#fff}
.resumo-quadro-tabela{width:100%!important;min-width:780px!important;border-collapse:collapse!important;border-spacing:0!important;background:#fff!important}
.resumo-quadro-tabela th{background:#f8fafc!important;color:#334155!important;font-size:12px!important;font-weight:900!important;padding:10px!important;border-bottom:1px solid #d9e2ec!important;position:static!important;text-align:center!important}
.resumo-quadro-tabela th:first-child{text-align:left!important}
.resumo-quadro-tabela td{background:#fff!important;border-bottom:1px solid #eef2f7!important;padding:10px!important;text-align:center!important;font-size:13px!important;border-radius:0!important}
.resumo-quadro-tabela td:first-child{text-align:left!important;font-weight:900;color:#051C3D!important;border-left:0!important}
.resumo-quadro-tabela tr:last-child td{border-bottom:0!important}
.resumo-quadro-destaque-regional{margin:0 20px 12px!important;color:#64748b;font-size:12px;font-weight:800;line-height:1.35}

@media(max-width:820px){.resumo-quadro-grid{grid-template-columns:1fr!important}.resumo-quadro-filtros{display:block}.resumo-quadro-filtros .field{min-width:0}}



/* ==========================================================================
   OBS INTERNA v355 - COLABORADORES / BOTÃO INDICADORES RH
   Painel gerencial somente leitura para turnover, contratações e desligamentos.
   Não grava dados, não chama save(), não altera colaboradores, login, reset,
   refresh, importação, PostgreSQL, endpoints, auditoria ou regras críticas.
   ========================================================================== */
.btn-indicadores-rh-colaboradores{
  background:#0f766e!important;
  color:#ffffff!important;
  border:1px solid #0f766e!important;
  text-shadow:none!important;
}
.btn-indicadores-rh-colaboradores:hover{
  background:#115e59!important;
  color:#ffffff!important;
  border-color:#115e59!important;
}
.indicadores-rh-nota{
  margin:0 20px 14px!important;
  background:#f0fdfa!important;
  border:1px solid #99f6e4!important;
  color:#115e59!important;
  border-radius:14px!important;
  padding:12px!important;
  font-size:12px!important;
  font-weight:800!important;
  line-height:1.45!important;
}
.indicadores-rh-filtros{
  margin:0 20px 14px!important;
  background:#f8fafc!important;
  border:1px solid #d9e2ec!important;
  border-radius:14px!important;
  padding:12px!important;
  display:grid!important;
  grid-template-columns:repeat(4,minmax(160px,1fr))!important;
  gap:10px!important;
  align-items:end!important;
}
.indicadores-rh-filtros .field label{display:block!important;font-size:12px!important;font-weight:900!important;color:#334155!important;margin-bottom:5px!important}
.indicadores-rh-filtros input,.indicadores-rh-filtros select{width:100%!important;background:#fff!important}
.indicadores-rh-grid{
  margin:0 20px 14px!important;
  display:grid!important;
  grid-template-columns:repeat(3,minmax(150px,1fr))!important;
  gap:12px!important;
}
.indicadores-rh-card{
  background:#fff!important;
  border:1px solid #d9e2ec!important;
  border-radius:18px!important;
  padding:16px!important;
  box-shadow:0 8px 24px rgba(15,59,99,.08)!important;
}
.indicadores-rh-card span{display:block!important;color:#64748b!important;font-size:12px!important;font-weight:900!important;text-transform:uppercase!important;letter-spacing:.25px!important;margin-bottom:8px!important}
.indicadores-rh-card b{display:block!important;color:#051C3D!important;font-size:28px!important;font-weight:900!important}
.indicadores-rh-info{margin:0 20px 12px!important;color:#64748b!important;font-size:12px!important;font-weight:800!important;line-height:1.35!important}
.indicadores-rh-tabela-wrap{margin:0 20px 20px!important;overflow:auto!important;border:1px solid #d9e2ec!important;border-radius:16px!important;background:#fff!important}
.indicadores-rh-tabela{width:100%!important;min-width:760px!important;border-collapse:collapse!important;border-spacing:0!important;background:#fff!important}
.indicadores-rh-tabela th{background:#f8fafc!important;color:#334155!important;font-size:12px!important;font-weight:900!important;padding:10px!important;border-bottom:1px solid #d9e2ec!important;position:static!important;text-align:center!important}
.indicadores-rh-tabela th:first-child{text-align:left!important}
.indicadores-rh-tabela td{background:#fff!important;border-bottom:1px solid #eef2f7!important;padding:10px!important;text-align:center!important;font-size:13px!important;border-radius:0!important}
.indicadores-rh-tabela td:first-child{text-align:left!important;font-weight:900!important;color:#051C3D!important;border-left:0!important}
.indicadores-rh-tabela tr:last-child td{border-bottom:0!important}
@media(max-width:980px){.indicadores-rh-filtros{grid-template-columns:repeat(2,minmax(140px,1fr))!important}.indicadores-rh-grid{grid-template-columns:1fr!important}}
@media(max-width:620px){.indicadores-rh-filtros{grid-template-columns:1fr!important}}



/* ========================================================================== 
   OBS INTERNA v356 - MODO MANUTENÇÃO SEGURO
   Camada visual e operacional para bloquear usuários comuns durante atualização.
   Não desliga backend, não bloqueia PostgreSQL, não bloqueia /api/health e não
   impede Administrador Master de entrar, testar e desativar a manutenção.
   ========================================================================== */
.manutencao-overlay-v356{position:fixed!important;inset:0!important;z-index:2147483200!important;background:linear-gradient(135deg,#0f172a,#051C3D)!important;color:#ffffff!important;display:none!important;align-items:center!important;justify-content:center!important;padding:22px!important;text-align:center!important}
.manutencao-overlay-v356.ativo{display:flex!important}
.manutencao-card-v356{width:min(720px,94vw)!important;background:#ffffff!important;color:#0f172a!important;border-radius:24px!important;padding:34px 30px!important;box-shadow:0 30px 90px rgba(0,0,0,.35)!important;border:1px solid rgba(255,255,255,.25)!important}
.manutencao-card-v356 h1{font-size:28px!important;margin:0 0 10px!important;color:#051C3D!important}
.manutencao-card-v356 p{font-size:15px!important;line-height:1.55!important;color:#475569!important;margin:8px 0!important}
.manutencao-card-v356 .manutencao-ico-v356{font-size:48px!important;margin-bottom:10px!important}
.manutencao-card-v356 .manutencao-motivo-v356{margin-top:14px!important;padding:12px!important;border-radius:14px!important;background:#fff7ed!important;border:1px solid #fed7aa!important;color:#9a3412!important;font-weight:800!important}
.manutencao-card-v356 .manutencao-meta-v356{font-size:12px!important;color:#64748b!important;margin-top:12px!important}
.manutencao-admin-banner-v356{display:none;position:fixed!important;left:50%!important;bottom:18px!important;transform:translateX(-50%)!important;z-index:2147482500!important;background:#fff7ed!important;color:#9a3412!important;border:2px solid #f97316!important;border-radius:14px!important;padding:10px 14px!important;box-shadow:0 12px 32px rgba(15,23,42,.22)!important;font-size:13px!important;font-weight:900!important;gap:10px!important;align-items:center!important}
.manutencao-admin-banner-v356.ativo{display:flex!important}
.manutencao-admin-banner-v356 button{background:#f97316!important;color:#fff!important;border:1px solid #ea580c!important;border-radius:10px!important;padding:8px 10px!important;font-size:12px!important}
body button#btnToggleManutencaoSistema[data-manutencao="false"],body button#btnToggleManutencaoSistema.btn-danger{background:#dc2626!important;background-color:#dc2626!important;border-color:#b91c1c!important;color:#ffffff!important}
body button#btnToggleManutencaoSistema[data-manutencao="true"],body button#btnToggleManutencaoSistema.btn-warn{background:#f97316!important;background-color:#f97316!important;border-color:#ea580c!important;color:#ffffff!important}
body button#btnToggleManutencaoSistema *{color:#ffffff!important}



/* ==========================================================================
   OBS INTERNA v357 - MÓDULO ADMINISTRADOR MASTER / CONFIGURAÇÕES
   Agrupa controles sensíveis em um único box e controla visibilidade por
   permissão específica do perfil. Não altera banco, login, reset de senha,
   sync, PostgreSQL, endpoints, workflow ou regras operacionais.
   ========================================================================== */
.modulo-admin-master-box-v357{
  border:2px solid #051C3D!important;
  background:linear-gradient(180deg,#ffffff,#f8fbff)!important;
}
.modulo-admin-master-box-v357>h3{
  color:#051C3D!important;
  font-size:18px!important;
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
}
.modulo-admin-master-box-v357 .small{line-height:1.45!important}
.modulo-admin-master-bloqueado-v357{
  display:none!important;
}
.perfil-grupo-modulo-master-v357{
  border-color:#051C3D!important;
  background:#f8fbff!important;
}
.perfil-grupo-modulo-master-v357 h4{color:#051C3D!important}



/* ==========================================================================
   OBS INTERNA v359 - RESET CRÍTICO COM BACKUP AUTOMÁTICO OBRIGATÓRIO
   Atualização cirúrgica: antes de executar reset crítico de solicitações ou
   colaboradores, o sistema gera backup completo, dispara download local e
   registra metadados/auditoria do backup. Se o backup falhar, o reset é
   bloqueado. Não altera usuários, perfis, senhas, regionais, equipes,
   configurações, login, PostgreSQL/Render, endpoints ou regras existentes.
   ========================================================================== */

/* ==========================================================================
   OBS INTERNA v358 - NOVA EQUIPE / PADRÃO BUDGET E HEADCOUNT NÃO
   Atualização cirúrgica: somente o valor padrão ao abrir Nova Equipe passa a ser
   Budget = NÃO e HeadCount = NÃO. Não altera equipes existentes, cálculos,
   budget/headcount quando ativados manualmente, login, refresh, PostgreSQL,
   Render, permissões, auditoria ou salvamentos.
   ========================================================================== */



/* ==========================================================================
   OBS INTERNA v370 - LOGIN BLINDADO SOBRE BASE FUNCIONAL v367
   Correção crítica: retorna a função de login e a tela inicial para a última
   base confirmada como funcional pelo usuário. Remove, por substituição da
   base, as camadas sobrepostas de fallback/handler criadas nas versões v360-v366
   que causaram travamento do botão Entrar no HTML local. Não altera fluxos RH,
   permissões, auditoria, PostgreSQL/Render, endpoints ou regras operacionais
   existentes na v359.
   ========================================================================== */


/* ==========================================================================
   OBS INTERNA v370 - LOGIN BLINDADO SOBRE BASE FUNCIONAL v367
   Correção crítica aplicada sobre o HTML anexado confirmado como funcional.
   Mantém o login original da v367 e adiciona proteção de clique por listener
   dedicado, sem alterar layout, regras RH, banco, sync, permissões, auditoria,
   PostgreSQL/Render, endpoints, sessionStorage/localStorage ou fluxos.
   O botão Entrar passa a ter bind seguro mesmo se algum CSS/overlay futuro
   tentar interferir no clique.
   ========================================================================== */



/* ========================================================================== 
   OBS INTERNA v371 - RESPONSIVIDADE MOBILE PROTEGIDA SEM ALTERAR WEB
   Atualização cirúrgica exclusivamente CSS/mobile.
   Objetivo: em celulares, ocupar 100% da largura útil da tela, empilhar campos,
   controles, filtros, cards e modais em uma coluna, preservar rolagem horizontal
   controlada nas tabelas e impedir que margens/widths do layout desktop deixem
   a tela presa no centro. Desktop permanece preservado porque as regras abaixo
   só entram em telas pequenas. Não altera HTML, JS, login, onclicks, banco,
   sync, PostgreSQL, Render/GitHub, permissões, auditoria ou fluxos RH.
   ========================================================================== */
@media (max-width: 768px){
  html, body{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    margin:0!important;
    padding:0!important;
    overflow-x:hidden!important;
    background:#f4f7fb!important;
  }

  /* Login mobile: mantém o fluxo funcional da v370 e só ajusta ocupação visual. */
  #loginScreen.login{
    position:fixed!important;
    inset:0!important;
    width:100vw!important;
    min-height:100dvh!important;
    padding:16px!important;
    align-items:center!important;
    justify-content:center!important;
    overflow:auto!important;
    z-index:100!important;
  }
  #loginScreen .login-card{
    width:100%!important;
    max-width:420px!important;
    min-width:0!important;
    margin:0 auto!important;
    padding:26px 22px!important;
    border-radius:18px!important;
    box-sizing:border-box!important;
  }
  #loginScreen .login-card h1{
    font-size:24px!important;
    line-height:1.2!important;
    text-align:center!important;
  }
  #loginScreen .login-card p{
    font-size:13px!important;
    text-align:center!important;
    margin-bottom:18px!important;
  }
  #loginScreen .login-card input,
  #loginScreen .login-card button{
    width:100%!important;
    min-height:46px!important;
    box-sizing:border-box!important;
  }

  /* Neutraliza margens e larguras desktop em todas as áreas principais. */
  .cards,
  .panel,
  .panel-clean-topo,
  .table-wrap,
  .usuarios-perfis-bloco,
  #areaDashboard,
  #areaSolicitacoes,
  #areaAprovacoes,
  #areaVagas,
  #areaEquipes,
  #areaColaboradores,
  #areaUsuarios,
  #areaRegionais,
  #areaAuditoria,
  #areaConfiguracoes,
  #areaMediaSLA,
  #areaMovimentacaoPessoas,
  #tabelaSolicitacoes,
  #tabelaAprovacoes,
  #tabelaVagas,
  #tabelaEquipes,
  #tabelaColaboradores,
  #tabelaUsuarios,
  #tabelaPerfis,
  #tabelaRegionais,
  #tabelaAuditoria,
  #tabelaMediaSLA,
  #tabelaConfiguracoes,
  #tabelaFluxoAprovacao,
  #tabelaCentrosCusto,
  .footer{
    margin-left:0!important;
    margin-right:0!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }

  /* Menu: no celular vira barra superior rolável, sem ocupar lateral. */

  /* Painéis, filtros e botões empilhados. */
  .panel-clean-topo,
  .panel{
    padding:0 8px 10px!important;
    border-radius:0!important;
    box-shadow:none!important;
    background:transparent!important;
    border:0!important;
  }
  .topo-operacional,
  .controls,
  .filters,
  .filtros-clean,
  .filtros-periodo-clean,
  .audit-filters-box,
  .colab-search-row,
  .usuarios-filtro-box,
  .mov-filters,
  .resumo-quadro-filtros{
    display:grid!important;
    grid-template-columns:1fr!important;
    width:100%!important;
    max-width:100%!important;
    gap:8px!important;
    padding:10px!important;
    margin:8px 0!important;
    box-sizing:border-box!important;
  }
  .topo-acoes,
  .usuarios-perfis-actions,
  .sistema-admin-actions,
  .modal-actions{
    display:grid!important;
    grid-template-columns:1fr!important;
    width:100%!important;
    gap:8px!important;
  }
  .search,
  .field,
  .controls .field,
  .audit-filters-box .field,
  .mov-filters .field,
  .resumo-quadro-filtros .field{
    width:100%!important;
    min-width:0!important;
  }
  input, select, textarea, button{
    max-width:100%!important;
    box-sizing:border-box!important;
  }
  .controls button,
  .topo-acoes button,
  .usuarios-perfis-actions button,
  .modal-actions button,
  .sistema-admin-actions button,
  .vagas-topo-clean button,
  .usuarios-filtro-box button{
    width:100%!important;
    justify-content:center!important;
    min-height:42px!important;
    white-space:normal!important;
  }

  /* Cards e indicadores ocupando toda a largura, sem colunas quebradas. */
  .cards,
  #areaDashboard.cards,
  .mov-kpis,
  .colab-kpis,
  .config-grid,
  .sistema-admin-grid,
  .perfil-blocos-grid,
  .perfil-blocos-grid.grid-gestao,
  .perfil-admin-perms,
  .quadrante-grid,
  .resumo-quadro-grid,
  .indicadores-rh-grid,
  .indicadores-rh-filtros{
    display:grid!important;
    grid-template-columns:1fr!important;
    width:100%!important;
    gap:10px!important;
    padding-left:8px!important;
    padding-right:8px!important;
    box-sizing:border-box!important;
  }
  .card,
  .mov-kpi,
  .colab-kpi,
  .config-box,
  .sistema-admin-card,
  .perfil-grupo,
  .quadrante-card,
  .resumo-quadro-card,
  .indicadores-rh-card{
    width:100%!important;
    min-width:0!important;
    margin:0!important;
    box-sizing:border-box!important;
  }

  /* Formulários e modais: uma coluna, ocupando quase toda a tela do celular. */
  .modal{
    align-items:flex-start!important;
    justify-content:center!important;
    padding:8px!important;
    overflow:auto!important;
  }
  .modal-content,
  #modalDetalhe .modal-content,
  #modalTrocaSenha .modal-content{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    max-height:none!important;
    border-radius:16px!important;
    overflow:visible!important;
    box-sizing:border-box!important;
  }
  .modal h2{
    font-size:18px!important;
    line-height:1.25!important;
    padding:14px 16px!important;
  }
  .grid,
  .modal .grid,
  #modalTrocaSenha .grid,
  #modalSolicitacao .grid{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:10px!important;
    padding:14px!important;
    width:100%!important;
    box-sizing:border-box!important;
  }
  .span2,.span3,
  .quadrantes-requisitos,
  .quadrante-beneficios{
    grid-column:span 1!important;
    width:100%!important;
    margin-left:0!important;
    margin-right:0!important;
  }
  #modalSolicitacao .modal-actions,
  #modalTrocaSenha .modal-actions,
  .modal .modal-actions{
    padding:12px 14px!important;
    margin:0!important;
  }

  /* Tabelas: mantêm dados completos com rolagem horizontal controlada, sem espremer a tela. */
  .table-wrap,
  #tabelaSolicitacoes,
  #tabelaAprovacoes,
  #tabelaVagas,
  #tabelaEquipes,
  #tabelaColaboradores,
  #tabelaUsuarios,
  #tabelaPerfis,
  #tabelaRegionais,
  #tabelaAuditoria,
  #tabelaMediaSLA,
  #tabelaConfiguracoes,
  #tabelaFluxoAprovacao,
  #tabelaCentrosCusto,
  .resumo-quadro-tabela-wrap,
  .indicadores-rh-tabela-wrap{
    overflow-x:auto!important;
    overflow-y:visible!important;
    -webkit-overflow-scrolling:touch!important;
    padding:0 8px 12px!important;
    border-radius:0!important;
    box-shadow:none!important;
    background:transparent!important;
  }
  table,
  #tabelaSolicitacoes table,
  #tabelaAprovacoes table,
  #tabelaVagas table,
  #tabelaEquipes table,
  #tabelaColaboradores table,
  #tabelaUsuarios table,
  #tabelaPerfis table,
  #tabelaRegionais table,
  #tabelaAuditoria table,
  #tabelaMediaSLA table,
  #tabelaConfiguracoes table,
  #tabelaFluxoAprovacao table,
  #tabelaCentrosCusto table{
    min-width:920px!important;
    width:max-content!important;
    max-width:none!important;
  }
  th,td{
    font-size:12px!important;
    padding:9px 8px!important;
  }

  /* Blocos internos que tinham margem lateral fixa. */
  .impact,
  .audit,
  .resumo-quadro-nota,
  .resumo-quadro-subtitulo,
  .resumo-quadro-destaque-regional,
  .indicadores-rh-nota,
  .indicadores-rh-info,
  #detalheConteudo{
    margin-left:8px!important;
    margin-right:8px!important;
    width:auto!important;
    max-width:none!important;
    box-sizing:border-box!important;
  }
  #detalheConteudo{
    padding:14px!important;
  }
  .detail-table{
    min-width:0!important;
    width:100%!important;
  }
  .detail-table th,
  .detail-table td{
    display:block!important;
    width:100%!important;
    border-radius:0!important;
  }

  .footer{
    padding:12px 8px 18px!important;
    font-size:11px!important;
  }
}

@media (min-width: 769px){
  /* Proteção explícita: nenhuma regra da v371 altera a experiência desktop/web. */
}



/* ==========================================================================
   OBS INTERNA v374 - BADGE DE RESET IGUAL AO CONTADOR DE SOLICITAÇÕES
   Atualização exclusivamente visual: o contador de solicitações pendentes de
   reset na aba Usuários e Perfis passa a usar o mesmo padrão visual do
   contador já existente na aba Solicitações (.tab-contador-ajuste). Não altera
   login, autenticação, fluxo de reset, banco, sync, permissões, auditoria,
   PostgreSQL/Render ou regras RH.
   ========================================================================== */
#tabUsuarios{
  position:relative!important;
}
#tabUsuarios .reset-badge-v372{
  display:none;
  align-items:center!important;
  justify-content:center!important;
  margin-left:6px!important;
  padding:2px 7px!important;
  border-radius:999px!important;
  background:#7c3aed!important;
  color:#ffffff!important;
  font-size:11px!important;
  font-weight:900!important;
  line-height:1!important;
  min-width:auto!important;
  height:auto!important;
  border:0!important;
  box-shadow:none!important;
  text-shadow:none!important;
  flex:0 0 auto!important;
}
#tabUsuarios .reset-badge-v372:empty{
  display:none!important;
}
#tabUsuarios.active .reset-badge-v372{
  background:#7c3aed!important;
  color:#ffffff!important;
}
@media(max-width:980px){
  #tabUsuarios .reset-badge-v372{
    margin-left:6px!important;
    padding:2px 7px!important;
    font-size:11px!important;
  }
}




/* ==========================================================================
   OBS INTERNA v376 - MODAL DE SOLICITAÇÕES DE RESET / LAYOUT PROFISSIONAL
   Ajuste exclusivamente visual no modal/lista de solicitações de reset de senha.
   Organiza cards, espaçamentos, metadados e botões por hierarquia de ação.
   Não altera login, autenticação, reset, CPF, banco, sync, PostgreSQL,
   permissões, auditoria, Render/GitHub ou fluxos RH existentes.
   ========================================================================== */
#modalResetRequestsV372{
  align-items:flex-start!important;
  justify-content:center!important;
  padding:28px!important;
  overflow:auto!important;
}
#modalResetRequestsV372 .modal-content{
  width:min(980px,96vw)!important;
  max-width:980px!important;
  border-radius:22px!important;
  overflow:hidden!important;
  background:#f8fafc!important;
  box-shadow:0 28px 70px rgba(15,23,42,.28)!important;
  padding:0!important;
}
#modalResetRequestsV372 h2{
  margin:0!important;
  padding:18px 22px!important;
  background:#ffffff!important;
  border-bottom:1px solid #d9e2ec!important;
  color:#051C3D!important;
  font-size:20px!important;
  font-weight:900!important;
}
#listaResetRequestsV372.modal-reset-lista-v372{
  padding:18px 20px 6px!important;
  display:flex!important;
  flex-direction:column!important;
  gap:14px!important;
  background:#f8fafc!important;
}
.reset-request-card-v372{
  background:#ffffff!important;
  border:1px solid #d9e2ec!important;
  border-left:5px solid #f59e0b!important;
  border-radius:18px!important;
  padding:16px!important;
  box-shadow:0 8px 22px rgba(15,59,99,.07)!important;
}
.reset-request-card-v372.reset-status-atendida{border-left-color:#16a34a!important}
.reset-request-card-v372.reset-status-rejeitada{border-left-color:#dc2626!important}
.reset-request-card-v372.reset-status-cancelada{border-left-color:#64748b!important}
.reset-request-head-v372{
  display:flex!important;
  align-items:flex-start!important;
  justify-content:space-between!important;
  gap:12px!important;
  padding-bottom:12px!important;
  margin-bottom:12px!important;
  border-bottom:1px solid #e2e8f0!important;
}
.reset-request-head-v372 h4{
  margin:0!important;
  color:#0f172a!important;
  font-size:16px!important;
  font-weight:900!important;
  line-height:1.25!important;
}
.reset-request-subtitle-v372{
  display:block!important;
  margin-top:4px!important;
  color:#64748b!important;
  font-size:12px!important;
  font-weight:700!important;
  line-height:1.35!important;
}
.reset-request-meta-grid-v372{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:10px!important;
  margin-bottom:12px!important;
}
.reset-request-meta-v372{
  background:#f8fafc!important;
  border:1px solid #e2e8f0!important;
  border-radius:12px!important;
  padding:10px!important;
  min-width:0!important;
}
.reset-request-meta-v372 small{
  display:block!important;
  color:#64748b!important;
  font-size:11px!important;
  font-weight:900!important;
  text-transform:uppercase!important;
  letter-spacing:.25px!important;
  margin-bottom:4px!important;
}
.reset-request-meta-v372 b{
  display:block!important;
  color:#0f172a!important;
  font-size:13px!important;
  line-height:1.35!important;
  overflow-wrap:anywhere!important;
}
.reset-request-motivo-v372{
  background:#fff7ed!important;
  border:1px solid #fed7aa!important;
  color:#9a3412!important;
  border-radius:12px!important;
  padding:10px 12px!important;
  font-size:12px!important;
  font-weight:800!important;
  line-height:1.4!important;
  margin:8px 0 12px!important;
}
.reset-request-actions-v372{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:8px!important;
  flex-wrap:wrap!important;
  padding-top:12px!important;
  margin-top:12px!important;
  border-top:1px dashed #d9e2ec!important;
}
#modalResetRequestsV372 .reset-request-actions-v372 button{
  min-height:38px!important;
  padding:9px 12px!important;
  border-radius:10px!important;
  font-size:12px!important;
  font-weight:900!important;
  text-shadow:none!important;
  box-shadow:none!important;
  justify-content:center!important;
}
#modalResetRequestsV372 .reset-request-actions-v372 button.reset-btn-atender-v372,
#modalResetRequestsV372 .reset-request-actions-v372 button.btn-ok{
  background:#16a34a!important;
  border:1px solid #16a34a!important;
  color:#ffffff!important;
}
#modalResetRequestsV372 .reset-request-actions-v372 button.reset-btn-atender-v372:hover,
#modalResetRequestsV372 .reset-request-actions-v372 button.btn-ok:hover{
  background:#15803d!important;
  border-color:#15803d!important;
  color:#ffffff!important;
}
#modalResetRequestsV372 .reset-request-actions-v372 button.reset-btn-rejeitar-v372,
#modalResetRequestsV372 .reset-request-actions-v372 button.btn-danger{
  background:#dc2626!important;
  border:1px solid #dc2626!important;
  color:#ffffff!important;
}
#modalResetRequestsV372 .reset-request-actions-v372 button.reset-btn-rejeitar-v372:hover,
#modalResetRequestsV372 .reset-request-actions-v372 button.btn-danger:hover{
  background:#b91c1c!important;
  border-color:#b91c1c!important;
  color:#ffffff!important;
}
#modalResetRequestsV372 .reset-request-actions-v372 button.reset-btn-cancelar-v372,
#modalResetRequestsV372 .reset-request-actions-v372 button.btn-warn{
  background:#f59e0b!important;
  border:1px solid #f59e0b!important;
  color:#ffffff!important;
}
#modalResetRequestsV372 .reset-request-actions-v372 button.reset-btn-cancelar-v372:hover,
#modalResetRequestsV372 .reset-request-actions-v372 button.btn-warn:hover{
  background:#d97706!important;
  border-color:#d97706!important;
  color:#ffffff!important;
}
.reset-temp-senha-v372{
  margin:16px 20px 0!important;
  background:#ecfdf5!important;
  border:2px solid #86efac!important;
  color:#166534!important;
  border-radius:16px!important;
  padding:14px 16px!important;
  font-size:13px!important;
  line-height:1.45!important;
  box-shadow:0 8px 22px rgba(22,163,74,.12)!important;
}
.reset-temp-senha-v372 .senha-temp-destaque-v376{
  display:inline-flex!important;
  margin:6px 0!important;
  padding:6px 10px!important;
  border-radius:10px!important;
  background:#ffffff!important;
  border:1px solid #86efac!important;
  color:#14532d!important;
  font-size:20px!important;
  font-weight:900!important;
  letter-spacing:.5px!important;
}
#modalResetRequestsV372 .modal-actions{
  margin:0!important;
  padding:16px 20px!important;
  background:#ffffff!important;
  border-top:1px solid #d9e2ec!important;
  display:flex!important;
  justify-content:flex-end!important;
}
#modalResetRequestsV372 .modal-actions .btn-secondary{
  background:#e2e8f0!important;
  color:#0f172a!important;
  border:1px solid #cbd5e1!important;
  min-width:110px!important;
}
#modalResetRequestsV372 .modal-actions .btn-secondary:hover{
  background:#cbd5e1!important;
  color:#0f172a!important;
  border-color:#94a3b8!important;
}
@media(max-width:820px){
  #modalResetRequestsV372{padding:10px!important;align-items:flex-start!important}
  #modalResetRequestsV372 .modal-content{width:100%!important;max-width:none!important;border-radius:18px!important}
  #modalResetRequestsV372 h2{font-size:18px!important;padding:16px!important}
  #listaResetRequestsV372.modal-reset-lista-v372{padding:14px!important;gap:12px!important}
  .reset-request-head-v372{display:block!important}
  .reset-request-head-v372 .badge{margin-top:8px!important}
  .reset-request-meta-grid-v372{grid-template-columns:1fr!important}
  .reset-request-actions-v372{justify-content:stretch!important}
  #modalResetRequestsV372 .reset-request-actions-v372 button{width:100%!important}
  .reset-temp-senha-v372{margin:14px 14px 0!important}
  #modalResetRequestsV372 .modal-actions{padding:14px!important}
  #modalResetRequestsV372 .modal-actions button{width:100%!important}
}

/* ==========================================================================
   OBS INTERNA v375 - ALERTA DE RESET POSICIONADO NA ABA USUÁRIOS
   Ajuste exclusivamente visual/posicionamento: o aviso de solicitações de
   reset pendentes fica abaixo da abertura da aba Usuários e antes
   dos controles/tabela de Usuários. Não altera login, reset, banco, sync,
   permissões, Render/PostgreSQL ou fluxos RH.
   ========================================================================== */
#areaUsuarios #resetAdminAlertV372.reset-admin-alert-v372{
  display:none!important;
  width:100%!important;
  margin:10px 0 12px!important;
  padding:12px 14px!important;
  border:1px solid #bfdbfe!important;
  border-left:5px solid #1F50CD!important;
  border-radius:14px!important;
  background:#eff6ff!important;
  color:#1e3a8a!important;
  box-shadow:0 4px 14px rgba(15,59,99,.06)!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:12px!important;
  box-sizing:border-box!important;
}
#areaUsuarios #resetAdminAlertV372.reset-admin-alert-v372.ativo{
  display:flex!important;
}
#areaUsuarios #resetAdminTextoV372{
  display:inline-flex!important;
  align-items:center!important;
  gap:7px!important;
  font-size:13px!important;
  font-weight:900!important;
  line-height:1.35!important;
  color:#1e3a8a!important;
}
#areaUsuarios #resetAdminTextoV372:before{
  content:'🔐';
  font-size:16px!important;
  line-height:1!important;
}
#areaUsuarios #resetAdminAlertV372 button{
  flex:0 0 auto!important;
  min-height:34px!important;
  padding:8px 11px!important;
  border-radius:10px!important;
  background:#1F50CD!important;
  border:1px solid #1F50CD!important;
  color:#ffffff!important;
  font-size:12px!important;
  font-weight:900!important;
  justify-content:center!important;
  box-shadow:none!important;
}
#areaUsuarios #resetAdminAlertV372 button:hover{
  background:#051C3D!important;
  border-color:#051C3D!important;
  color:#ffffff!important;
}
@media(max-width:720px){
  #areaUsuarios #resetAdminAlertV372.reset-admin-alert-v372{
    align-items:stretch!important;
    flex-direction:column!important;
    padding:12px!important;
  }
  #areaUsuarios #resetAdminAlertV372 button{
    width:100%!important;
  }
}



/* ==========================================================================
   OBS INTERNA v377 - USUÁRIOS E PERFIS / ORDEM ALFABÉTICA
   Atualização cirúrgica visual/operacional do fluxo de reset:
   - o alerta de pendências fica em bloco próprio, abaixo da abertura da aba Usuários;
   - ocupa a largura total da área de Usuários, sem usar o mesmo quadrante explicativo;
   - o modal mostra somente solicitações pendentes;
   - após atender, rejeitar ou cancelar, o item some da lista operacional;
   - senha temporária exibida com botão Copiar.
   Não altera login, autenticação, banco estrutural, sync, PostgreSQL, permissões,
   auditoria, Render/GitHub ou fluxos RH.
   ========================================================================== */
.reset-admin-alert-v372{
  display:none!important;
  width:calc(100% - 56px)!important;
  margin:0 28px 14px!important;
  padding:14px 16px!important;
  border:1px solid #fed7aa!important;
  border-left:6px solid #f97316!important;
  border-radius:18px!important;
  background:#fff7ed!important;
  color:#9a3412!important;
  box-shadow:0 8px 22px rgba(15,59,99,.07)!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:14px!important;
  box-sizing:border-box!important;
}
.reset-admin-alert-v372.ativo{display:flex!important;}
.reset-admin-alert-v372 #resetAdminTextoV372{
  display:inline-flex!important;
  align-items:center!important;
  gap:8px!important;
  font-size:13px!important;
  font-weight:900!important;
  line-height:1.35!important;
  color:#9a3412!important;
}
.reset-admin-alert-v372 #resetAdminTextoV372:before{
  content:'🔐';
  font-size:17px!important;
  line-height:1!important;
}
.reset-admin-alert-v372 button{
  flex:0 0 auto!important;
  min-height:36px!important;
  padding:8px 12px!important;
  border-radius:10px!important;
  background:#f97316!important;
  border:1px solid #ea580c!important;
  color:#ffffff!important;
  font-size:12px!important;
  font-weight:900!important;
  justify-content:center!important;
  box-shadow:none!important;
  text-shadow:none!important;
}
.reset-admin-alert-v372 button:hover{
  background:#ea580c!important;
  border-color:#c2410c!important;
  color:#ffffff!important;
}
.reset-temp-senha-actions-v377{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
  flex-wrap:wrap!important;
  margin:8px 0 6px!important;
}
.reset-temp-senha-actions-v377 .senha-temp-destaque-v376{
  margin:0!important;
}
#modalResetRequestsV372 button.btn-copiar-senha-v377{
  background:#e2e8f0!important;
  border:1px solid #cbd5e1!important;
  color:#0f172a!important;
  min-height:36px!important;
  padding:8px 11px!important;
  border-radius:10px!important;
  font-size:12px!important;
  font-weight:900!important;
  text-shadow:none!important;
  box-shadow:none!important;
}
#modalResetRequestsV372 button.btn-copiar-senha-v377:hover{
  background:#cbd5e1!important;
  border-color:#94a3b8!important;
  color:#0f172a!important;
}
@media(max-width:980px){
  .reset-admin-alert-v372{
    width:calc(100% - 20px)!important;
    margin:0 10px 12px!important;
  }
}
@media(max-width:720px){
  .reset-admin-alert-v372{
    align-items:stretch!important;
    flex-direction:column!important;
    padding:12px!important;
  }
  .reset-admin-alert-v372 button{width:100%!important;}
  .reset-temp-senha-actions-v377{align-items:stretch!important;flex-direction:column!important;}
  #modalResetRequestsV372 button.btn-copiar-senha-v377{width:100%!important;}
}



/* ==========================================================================
   OBS INTERNA v381 - IMPORTAÇÃO DE COLABORADORES / CENTRO DE CUSTO CORRIGIDO
   Atualização cirúrgica: a senha temporária gerada deixa de aparecer em alerta
   simples e passa a ser exibida em quadro/modal interativo, com campo readonly,
   botão Copiar, seleção automática e instrução clara. Não altera login, hash,
   troca obrigatória, permissões, sync, PostgreSQL, backend ou regras RH.
   ========================================================================== */
.senha-temp-modal-card-v381{
  margin:18px 22px 0!important;
  padding:16px!important;
  border:1px solid #bfdbfe!important;
  border-left:6px solid #1F50CD!important;
  background:#eff6ff!important;
  border-radius:16px!important;
  box-shadow:0 8px 22px rgba(15,59,99,.08)!important;
}
.senha-temp-modal-card-v381 h3{
  margin:0 0 8px!important;
  color:#051C3D!important;
  font-size:16px!important;
}
.senha-temp-modal-card-v381 p{
  margin:0 0 12px!important;
  color:#475569!important;
  font-size:13px!important;
  line-height:1.45!important;
}
.senha-temp-box-v381{
  display:grid!important;
  grid-template-columns:minmax(180px,1fr) auto!important;
  gap:10px!important;
  align-items:center!important;
  margin-top:10px!important;
}
.senha-temp-input-v381{
  width:100%!important;
  height:46px!important;
  padding:10px 12px!important;
  border:2px solid #93c5fd!important;
  border-radius:12px!important;
  background:#ffffff!important;
  color:#0f172a!important;
  font-size:18px!important;
  font-weight:900!important;
  letter-spacing:.08em!important;
  text-align:center!important;
  user-select:all!important;
  text-transform:none!important;
}
button.btn-copiar-senha-v381{
  height:46px!important;
  min-width:132px!important;
  justify-content:center!important;
  background:#16a34a!important;
  border:1px solid #15803d!important;
  color:#ffffff!important;
  border-radius:12px!important;
  font-weight:900!important;
  text-shadow:none!important;
  box-shadow:none!important;
}
button.btn-copiar-senha-v381:hover{
  background:#15803d!important;
  border-color:#166534!important;
  color:#ffffff!important;
}
.senha-temp-warning-v381{
  display:block!important;
  margin-top:10px!important;
  color:#9a3412!important;
  background:#fff7ed!important;
  border:1px solid #fed7aa!important;
  border-radius:10px!important;
  padding:8px 10px!important;
  font-size:12px!important;
  font-weight:900!important;
  line-height:1.35!important;
}
#modalSenhaTemporariaResetV381 .modal-content{
  max-width:560px!important;
}
#modalSenhaTemporariaResetV381 .modal-actions{
  padding:16px 22px!important;
}
@media(max-width:620px){
  .senha-temp-modal-card-v381{margin:14px 14px 0!important;padding:14px!important}
  .senha-temp-box-v381{grid-template-columns:1fr!important}
  button.btn-copiar-senha-v381{width:100%!important}
  .senha-temp-input-v381{font-size:16px!important}
}

/* ==========================================================================
   OBS INTERNA v380 - RESET DE SENHA / SYNC E BADGE CORRIGIDOS
   Atualização cirúrgica: as listas de usuários, perfis e selects relacionados
   passam a ser exibidos em ordem alfabética (pt-BR). A alteração é visual/
   renderização; não altera IDs, permissões, login, sync, PostgreSQL, auditoria,
   regras RH ou endpoints.
   ========================================================================== */



/* ==========================================================================
   OBS INTERNA v382 - IMPORTAÇÃO DE COLABORADORES / CENTRO DE CUSTO
   Correção cirúrgica: a importação CSV passa a reconhecer, validar e gravar
   o campo Centro de Custo, alinhado ao cadastro manual de colaboradores.
   Mantém pré-validação, relatório de bloqueios, regras de vaga, budget,
   headcount, PostgreSQL/Render, login, reset de senha e auditoria.
   ========================================================================== */


/* ==========================================================================
   OBS INTERNA v385 - SYNC / EDIÇÃO SEM DUPLICAR
   Correção cirúrgica: define o delimitador do CSV dentro da função de
   pré-validação, antes do loop das linhas, evitando ReferenceError e mantendo
   leitura correta de salário com vírgula decimal. Não altera login, reset,
   sync, PostgreSQL, permissões, auditoria ou fluxos RH.
   ========================================================================== */





/* ==========================================================================
   OBS INTERNA v387 - REGIONAIS/EQUIPES / TRAVA E SALVAMENTO CONFIRMADO
   Importação de colaboradores não cria Regional/Equipe. Cadastros estruturais
   passam a bloquear duplicidade por nome normalizado e só fecham a ação após
   confirmação do salvamento no Render/PostgreSQL.
   ========================================================================== */

/* ==========================================================================
   OBS INTERNA v386 - COLABORADOR / AJUSTE ESTRUTURAL DE NÚMERO DA VAGA
   Alteração cirúrgica: permite somente ao Administrador Master liberar edição
   manual do número da vaga na edição de colaborador, com aviso, motivo
   obrigatório, validação de duplicidade e auditoria. Não altera login, reset,
   importação, sync, PostgreSQL, permissões, fluxos RH ou regras de solicitação.
   ========================================================================== */
.colaborador-numero-vaga-master-box{
  display:none;
  margin-top:8px;
  padding:10px;
  border:1px solid #fed7aa;
  background:#fff7ed;
  border-radius:12px;
  color:#9a3412;
  font-size:12px;
  line-height:1.4;
}
.colaborador-numero-vaga-master-box .colab-master-alerta{
  display:block;
  font-weight:900;
  margin-bottom:7px;
  color:#9a3412;
}
.colaborador-numero-vaga-master-box label{
  display:flex!important;
  align-items:center;
  gap:7px;
  margin:0 0 7px!important;
  font-size:12px!important;
  font-weight:900!important;
  color:#9a3412!important;
}
.colaborador-numero-vaga-master-box input[type=checkbox]{
  width:auto!important;
  margin:0!important;
  accent-color:#d97706!important;
}
.colaborador-numero-vaga-master-box input[type=text]{
  display:none;
  width:100%!important;
  margin-top:7px!important;
  background:#fff!important;
  border-color:#fdba74!important;
}
.colaborador-numero-vaga-master-box .lock-note{
  color:#9a3412!important;
  font-weight:700!important;
}



/* ==========================================================================
   OBS INTERNA v389 - SANEAMENTO SEGURO PÓS-LOGIN DE REGIONAIS/EQUIPES
   Correção cirúrgica: saneamento estrutural não roda antes do login.
   Regionais/Equipes duplicadas são consolidadas somente após usuário autenticado,
   preservando login, sessão, reset de senha, importação e sync.
   ========================================================================== */



/* ==========================================================================
   OBS INTERNA v390 - VALIDADOR DE BACKUP ESTRUTURAL
   Card visual para conferir se o backup contém as coleções críticas antes de
   exportar ou restaurar. Não altera login, sync, permissões, PostgreSQL ou
   regras RH.
   ========================================================================== */
.backup-validacao-box{margin-top:12px;border:1px solid #d9e2ec;border-radius:16px;background:#f8fafc;padding:12px;display:none}
.backup-validacao-box.ativo{display:block}
.backup-validacao-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin-top:8px}
.backup-validacao-item{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:9px 10px;font-size:12px;color:#334155}
.backup-validacao-item b{display:block;color:#051C3D;font-size:18px;margin-top:3px}
.backup-validacao-ok{border-left:4px solid #16a34a}
.backup-validacao-alerta{border-left:4px solid #f59e0b}
.backup-validacao-critico{border-left:4px solid #dc2626}
.backup-validacao-msg{font-size:12px;line-height:1.45;color:#475569;margin-top:8px}

/* OBS INTERNA v418 - BACKUPS E RECUPERAÇÃO */
.backup-status-v418{margin-top:10px;padding:10px 12px;border-radius:12px;background:#f8fafc;border:1px solid #d9e2ec;color:#334155;font-size:12px;line-height:1.4}
.backup-status-v418.ok{background:#dcfce7;border-color:#86efac;color:#166534}
.backup-status-v418.warn{background:#fef3c7;border-color:#fde68a;color:#854d0e}
.backup-status-v418.bad{background:#fee2e2;border-color:#fecaca;color:#991b1b}
#tabelaBackupsV418 table{min-width:980px!important}
.backup-tipo-v418{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:900;background:#eff6ff;color:#1e40af;border:1px solid #bf


/* Impressão: CSS legado removido na v2.0.0. A impressão oficial usa janela limpa e CSS isolado em cssImpressaoV586(). */


/* v2.1.3 - Usuários/Perfis: layout limpo em card único. Alteração visual cirúrgica do módulo Usuários. */
#blocoUsuariosPerfisTopo.usuarios-perfis-bloco{
  margin-bottom:0!important;
  padding:0 28px!important;
}
#blocoUsuariosPerfisTopo .usuarios-perfis-header{
  background:#fff!important;
  border:1px solid var(--borda)!important;
  border-left:6px solid #1F50CD!important;
  border-radius:18px 18px 0 0!important;
  box-shadow:0 10px 24px rgba(15,23,42,.06)!important;
  padding:16px 18px 0!important;
  margin:0!important;
}
#blocoUsuariosPerfisTopo .usuarios-submenu{
  display:flex!important;
  gap:4px!important;
  align-items:center!important;
  margin:14px 0 0!important;
  padding:0 0 0!important;
  border-bottom:1px solid #dbe4ef!important;
}
#blocoUsuariosPerfisTopo .usuarios-subtab{
  border:0!important;
  border-bottom:3px solid transparent!important;
  background:transparent!important;
  color:#475569!important;
  border-radius:10px 10px 0 0!important;
  padding:10px 16px!important;
  font-weight:900!important;
  cursor:pointer!important;
  box-shadow:none!important;
  min-height:40px!important;
}
#blocoUsuariosPerfisTopo .usuarios-subtab:hover{
  background:#f1f5f9!important;
  color:#051C3D!important;
}
#blocoUsuariosPerfisTopo .usuarios-subtab.active{
  background:#eef6ff!important;
  border-bottom-color:#1F50CD!important;
  color:#051C3D!important;
  box-shadow:none!important;
}
#blocoUsuariosSistema.usuarios-perfis-bloco,
#blocoPerfisPermissoes.usuarios-perfis-bloco{
  padding:16px 28px 8px!important;
  margin-top:0!important;
  margin-bottom:0!important;
  background:#fff!important;
  border-left:1px solid var(--borda)!important;
  border-right:1px solid var(--borda)!important;
}
#blocoUsuariosSistema .usuarios-perfis-header,
#blocoPerfisPermissoes .usuarios-perfis-header{
  background:transparent!important;
  border:0!important;
  border-left:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  padding:0!important;
  margin:0 0 12px!important;
}
#blocoUsuariosSistema .usuarios-perfis-header h2,
#blocoPerfisPermissoes .usuarios-perfis-header h2{
  font-size:18px!important;
  margin-bottom:3px!important;
}
#blocoUsuariosSistema .usuarios-perfis-actions,
#blocoPerfisPermissoes .usuarios-perfis-actions{
  margin-top:10px!important;
}
#blocoUsuariosSistema .usuarios-perfis-actions button,
#blocoPerfisPermissoes .usuarios-perfis-actions button{
  min-height:38px!important;
  padding:9px 14px!important;
  border-radius:11px!important;
}
#blocoUsuariosSistema .usuarios-filtro-box{
  margin:10px 0 2px!important;
  border-radius:14px!important;
  box-shadow:none!important;
  background:#f8fafc!important;
}
#tabelaUsuarios.table-wrap,
#tabelaPerfis.table-wrap{
  background:#fff!important;
  border-left:1px solid var(--borda)!important;
  border-right:1px solid var(--borda)!important;
  border-bottom:1px solid var(--borda)!important;
  border-radius:0 0 18px 18px!important;
  box-shadow:0 10px 24px rgba(15,23,42,.06)!important;
  padding:0 28px 20px!important;
  margin-bottom:18px!important;
}
#tabelaUsuarios.table-wrap table,
#tabelaPerfis.table-wrap table{
  margin-top:0!important;
}


/* v2.1.3 - Usuários e Perfis: layout corporativo limpo inspirado no padrão DRE Online.
   Alteração visual restrita ao módulo Usuários/Perfis. Sem alteração de regra, permissão, endpoint ou salvamento. */
#blocoUsuariosPerfisTopo.usuarios-perfis-bloco{
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  padding:0 20px!important;
  margin:0 0 22px!important;
}
#blocoUsuariosPerfisTopo .usuarios-perfis-header{
  display:none!important;
}
#blocoUsuariosPerfisTopo .usuarios-submenu{
  display:flex!important;
  gap:14px!important;
  align-items:center!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
}
#blocoUsuariosPerfisTopo .usuarios-subtab{
  min-width:112px!important;
  min-height:48px!important;
  border:1px solid #d5e1ef!important;
  border-radius:999px!important;
  background:#ffffff!important;
  color:#0f172a!important;
  box-shadow:0 10px 24px rgba(15,23,42,.06)!important;
  padding:0 22px!important;
  font-size:15px!important;
  font-weight:900!important;
  letter-spacing:0!important;
  cursor:pointer!important;
}
#blocoUsuariosPerfisTopo .usuarios-subtab:hover{
  border-color:#b7cce5!important;
  background:#f8fbff!important;
  transform:translateY(-1px);
}
#blocoUsuariosPerfisTopo .usuarios-subtab.active{
  background:#0f5fa8!important;
  border-color:#0f5fa8!important;
  color:#ffffff!important;
  box-shadow:0 14px 30px rgba(15,95,168,.22)!important;
}
#blocoUsuariosSistema.usuarios-perfis-bloco,
#blocoPerfisPermissoes.usuarios-perfis-bloco{
  margin:0 20px!important;
  padding:24px 22px 12px!important;
  background:#ffffff!important;
  border:1px solid #dbe5f0!important;
  border-bottom:0!important;
  border-left:1px solid #dbe5f0!important;
  border-radius:18px 18px 0 0!important;
  box-shadow:0 10px 24px rgba(15,23,42,.05)!important;
}
#blocoUsuariosSistema .usuarios-perfis-header,
#blocoPerfisPermissoes .usuarios-perfis-header{
  display:grid!important;
  grid-template-columns:1fr auto!important;
  align-items:start!important;
  gap:16px!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  padding:0!important;
  margin:0 0 16px!important;
}
#blocoUsuariosSistema .usuarios-perfis-header h2,
#blocoPerfisPermissoes .usuarios-perfis-header h2{
  font-size:22px!important;
  line-height:1.2!important;
  margin:0 0 7px!important;
  color:#0b3356!important;
}
#blocoUsuariosSistema .usuarios-perfis-header p,
#blocoPerfisPermissoes .usuarios-perfis-header p{
  margin:0!important;
  color:#456179!important;
  font-size:14px!important;
}
#blocoUsuariosSistema .usuarios-perfis-actions,
#blocoPerfisPermissoes .usuarios-perfis-actions{
  margin:0!important;
}
#blocoUsuariosSistema .usuarios-perfis-actions button,
#blocoPerfisPermissoes .usuarios-perfis-actions button{
  min-height:42px!important;
  border-radius:11px!important;
  padding:0 16px!important;
  font-weight:900!important;
}
#blocoUsuariosSistema .usuarios-filtro-box{
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
  margin:0 0 14px!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
#blocoUsuariosSistema .usuarios-filtro-box input{
  flex:1!important;
  min-height:43px!important;
  border-radius:11px!important;
}
#blocoUsuariosSistema .usuarios-filtro-box .usuarios-filtro-info{
  display:none!important;
}
#blocoUsuariosSistema .usuarios-filtro-box .btn-warn{
  min-height:43px!important;
  border-radius:11px!important;
}
#tabelaUsuarios.table-wrap,
#tabelaPerfis.table-wrap{
  margin:0 20px 24px!important;
  padding:0 22px 22px!important;
  background:#ffffff!important;
  border:1px solid #dbe5f0!important;
  border-top:0!important;
  border-left:1px solid #dbe5f0!important;
  border-radius:0 0 18px 18px!important;
  box-shadow:0 10px 24px rgba(15,23,42,.05)!important;
}
#tabelaUsuarios.table-wrap table,
#tabelaPerfis.table-wrap table{
  margin-top:0!important;
  border-radius:14px!important;
  overflow:hidden!important;
}
#tabelaUsuarios thead th,
#tabelaPerfis thead th{
  background:#f4f7fb!important;
  color:#203a55!important;
  font-size:12px!important;
  text-transform:uppercase!important;
}
@media(max-width:900px){
  #blocoUsuariosPerfisTopo.usuarios-perfis-bloco,
  #blocoUsuariosSistema.usuarios-perfis-bloco,
  #blocoPerfisPermissoes.usuarios-perfis-bloco,
  #tabelaUsuarios.table-wrap,
  #tabelaPerfis.table-wrap{margin-left:10px!important;margin-right:10px!important;padding-left:14px!important;padding-right:14px!important;}
  #blocoUsuariosSistema .usuarios-perfis-header,
  #blocoPerfisPermissoes .usuarios-perfis-header{grid-template-columns:1fr!important;}
  #blocoUsuariosPerfisTopo .usuarios-submenu{gap:8px!important;}
  #blocoUsuariosPerfisTopo .usuarios-subtab{min-width:96px!important;padding:0 16px!important;}
}


/* Usuários/Perfis - layout oficial consolidado */
#blocoUsuariosPerfisTopo.usuarios-perfis-bloco{
  display:none;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
  padding:0 20px!important;
  margin:0 0 18px!important;
}
#blocoUsuariosPerfisTopo .usuarios-perfis-header{display:none!important;}
#blocoUsuariosPerfisTopo .usuarios-submenu{
  display:flex!important;
  align-items:center!important;
  gap:14px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
}
#blocoUsuariosPerfisTopo .usuarios-subtab{
  min-width:104px!important;
  min-height:46px!important;
  padding:0 22px!important;
  border-radius:999px!important;
  border:1px solid #d6e2ef!important;
  background:#fff!important;
  color:#0b172a!important;
  font-weight:900!important;
  font-size:15px!important;
  box-shadow:0 10px 24px rgba(15,23,42,.06)!important;
}
#blocoUsuariosPerfisTopo .usuarios-subtab.active{
  background:#0f5fa8!important;
  border-color:#0f5fa8!important;
  color:#fff!important;
  box-shadow:0 14px 30px rgba(15,95,168,.22)!important;
}
#blocoUsuariosSistema.usuarios-perfis-bloco,
#blocoPerfisPermissoes.usuarios-perfis-bloco{
  margin:0 20px!important;
  padding:24px 22px 14px!important;
  background:#fff!important;
  border:1px solid #dbe5f0!important;
  border-bottom:0!important;
  border-left:1px solid #dbe5f0!important;
  border-radius:18px 18px 0 0!important;
  box-shadow:0 12px 28px rgba(15,23,42,.06)!important;
}
#blocoUsuariosSistema .usuarios-perfis-header,
#blocoPerfisPermissoes .usuarios-perfis-header{
  display:grid!important;
  grid-template-columns:1fr auto!important;
  align-items:start!important;
  gap:16px!important;
  background:transparent!important;
  border:0!important;
  border-left:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  padding:0!important;
  margin:0 0 16px!important;
}
#blocoUsuariosSistema .usuarios-perfis-header h2,
#blocoPerfisPermissoes .usuarios-perfis-header h2{
  margin:0 0 7px!important;
  color:#0b3356!important;
  font-size:22px!important;
  line-height:1.2!important;
}
#blocoUsuariosSistema .usuarios-perfis-header p,
#blocoPerfisPermissoes .usuarios-perfis-header p{
  margin:0!important;
  color:#456179!important;
  font-size:14px!important;
}
#blocoUsuariosSistema .usuarios-perfis-actions,
#blocoPerfisPermissoes .usuarios-perfis-actions{margin:0!important;}
#blocoUsuariosSistema .usuarios-perfis-actions button,
#blocoPerfisPermissoes .usuarios-perfis-actions button{
  min-height:42px!important;
  padding:0 16px!important;
  border-radius:11px!important;
  font-weight:900!important;
}
#blocoUsuariosSistema .usuarios-filtro-box{
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
  margin:0 0 14px!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
#blocoUsuariosSistema .usuarios-filtro-box input{
  flex:1!important;
  min-height:43px!important;
  border-radius:11px!important;
}
#blocoUsuariosSistema .usuarios-filtro-box .usuarios-filtro-info{display:none!important;}
#blocoUsuariosSistema .usuarios-filtro-box .btn-warn{
  min-height:43px!important;
  border-radius:11px!important;
}
#tabelaUsuarios.table-wrap,
#tabelaPerfis.table-wrap{
  margin:0 20px 24px!important;
  padding:0 22px 22px!important;
  background:#fff!important;
  border:1px solid #dbe5f0!important;
  border-top:0!important;
  border-left:1px solid #dbe5f0!important;
  border-radius:0 0 18px 18px!important;
  box-shadow:0 12px 28px rgba(15,23,42,.06)!important;
}
#tabelaUsuarios.table-wrap table,
#tabelaPerfis.table-wrap table{margin-top:0!important;}
#tabelaUsuarios th,
#tabelaPerfis th{
  background:#f4f7fb!important;
  color:#203b59!important;
  font-size:12px!important;
  text-transform:uppercase!important;
}
#tabelaUsuarios td,
#tabelaPerfis td{font-size:14px!important;}
#separadorUsuariosPerfis{display:none!important;}

/* OBS INTERNA v2.0.80 - DASHBOARD / KPI MONETARIO RESPONSIVO:
   Ajuste visual restrito ao card Impacto mensal aprovado. O grid/card pode
   encolher e o valor monetario usa tamanho fluido sem ellipsis nem quebra ruim. */
#areaDashboard.cards,
#areaDashboard.cards .card{
  min-width:0!important;
}
#cardImpacto{
  min-width:0!important;
  overflow:hidden!important;
}
.kpi-valor-responsivo{
  display:block!important;
  max-width:100%!important;
  min-width:0!important;
  overflow:visible!important;
  white-space:nowrap!important;
  line-height:1.05!important;
}
#cardImpacto .kpi-monetario-dashboard{
  font-size:clamp(1.2rem,1.45vw,1.45rem)!important;
  letter-spacing:0!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
}

/* v2.0.122 — apresentação restrita às consultas do colaborador e autoria da solicitação. */
.data-hora-v20122{white-space:nowrap;display:inline-block;font-variant-numeric:tabular-nums}
#detalheColaboradorConteudo .timeline-pro-item{overflow-wrap:anywhere;line-height:1.5}
#auditoriaColaboradorOficialV20119 .audit-item{line-height:1.5;overflow-wrap:anywhere}
#auditoriaColaboradorOficialV20119 details{margin-top:6px}
#auditoriaColaboradorOficialV20119 summary{cursor:pointer;color:#174b80;font-weight:600}
#auditoriaColaboradorOficialV20119 details p{margin:6px 0}
