/*
 * Acabamento visual final e tolerante a cache do Gestx.
 * Esta folha é carregada por último e garante o padrão visual essencial mesmo
 * quando uma hospedagem insiste em servir uma cópia antiga das folhas anteriores.
 */

/* Fundamentos visuais compartilhados por toda a aplicação. */
:root {
    --cor-primaria-900: #00478f;
    --cor-primaria-800: #0058b5;
    --cor-primaria-700: #0066cc;
    --cor-primaria-600: #1478db;
    --cor-primaria-100: #cfe4ff;
    --cor-primaria-50: #eaf3ff;
    --cor-laranja: #ff5500;
    --cor-laranja-suave: #fff0e8;
    --cor-texto: #10233d;
    --cor-texto-suave: #5d6f82;
    --cor-texto-discreto: #8b9baa;
    --cor-linha: #dfe9ec;
    --cor-fundo: #f3f7f8;
    --cor-superficie: #ffffff;
    --cor-sucesso: #087a45;
    --cor-sucesso-suave: #e9f8f0;
    --cor-alerta: #b96c00;
    --cor-alerta-suave: #fff6df;
    --cor-erro: #d9322b;
    --cor-erro-suave: #fff0ee;
    --sombra-suave: 0 12px 32px rgba(18, 48, 69, .08);
    --sombra-cartao: 0 5px 18px rgba(21, 55, 74, .045);
    --sombra-elevada: 0 28px 80px rgba(8, 25, 43, .22);
    --raio-pequeno: 10px;
    --raio-medio: 14px;
    --raio-grande: 20px;
    --raio-extra: 28px;
    --transicao-rapida: 150ms cubic-bezier(.2, .7, .2, 1);
    --transicao: 220ms cubic-bezier(.2, .7, .2, 1);
    --transicao-lenta: 360ms cubic-bezier(.2, .8, .2, 1);
    --foco: 0 0 0 4px rgba(0, 102, 204, .12);
    --fonte-principal: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { min-width: 320px; color-scheme: light; scroll-behavior: smooth; background: var(--cor-fundo); }
body { min-width: 320px; margin: 0; color: var(--cor-texto); background: var(--cor-fundo); font-family: var(--fonte-principal); font-size: 15px; line-height: 1.5; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; }
[hidden] { display: none !important; }
.somente-leitor { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0, 0, 0, 0) !important; white-space: nowrap !important; border: 0 !important; }
::selection { color: #fff; background: var(--cor-primaria-700); }
button, input, select, textarea { font: inherit; }
button, a, input, select, textarea { -webkit-tap-highlight-color: transparent; }
button { cursor: pointer; transition: color var(--transicao-rapida), background-color var(--transicao-rapida), border-color var(--transicao-rapida), box-shadow var(--transicao-rapida), opacity var(--transicao-rapida), transform var(--transicao-rapida); }
button:hover:not(:disabled) { transform: translateY(-2px); }
button:active:not(:disabled) { transform: translateY(0) scale(.97); }
button:disabled, input:disabled, select:disabled, textarea:disabled { cursor: not-allowed; opacity: .58; }
a { color: var(--cor-primaria-700); text-decoration: none; transition: color var(--transicao-rapida), background-color var(--transicao-rapida), border-color var(--transicao-rapida), box-shadow var(--transicao-rapida), transform var(--transicao-rapida); }
a:hover { color: var(--cor-primaria-900); }
img { display: block; max-width: 100%; }
h1, h2, h3, h4, p { margin-top: 0; }
h1, h2, h3, h4 { color: var(--cor-texto); line-height: 1.18; letter-spacing: -.035em; }
hr { height: 1px; margin: 22px 0; background: var(--cor-linha); border: 0; }

/* Foco consistente para teclado em todo controle interativo. */
:where(button, a, input, select, textarea, [tabindex]):focus-visible { outline: 0; box-shadow: var(--foco); }
.sobretitulo { margin-bottom: 6px; color: var(--cor-primaria-700); font-size: 13px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }

/* Marca do produto, com o detalhe laranja usado pelo projeto de referência. */
.marca { display: inline-flex; align-items: center; gap: 10px; color: var(--cor-texto); font-size: 19px; font-weight: 600; letter-spacing: -.045em; }
.marca:hover { color: var(--cor-texto); transform: translateY(-1px); }
.marca-simbolo { display: inline-grid; flex: 0 0 auto; width: 36px; height: 36px; color: #fff; background: var(--cor-primaria-700); border-radius: 11px; box-shadow: inset 0 -4px 0 var(--cor-laranja), 0 8px 18px rgba(0, 102, 204, .16); font-size: 18px; font-weight: 600; letter-spacing: -.08em; place-items: center; transition: box-shadow var(--transicao), transform var(--transicao); }
.marca:hover .marca-simbolo { box-shadow: inset 0 -4px 0 var(--cor-laranja), 0 12px 24px rgba(0, 102, 204, .22); transform: rotate(-4deg) scale(1.04); }
.marca-clara, .marca-clara:hover { color: #fff; }
.marca-clara .marca-simbolo { background: rgba(255, 255, 255, .16); border: 1px solid rgba(255, 255, 255, .24); box-shadow: inset 0 -3px 0 rgba(255, 85, 0, .92); }

/* Botões: movimento curto, relevo e resposta tátil sem alterar o fluxo da página. */
.botao, .botao-icone, .botao-usuario, .botao-lancador { position: relative; isolation: isolate; will-change: auto; transform-style: flat; }
.botao { appearance: none; display: inline-flex; min-height: 43px; padding: 10px 16px; align-items: center; justify-content: center; gap: 9px; color: var(--cor-texto); background: #fff; border: 1px solid var(--cor-linha); border-radius: 11px; cursor: pointer; overflow: hidden; font-size: 13px; font-weight: 600; box-shadow: 0 2px 4px rgba(18, 48, 69, .02); transition: color var(--transicao), background-color var(--transicao), border-color var(--transicao), box-shadow var(--transicao), transform var(--transicao); }
.botao::after { position: absolute; z-index: -1; inset: 0; content: ""; background: linear-gradient(110deg, transparent 15%, rgba(255, 255, 255, .22) 48%, transparent 78%); opacity: 0; transform: translateX(-110%); transition: opacity var(--transicao), transform 480ms ease; }
.botao:hover:not(:disabled) { color: var(--cor-primaria-700); border-color: #b7cad0; box-shadow: 0 11px 24px rgba(18, 48, 69, .10); transform: translateY(-3px); }
.botao:hover:not(:disabled)::after { opacity: 1; transform: translateX(110%); }
.botao:active:not(:disabled) { box-shadow: 0 4px 10px rgba(18, 48, 69, .08); transform: translateY(0) scale(.975); }
.botao i { transition: transform var(--transicao); }
.botao:hover:not(:disabled) i { transform: translateX(1px) scale(1.08); }
.botao-primario { color: #fff; background: linear-gradient(135deg, var(--cor-primaria-600), var(--cor-primaria-800)); border-color: var(--cor-primaria-700); box-shadow: 0 9px 20px rgba(0, 102, 204, .22); }
.botao-primario:hover:not(:disabled) { color: #fff; background: linear-gradient(135deg, var(--cor-primaria-700), var(--cor-primaria-900)); border-color: var(--cor-primaria-900); box-shadow: 0 15px 28px rgba(0, 102, 204, .28); }
.botao-secundario { color: var(--cor-primaria-700); background: var(--cor-primaria-50); border-color: rgba(0, 102, 204, .20); }
.botao-secundario:hover:not(:disabled) { color: #fff; background: var(--cor-primaria-700); border-color: var(--cor-primaria-700); }
.botao-perigo { color: #fff; background: linear-gradient(135deg, #e0473f, #c92620); border-color: var(--cor-erro); box-shadow: 0 9px 20px rgba(217, 50, 43, .18); }
.botao-perigo:hover:not(:disabled) { color: #fff; background: #b9221d; border-color: #b9221d; box-shadow: 0 14px 26px rgba(217, 50, 43, .24); }
.botao-perigo::after, .botao-perigo:hover:not(:disabled)::after { display: none; content: none; opacity: 0; }
.botao-largo { width: 100%; min-height: 49px; }
.botao-icone { appearance: none; display: inline-grid; flex: 0 0 auto; width: 42px; height: 42px; padding: 0; color: #587086; background: #fff; border: 1px solid var(--cor-linha); border-radius: 12px; cursor: pointer; box-shadow: 0 3px 10px rgba(23, 57, 76, .035); place-items: center; transition: color var(--transicao), background-color var(--transicao), border-color var(--transicao), box-shadow var(--transicao), transform var(--transicao); }
.botao-icone:hover:not(:disabled) { color: var(--cor-primaria-700); background: var(--cor-primaria-50); border-color: rgba(0, 102, 204, .18); box-shadow: 0 10px 22px rgba(0, 102, 204, .12); transform: translateY(-3px) scale(1.03); }
.botao-icone:active:not(:disabled) { box-shadow: 0 3px 8px rgba(18, 48, 69, .08); transform: translateY(0) scale(.91); }
.botao-icone i { transition: transform var(--transicao); }
.botao-icone:hover:not(:disabled) i { transform: scale(1.10) rotate(-4deg); }

/* Formulários, mensagens e controles nativos. */
.formulario { display: grid; gap: 17px; }
.grupo-campo { display: grid; min-width: 0; gap: 7px; }
.grupo-campo label { color: #334b63; font-size: 13px; font-weight: 600; }
.campo, input:not([type="checkbox"]):not([type="radio"]):not([type="file"]), select, textarea { width: 100%; color: var(--cor-texto); background: #fff; border: 1px solid var(--cor-linha); border-radius: var(--raio-pequeno); outline: none; transition: border-color var(--transicao), box-shadow var(--transicao), background-color var(--transicao), transform var(--transicao); }
.campo, input:not([type="checkbox"]):not([type="radio"]):not([type="file"]), select { min-height: 46px; padding: 0 13px; }
textarea.campo, textarea { min-height: 108px; padding: 11px 13px; resize: vertical; }
.campo:hover, input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):hover, select:hover, textarea:hover { background: #fff; border-color: #b8cad2; }
.campo:focus, input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):focus, select:focus, textarea:focus { background: #fff; border-color: var(--cor-primaria-700); box-shadow: var(--foco); transform: translateY(-1px); }
.campo::placeholder, input::placeholder, textarea::placeholder { color: #98a9b7; }
input[type="checkbox"], input[type="radio"] { accent-color: var(--cor-primaria-700); }
input[type="file"] { width: 100%; padding: 9px; color: var(--cor-texto-suave); background: #fff; border: 1px dashed #b9cad2; border-radius: 11px; }
input[type="file"]::file-selector-button { min-height: 34px; margin-right: 10px; padding: 7px 12px; color: var(--cor-primaria-700); background: var(--cor-primaria-50); border: 0; border-radius: 8px; cursor: pointer; font-weight: 600; transition: color var(--transicao), background-color var(--transicao), transform var(--transicao); }
input[type="file"]::file-selector-button:hover { color: #fff; background: var(--cor-primaria-700); transform: translateY(-1px); }
.campo-ajuda { margin: 0; color: var(--cor-texto-suave); font-size: 13px; }
.campo-ajuda a { display: inline-block; font-weight: 600; }
.campo-ajuda a:hover { transform: translateX(2px); }
.linha-formulario, .grade-campos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; }
.grade-campos-tres { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.campo-linha-inteira { grid-column: 1 / -1; }
.acoes-formulario { display: flex; align-items: center; justify-content: flex-end; gap: 10px; }
.secao-formulario { display: grid; gap: 15px; padding: 18px; background: #fff; border: 1px solid var(--cor-linha); border-radius: var(--raio-medio); }
.mensagem-formulario { margin-bottom: 16px; padding: 12px 14px; border: 1px solid; border-radius: 11px; font-size: 13px; font-weight: 600; animation: entrada-mensagem-gestx 280ms ease both; }
.mensagem-erro { color: #a33d35; background: #fff4f2; border-color: #ffd0ca; }
.mensagem-sucesso { color: #05684f; background: #ecfbf4; border-color: #b7e6d4; }
.lista-erros { margin: 7px 0 0; padding-left: 19px; }

/* Cartões, listas, tabelas e agrupamentos de conteúdo. */
.cartao, .painel { position: relative; padding: 22px; background: var(--cor-superficie); border: 1px solid var(--cor-linha); border-radius: var(--raio-grande); box-shadow: var(--sombra-cartao); transition: border-color var(--transicao), box-shadow var(--transicao), transform var(--transicao); }
.cartao:hover, .painel:hover { border-color: #c8d9de; box-shadow: var(--sombra-suave); transform: translateY(-4px); }
.cartao:active, .painel:active { transform: translateY(-1px) scale(.995); }
.cartao > ul:not([class]), .painel > ul:not([class]), .artigo-biblioteca > ul { display: grid; margin: 12px 0 0; padding: 0; gap: 8px; list-style: none; }
.cartao > ul:not([class]) > li, .painel > ul:not([class]) > li, .artigo-biblioteca > ul > li { position: relative; min-height: 34px; padding: 8px 10px 8px 34px; background: #f8fafb; border: 1px solid #edf2f3; border-radius: 10px; transition: background-color var(--transicao), border-color var(--transicao), transform var(--transicao); }
.cartao > ul:not([class]) > li::before, .painel > ul:not([class]) > li::before, .artigo-biblioteca > ul > li::before { position: absolute; top: 10px; left: 11px; display: grid; width: 16px; height: 16px; content: "✓"; color: #fff; background: var(--cor-primaria-700); border-radius: 50%; font-size: 13px; font-weight: 600; place-items: center; }
.cartao > ul:not([class]) > li:hover, .painel > ul:not([class]) > li:hover, .artigo-biblioteca > ul > li:hover { background: #fff; border-color: #cfdee3; transform: translateX(3px); }
.artigo-biblioteca > ol { display: grid; margin: 12px 0 0; padding: 0; gap: 8px; list-style: none; counter-reset: etapa-biblioteca; }
.artigo-biblioteca > ol > li { position: relative; min-height: 38px; padding: 9px 10px 9px 42px; background: #f8fafb; border: 1px solid #edf2f3; border-radius: 10px; counter-increment: etapa-biblioteca; }
.artigo-biblioteca > ol > li::before { position: absolute; top: 8px; left: 9px; display: grid; width: 22px; height: 22px; content: counter(etapa-biblioteca); color: var(--cor-primaria-700); background: var(--cor-primaria-50); border-radius: 7px; font-size: 13px; font-weight: 600; place-items: center; }
.tabela-responsiva { width: 100%; overflow-x: auto; background: #fff; border: 1px solid var(--cor-linha); border-radius: var(--raio-grande); box-shadow: var(--sombra-cartao); }
.tabela { width: 100%; min-width: 680px; border-collapse: collapse; }
.tabela th, .tabela td { padding: 14px 16px; border-bottom: 1px solid #e9eef0; text-align: left; vertical-align: middle; }
.tabela th { color: #52647b; background: #f8fafb; font-size: 13px; font-weight: 600; letter-spacing: .055em; text-transform: uppercase; }
.tabela tbody tr { transition: background-color var(--transicao); }
.tabela tbody tr:hover { background: #f5f9ff; }
.etiqueta { display: inline-flex; min-height: 22px; padding: 3px 8px; align-items: center; gap: 5px; color: var(--cor-primaria-700); background: var(--cor-primaria-50); border-radius: 7px; font-size: 13px; font-weight: 600; }

/* Estrutura autenticada: lateral, cabeçalho e conteúdo. */
.corpo-aplicacao { min-width: 320px; overflow-x: hidden; background: var(--cor-fundo); }
.estrutura-aplicacao { --largura-barra: 252px; display: grid; min-height: 100vh; grid-template-columns: var(--largura-barra) minmax(0, 1fr); transition: grid-template-columns 280ms cubic-bezier(.2, .7, .2, 1); }
.estrutura-aplicacao.barra-recolhida { --largura-barra: 78px; }
.barra-lateral { position: sticky; z-index: 500; top: 0; display: flex; width: var(--largura-barra); height: 100vh; padding: 26px 14px 16px; color: var(--cor-texto); background: #fff; border-right: 1px solid #e4edef; box-shadow: 10px 0 30px rgba(16, 35, 61, .04); flex-direction: column; overflow: visible; transition: width 280ms cubic-bezier(.2, .7, .2, 1), padding var(--transicao), box-shadow var(--transicao); }
.topo-barra-lateral { position: relative; display: flex; min-height: 44px; padding: 0 9px; align-items: center; }
.barra-lateral .marca { min-width: 144px; }
.barra-lateral .botao-recolher { position: absolute; z-index: 2; top: 58px; right: -12px; width: 24px; height: 24px; color: #718596; background: rgba(255, 255, 255, .96); border: 1px solid var(--cor-linha); border-radius: 8px; box-shadow: 0 4px 12px rgba(16, 35, 61, .08); opacity: .58; }
.barra-lateral .botao-recolher:hover { color: var(--cor-primaria-700); background: #fff; border-color: #c8d7dc; box-shadow: 0 6px 14px rgba(16, 35, 61, .11); opacity: 1; transform: none; }
.barra-lateral .botao-recolher:active { transform: scale(.92); }
.barra-lateral .botao-recolher i { font-size: 13px; transition: transform 280ms cubic-bezier(.2, .7, .2, 1); }
.barra-recolhida .botao-recolher i { transform: rotate(180deg); }
.navegacao-lateral { display: block; min-height: 0; padding: 28px 0 10px; overflow-x: hidden; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #d4e0e4 transparent; }
.titulo-grupo { margin: 20px 13px 7px; color: #97a8b5; font-size: 13px; font-weight: 600; letter-spacing: .13em; text-transform: uppercase; white-space: nowrap; }
.titulo-grupo:first-child { margin-top: 0; }
.item-navegacao { position: relative; display: flex; min-height: 45px; margin: 3px 0; padding: 0 13px; align-items: center; gap: 12px; color: #63798d; background: transparent; border: 0; border-radius: 10px; white-space: nowrap; font-size: 13px; font-weight: 600; transition: color var(--transicao), background-color var(--transicao), box-shadow var(--transicao), transform var(--transicao); }
.item-navegacao i { display: inline-grid; flex: 0 0 20px; width: 20px; font-size: 18px; text-align: center; place-items: center; transition: transform var(--transicao); }
.item-navegacao::after { position: absolute; top: 10px; right: 8px; bottom: 10px; width: 3px; content: ""; background: var(--cor-primaria-700); border-radius: 3px; opacity: 0; transform: scaleY(.2); transition: opacity var(--transicao), transform var(--transicao); }
.item-navegacao:hover { color: var(--cor-primaria-700); background: #f1f7fb; box-shadow: 0 5px 15px rgba(0, 102, 204, .06); transform: translateX(4px); }
.item-navegacao:hover i { transform: scale(1.10) rotate(-3deg); }
.item-navegacao:active { transform: translateX(1px) scale(.975); }
.item-navegacao-ativo, .item-navegacao[aria-current="page"] { color: var(--cor-primaria-700); background: var(--cor-primaria-50); box-shadow: inset 3px 0 0 var(--cor-primaria-700); font-weight: 600; }
.item-navegacao-ativo::after, .item-navegacao[aria-current="page"]::after { opacity: 1; transform: scaleY(1); }
.rodape-barra-lateral { display: grid; gap: 7px; margin-top: auto; padding: 14px 0 0; border-top: 1px solid #edf2f2; }
.rodape-barra-lateral .item-navegacao { color: #9c5a57; }
.rodape-barra-lateral .item-navegacao:hover { color: var(--cor-erro); background: var(--cor-erro-suave); }
.texto-barra { opacity: 1; transition: opacity 130ms ease, transform 190ms ease; }
.barra-recolhida .texto-barra { width: 0; max-width: 0; margin: 0; overflow: hidden; pointer-events: none; opacity: 0; transform: translateX(-8px); }
.barra-recolhida .barra-lateral { padding-inline: 13px; }
.barra-recolhida .topo-barra-lateral { padding-inline: 9px; }
.barra-recolhida .barra-lateral .marca { min-width: 36px; width: 36px; }
.barra-recolhida .item-navegacao { width: 48px; min-width: 48px; margin-inline: auto; padding-inline: 0; justify-content: center; gap: 0; }
.barra-recolhida .item-navegacao::after { display: none; }
.barra-recolhida .item-navegacao-ativo, .barra-recolhida .item-navegacao[aria-current="page"] { box-shadow: none; }
.barra-recolhida .item-navegacao:hover { transform: translateY(-2px); }
.barra-recolhida .titulo-grupo { height: 1px; margin: 10px 0; overflow: hidden; }
.coluna-principal { min-width: 0; background: var(--cor-fundo); }
.cabecalho-aplicacao { position: sticky; z-index: 400; top: 0; display: flex; min-height: 78px; padding: 14px clamp(24px, 4vw, 64px); align-items: center; justify-content: flex-end; gap: 28px; background: rgba(255, 255, 255, .95); border-bottom: 1px solid #e2ecec; box-shadow: 0 8px 24px rgba(22, 50, 68, .025); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); }
.contexto-pagina { min-width: 0; }
.contexto-pagina .trilha { display: flex; margin-bottom: 5px; align-items: center; gap: 6px; color: #718396; font-size: 13px; font-weight: 600; }
.contexto-pagina .trilha a { color: #718396; }
.contexto-pagina .trilha a:hover { color: var(--cor-primaria-700); transform: translateX(-1px); }
.contexto-pagina h1 { margin-bottom: 2px; font-size: clamp(23px, 2vw, 28px); letter-spacing: -.05em; }
.contexto-pagina > p:last-child { margin-bottom: 0; color: var(--cor-texto-suave); font-size: 13px; }
.acoes-cabecalho { display: flex; width: 100%; align-items: center; justify-content: flex-end; gap: 10px; }

/* Busca real de rotas com painel flutuante e navegação por teclado. */
.area-busca-cabecalho { position: relative; }
.busca-cabecalho { display: flex; width: clamp(250px, 25vw, 390px); min-height: 46px; padding: 0 12px 0 14px; align-items: center; gap: 10px; color: #8294a1; background: #f5f8fa; border: 1px solid transparent; border-radius: 13px; cursor: text; transition: background-color var(--transicao), border-color var(--transicao), box-shadow var(--transicao), transform var(--transicao); }
.busca-cabecalho:hover { background: #fff; border-color: #c8d7dc; box-shadow: 0 9px 22px rgba(25, 58, 78, .075); transform: translateY(-2px); }
.busca-cabecalho:focus-within, .busca-cabecalho-aberta .busca-cabecalho { background: #fff; border-color: rgba(0, 102, 204, .48); box-shadow: var(--foco), 0 12px 28px rgba(0, 102, 204, .09); transform: translateY(-1px); }
.busca-cabecalho > i { flex: 0 0 auto; font-size: 17px; transition: color var(--transicao), transform var(--transicao); }
.busca-cabecalho:focus-within > i { color: var(--cor-primaria-700); transform: scale(1.08); }
.busca-cabecalho input { min-width: 0; min-height: 42px !important; padding: 0 !important; color: var(--cor-texto) !important; background: transparent !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; transform: none !important; }
.busca-cabecalho input::-webkit-search-cancel-button { cursor: pointer; }
.busca-cabecalho kbd { flex: 0 0 auto; padding: 3px 6px; color: #7f909e; background: #fff; border: 1px solid #dbe5e8; border-bottom-width: 2px; border-radius: 6px; font-family: inherit; font-size: 13px; font-weight: 600; white-space: nowrap; }
.resultados-busca-cabecalho { position: absolute; z-index: 980; top: calc(100% + 10px); right: 0; width: min(430px, calc(100vw - 24px)); max-width: calc(100vw - 24px); max-height: min(520px, calc(100dvh - 130px)); padding: 8px; background: rgba(255, 255, 255, .99); border: 1px solid var(--cor-linha); border-radius: 16px; box-shadow: 0 26px 70px rgba(8, 25, 43, .22); backdrop-filter: blur(18px); overflow: hidden; animation: entrada-busca-gestx 230ms cubic-bezier(.2, .7, .2, 1) both; transform-origin: top center; }
.resultados-busca-cabecalho > header { display: flex; min-height: 34px; padding: 5px 8px 8px; align-items: center; justify-content: space-between; color: var(--cor-texto-suave); }
.resultados-busca-cabecalho > header strong { color: var(--cor-texto); font-size: 13px; letter-spacing: .06em; text-transform: uppercase; }
.resultados-busca-cabecalho > header small { font-size: 13px; }
.lista-resultados-busca { display: grid; width: 100%; max-width: 100%; max-height: min(385px, calc(100dvh - 235px)); padding: 2px; gap: 4px; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
.resultado-busca-cabecalho { display: grid; width: 100%; max-width: 100%; min-height: 58px; padding: 8px 9px; grid-template-columns: 38px minmax(0, 1fr) 22px; align-items: center; gap: 10px; color: var(--cor-texto); background: transparent; border: 1px solid transparent; border-radius: 11px; }
.icone-resultado-busca { display: grid; width: 38px; height: 38px; color: var(--cor-primaria-700); background: var(--cor-primaria-50); border-radius: 10px; place-items: center; transition: color var(--transicao), background-color var(--transicao), transform var(--transicao); }
.texto-resultado-busca { display: grid; min-width: 0; gap: 2px; }
.texto-resultado-busca strong, .texto-resultado-busca small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.texto-resultado-busca strong { color: inherit; font-size: 13px; }
.texto-resultado-busca small { color: var(--cor-texto-discreto); font-size: 13px; }
.resultado-busca-cabecalho > i { color: #91a2af; font-size: 13px; opacity: 0; transform: translate(-4px, 4px); transition: color var(--transicao), opacity var(--transicao), transform var(--transicao); }
.resultado-busca-cabecalho:hover, .resultado-busca-cabecalho.resultado-busca-destacado { color: var(--cor-primaria-700); background: #f5f9ff; border-color: rgba(0, 102, 204, .13); box-shadow: 0 7px 18px rgba(0, 102, 204, .07); transform: none; }
.resultado-busca-cabecalho:hover .icone-resultado-busca, .resultado-busca-cabecalho.resultado-busca-destacado .icone-resultado-busca { color: #fff; background: var(--cor-primaria-700); transform: scale(1.04) rotate(-3deg); }
.resultado-busca-cabecalho:hover > i, .resultado-busca-cabecalho.resultado-busca-destacado > i { color: var(--cor-primaria-700); opacity: 1; transform: none; }
.busca-sem-resultados { display: grid; min-height: 112px; margin: 0; color: var(--cor-texto-suave); place-items: center; align-content: center; gap: 7px; font-size: 13px; }
.busca-sem-resultados i { display: grid; width: 34px; height: 34px; color: var(--cor-primaria-700); background: var(--cor-primaria-50); border-radius: 10px; place-items: center; }
.resultados-busca-cabecalho > footer { display: flex; min-height: 34px; margin-top: 6px; padding: 8px 7px 2px; align-items: center; gap: 12px; color: #8b9ba8; border-top: 1px solid #edf2f3; font-size: 13px; }
.resultados-busca-cabecalho > footer span { display: inline-flex; align-items: center; gap: 3px; }
.resultados-busca-cabecalho > footer kbd { padding: 2px 4px; color: #607486; background: #f4f7f8; border: 1px solid #dce5e8; border-radius: 4px; font-family: inherit; font-size: 13px; }
.cabecalho-resultados-busca { display: grid !important; min-height: 70px !important; padding: 7px 8px 10px !important; gap: 8px; align-items: stretch !important; }
.cabecalho-resultados-busca > span { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.cabecalho-resultados-busca > span small { color: var(--cor-texto-discreto); }
.controle-escopo-busca { display: inline-flex; width: max-content; min-height: 28px; padding: 4px 7px 4px 5px; align-items: center; gap: 7px; color: var(--cor-texto-suave); background: #f4f7f8; border: 1px solid #e3ebed; border-radius: 999px; cursor: pointer; font-size: 13px; transition: color var(--transicao), background-color var(--transicao), border-color var(--transicao); }
.controle-escopo-busca:hover { color: var(--cor-primaria-700); background: #fff; border-color: #bfd3dd; }
.controle-escopo-busca input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.trilho-escopo-busca { position: relative; display: inline-flex; width: 29px; height: 17px; flex: 0 0 auto; padding: 2px; background: #c9d5da; border-radius: 999px; transition: background-color var(--transicao), box-shadow var(--transicao); }
.trilho-escopo-busca i { display: block; width: 13px; height: 13px; background: #fff; border-radius: 50%; box-shadow: 0 2px 5px rgba(22, 50, 68, .18); transition: transform var(--transicao); }
.controle-escopo-busca input:checked + .trilho-escopo-busca { background: var(--cor-primaria-700); }
.controle-escopo-busca input:checked + .trilho-escopo-busca i { transform: translateX(12px); }
.controle-escopo-busca input:focus-visible + .trilho-escopo-busca { box-shadow: var(--foco); }
.resultados-paginas-busca, .resultados-registros-busca { display: grid; width: 100%; min-width: 0; gap: 4px; }
.grupo-resultados-registros { margin: 4px 7px 2px; color: var(--cor-texto-discreto); font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.busca-orientacao { display: grid; min-height: 72px; margin: 2px 0; padding: 12px; color: var(--cor-texto-suave); text-align: center; place-items: center; align-content: center; gap: 7px; font-size: 13px; }
.busca-orientacao i { color: var(--cor-primaria-700); font-size: 17px; }
.resultados-registros-carregando { opacity: .78; }
.icone-girando { display: inline-block; animation: girar-gestx .75s linear infinite; }

/* Notificação e menu de usuário no cabeçalho. */
.acoes-cabecalho > .botao-icone { position: relative; }
.contador-notificacoes { position: absolute; top: -5px; right: -5px; display: inline-grid; min-width: 18px; height: 18px; padding: 0 4px; color: #fff; background: var(--cor-laranja); border: 2px solid #fff; border-radius: 999px; box-shadow: 0 4px 10px rgba(255, 85, 0, .22); font-size: 13px; line-height: 1; place-items: center; }
.painel-notificacoes-cabecalho { position: fixed; z-index: 1490; top: 72px; right: clamp(18px, 4vw, 64px); display: grid; width: min(440px, calc(100vw - 28px)); max-height: min(680px, calc(100vh - 92px)); overflow: hidden; color: var(--cor-texto); background: rgba(255, 255, 255, .995); border: 1px solid var(--cor-linha); border-radius: 18px; box-shadow: 0 24px 70px rgba(11, 43, 74, .2); animation: entrada-menu-gestx 220ms cubic-bezier(.2, .7, .2, 1) both; transform-origin: top right; }
.cabecalho-painel-notificacoes { display: flex; min-height: 68px; padding: 13px 14px 13px 18px; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--cor-linha); }
.cabecalho-painel-notificacoes > div { display: grid; gap: 2px; }
.cabecalho-painel-notificacoes strong { font-size: 15px; }
.cabecalho-painel-notificacoes small { color: var(--cor-texto-suave); font-size: 13px; }
.lista-painel-notificacoes { display: grid; overflow: auto; overscroll-behavior: contain; }
.item-painel-notificacoes { position: relative; display: grid; padding: 14px 12px 14px 16px; grid-template-columns: 38px minmax(0, 1fr) auto; align-items: start; gap: 11px; border-bottom: 1px solid var(--cor-linha); }
.item-painel-notificacoes:last-child { border-bottom: 0; }
.item-painel-notificacoes.notificacao-nao-vista { background: var(--cor-primaria-50); }
.item-painel-notificacoes.notificacao-nao-vista::before { position: absolute; top: 20px; left: 7px; width: 5px; height: 5px; content: ''; background: var(--cor-primaria-600); border-radius: 999px; }
.icone-item-notificacao { display: grid; width: 36px; height: 36px; color: var(--cor-primaria-700); background: #fff; border: 1px solid var(--cor-linha); border-radius: 11px; place-items: center; }
.item-painel-notificacoes-sucesso .icone-item-notificacao { color: var(--cor-sucesso); }
.item-painel-notificacoes-alerta .icone-item-notificacao { color: var(--cor-alerta); }
.item-painel-notificacoes-erro .icone-item-notificacao { color: var(--cor-erro); }
.texto-item-notificacao { display: grid; min-width: 0; gap: 4px; }
.texto-item-notificacao strong { font-size: 13px; line-height: 1.35; }
.texto-item-notificacao p { margin: 0; color: var(--cor-texto-suave); font-size: 13px; line-height: 1.5; overflow-wrap: anywhere; }
.texto-item-notificacao small { color: var(--cor-texto-suave); font-size: 13px; }
.texto-item-notificacao a { display: inline-flex; width: max-content; margin-top: 3px; align-items: center; gap: 5px; font-size: 13px; font-weight: 700; }
.acoes-item-notificacao { display: flex; gap: 4px; }
.acoes-item-notificacao .botao-icone { width: 30px; height: 30px; border-radius: 9px; }
.estado-vazio-notificacoes { display: grid; min-height: 220px; padding: 28px; color: var(--cor-texto-suave); text-align: center; place-content: center; justify-items: center; gap: 7px; }
.estado-vazio-notificacoes > i { margin-bottom: 5px; font-size: 26px; }
.estado-vazio-notificacoes strong { color: var(--cor-texto); font-size: 13px; }
.estado-vazio-notificacoes span { font-size: 13px; }
.menu-usuario { position: relative; }
.botao-usuario { display: flex; min-width: 180px; min-height: 48px; padding: 6px 10px 6px 7px; align-items: center; gap: 9px; color: var(--cor-texto); background: #fff; border: 1px solid var(--cor-linha); border-radius: 14px; cursor: pointer; box-shadow: 0 5px 15px rgba(24, 56, 73, .04); transition: border-color var(--transicao), box-shadow var(--transicao), transform var(--transicao); }
.botao-usuario:hover { border-color: #b8cbd1; box-shadow: var(--sombra-suave); transform: translateY(-3px); }
.botao-usuario:active { transform: translateY(0) scale(.975); }
.botao-usuario > i { color: #80909d; font-size: 13px; transition: transform var(--transicao); }
.botao-usuario[aria-expanded="true"] > i { transform: rotate(180deg); }
.avatar-usuario { display: grid; flex: 0 0 auto; width: 36px; height: 36px; color: #fff !important; background: linear-gradient(145deg, var(--cor-primaria-600), var(--cor-primaria-900)); border-radius: 50%; box-shadow: inset 0 -3px 0 rgba(255, 85, 0, .85); font-size: 13px; font-weight: 600; place-items: center; }
.dados-usuario { display: grid; min-width: 0; margin-right: auto; text-align: left; }
.dados-usuario strong, .dados-usuario small { max-width: 105px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dados-usuario strong { font-size: 13px; }
.dados-usuario small { color: #8a9baa; font-size: 13px; }
.opcoes-usuario { position: absolute; z-index: 900; top: calc(100% + 10px); right: 0; width: 258px; padding: 10px; background: rgba(255, 255, 255, .99); border: 1px solid var(--cor-linha); border-radius: 15px; box-shadow: var(--sombra-elevada); backdrop-filter: blur(16px); animation: entrada-menu-gestx 220ms cubic-bezier(.2, .7, .2, 1) both; transform-origin: top right; }
.opcoes-usuario p { display: grid; margin: 0 0 8px; padding: 8px 10px 12px; border-bottom: 1px solid var(--cor-linha); }
.opcoes-usuario p small { color: var(--cor-texto-suave); overflow: hidden; text-overflow: ellipsis; }
.opcoes-usuario a { display: flex; min-height: 41px; padding: 9px 10px; align-items: center; gap: 9px; color: var(--cor-texto); border-radius: 9px; font-size: 13px; font-weight: 600; }
.opcoes-usuario a:hover { color: var(--cor-primaria-700); background: var(--cor-primaria-50); transform: translateX(4px); }
.opcoes-usuario a:last-child:hover { color: var(--cor-erro); background: var(--cor-erro-suave); }

/* Conteúdo das páginas e estado inicial de módulos ainda vazios. */
.conteudo-principal { position: relative; width: 100%; max-width: 1540px; min-height: calc(100vh - 78px); margin: 0 auto; padding: clamp(24px, 3vw, 40px) clamp(24px, 4vw, 64px) 48px; }
.conteudo-principal.conteudo-animacao-dinamica { animation: entrada-conteudo-gestx 420ms cubic-bezier(.2, .7, .2, 1) both; }
.conteudo-principal .animacao-entrada-consumida { animation: none !important; }
.sobreposicao-navegacao { position: fixed; z-index: 50000; inset: 0; display: grid; padding: 20px; background: rgba(243, 247, 248, .76); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); cursor: progress; pointer-events: auto; place-items: center; animation: entrada-fundo-modal-gestx 140ms ease both; }
.estado-carregamento-navegacao { display: grid; min-width: 150px; padding: 18px 20px; justify-items: center; gap: 11px; color: var(--cor-texto-suave); background: rgba(255, 255, 255, .94); border: 1px solid var(--cor-linha); border-radius: 16px; box-shadow: var(--sombra-elevada); font-size: 13px; }
.cabecalho-conteudo { display: flex; margin-bottom: 22px; align-items: flex-end; justify-content: space-between; gap: 18px; }
.cabecalho-conteudo h2 { margin-bottom: 5px; font-size: clamp(22px, 2vw, 26px); letter-spacing: -.05em; }
.cabecalho-conteudo p { max-width: 720px; margin-bottom: 0; color: var(--cor-texto-suave); font-size: 13px; }
.grade-paginas { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 14px; }
.cartao-vazio { display: grid; min-height: clamp(330px, 52vh, 540px); padding: clamp(28px, 5vw, 64px); text-align: center; place-items: center; overflow: hidden; background-color: #fff; background-image: radial-gradient(circle at 16% 18%, rgba(0, 102, 204, .07), transparent 23%), radial-gradient(circle at 88% 82%, rgba(255, 85, 0, .055), transparent 20%), linear-gradient(rgba(223, 233, 236, .34) 1px, transparent 1px), linear-gradient(90deg, rgba(223, 233, 236, .34) 1px, transparent 1px); background-size: auto, auto, 34px 34px, 34px 34px; }
.cartao-vazio::before { position: absolute; width: min(430px, 70%); aspect-ratio: 1; content: ""; border: 1px solid rgba(0, 102, 204, .09); border-radius: 50%; transform: scale(.84); transition: border-color var(--transicao-lenta), transform var(--transicao-lenta); }
.cartao-vazio:hover::before { border-color: rgba(0, 102, 204, .16); transform: scale(.91) rotate(4deg); }
.cartao-vazio > div { position: relative; z-index: 1; max-width: 620px; }
.cartao-vazio .icone-vazio { display: inline-grid; width: 66px; height: 66px; margin-bottom: 17px; color: #fff; background: linear-gradient(145deg, var(--cor-primaria-600), var(--cor-primaria-900)); border: 1px solid rgba(255, 255, 255, .30); border-radius: 19px; box-shadow: 0 17px 34px rgba(0, 102, 204, .23), inset 0 -4px 0 rgba(255, 85, 0, .88); font-size: 27px; place-items: center; transition: box-shadow var(--transicao), transform var(--transicao); }
.cartao-vazio:hover .icone-vazio { box-shadow: 0 22px 42px rgba(0, 102, 204, .28), inset 0 -4px 0 rgba(255, 85, 0, .95); transform: translateY(-6px) rotate(-4deg) scale(1.04); }
.cartao-vazio h2 { margin-bottom: 7px; font-size: 20px; }
.cartao-vazio p { max-width: 580px; margin: 0 auto; color: var(--cor-texto-suave); font-size: 13px; }

/* Autenticação em duas áreas, fiel ao sistema visual azul e branco do Gestx. */
.corpo-autenticacao { min-height: 100vh; background: #f7fafb; }
.painel-autenticacao { display: grid; min-height: 100vh; grid-template-columns: minmax(420px, 1fr) minmax(410px, .88fr); overflow: hidden; }
.marca-autenticacao { position: relative; display: flex; min-height: 100vh; padding: 46px clamp(38px, 8vw, 118px); color: #fff; background: linear-gradient(145deg, #0066cc 0%, #0056b3 58%, #00458f 100%); flex-direction: column; justify-content: space-between; overflow: hidden; isolation: isolate; }
.marca-autenticacao::before, .marca-autenticacao::after { position: absolute; z-index: -1; content: ""; border: 1px solid rgba(255, 255, 255, .15); border-radius: 50%; animation: orbita-autenticacao-gestx 10s ease-in-out infinite; }
.marca-autenticacao::before { right: -20%; bottom: -39%; width: 74%; aspect-ratio: 1; box-shadow: 0 0 0 54px rgba(255, 255, 255, .025), 0 0 0 108px rgba(255, 255, 255, .018); }
.marca-autenticacao::after { top: 8%; right: -11%; width: min(46vw, 620px); aspect-ratio: 1; animation-delay: -4s; animation-direction: reverse; }
.marca-autenticacao > * { position: relative; z-index: 1; }
.marca-autenticacao .sobretitulo { color: rgba(255, 255, 255, .73); }
.marca-autenticacao h1 { max-width: 560px; margin: clamp(105px, 17vh, 178px) 0 0; color: #fff; font-size: clamp(40px, 4.5vw, 68px); line-height: .98; letter-spacing: -.066em; text-wrap: balance; animation: entrada-titulo-autenticacao-gestx 760ms .04s both; }
.marca-autenticacao div > p:last-child { max-width: 470px; margin: 27px 0 0; color: rgba(255, 255, 255, .78); font-size: 16px; line-height: 1.68; animation: entrada-titulo-autenticacao-gestx 760ms .12s both; }
.rodape-marca { margin: 0; color: rgba(255, 255, 255, .66); font-size: 13px; }
.formulario-autenticacao { display: grid; min-height: 100vh; padding: clamp(28px, 5vw, 68px); background: #fbfdfd; place-items: center; }
.cartao-autenticacao { width: min(440px, 100%); padding: 0; background: transparent; border: 0; border-radius: 0; box-shadow: none; animation: entrada-formulario-autenticacao-gestx 680ms .12s both; }
.cartao-autenticacao > header { margin-bottom: 29px; }
.cartao-autenticacao h2 { margin-bottom: 9px; font-size: 34px; letter-spacing: -.055em; }
.cartao-autenticacao header > p:last-child { margin-bottom: 0; color: var(--cor-texto-suave); }
.cartao-autenticacao .formulario { gap: 17px; }
.cartao-autenticacao .campo { background: #fff; box-shadow: 0 3px 10px rgba(22, 52, 70, .025); }
.cartao-autenticacao .botao-largo { margin-top: 5px; }
.opcoes-autenticacao { display: flex; margin-top: 21px; align-items: center; justify-content: center; gap: 7px; color: var(--cor-texto-suave); font-size: 13px; }
.opcoes-autenticacao a { font-weight: 600; }
.opcoes-autenticacao a:hover { transform: translateY(-1px); }
.separador-autenticacao { height: 1px; margin: 23px 0; background: var(--cor-linha); }
.requisitos-senha { display: grid; margin: 0; padding: 13px 13px 13px 31px; gap: 4px; color: var(--cor-texto-suave); background: #f7fafb; border: 1px solid #e8f0f1; border-radius: 11px; font-size: 13px; }

/* Componentes flutuantes recebem a mesma geometria, cor e movimento. */
body.modal-aberto { overflow: hidden; }
.lancador-suspenso { position: fixed; z-index: 850; right: clamp(18px, 3vw, 36px); bottom: clamp(18px, 3vw, 32px); display: grid; justify-items: end; gap: 12px; }
.botao-lancador { appearance: none; display: inline-grid; width: 56px; height: 56px; padding: 0; overflow: hidden; color: #fff; background-color: var(--cor-primaria-700); background-image: linear-gradient(145deg, var(--cor-primaria-600), var(--cor-primaria-900)); border: 0; border-radius: 50%; cursor: pointer; box-shadow: 0 15px 34px rgba(0, 102, 204, .30), inset 0 -4px 0 rgba(255, 85, 0, .86); backface-visibility: hidden; font-weight: 600; place-items: center; }
.botao-lancador::before, .botao-lancador::after { display: none !important; content: none !important; }
.botao-lancador span { display: none; }
.botao-lancador i { font-size: 21px; transition: transform 280ms cubic-bezier(.2, .7, .2, 1); }
.botao-lancador:hover:not(:disabled), .botao-lancador:focus-visible { color: #fff; background-color: var(--cor-primaria-700); background-image: linear-gradient(145deg, var(--cor-primaria-600), var(--cor-primaria-900)); box-shadow: 0 22px 45px rgba(0, 102, 204, .36), inset 0 -4px 0 var(--cor-laranja); transform: translateY(-5px) scale(1.05); }
.botao-lancador:active:not(:disabled) { color: #fff; background-color: var(--cor-primaria-700); background-image: linear-gradient(145deg, var(--cor-primaria-600), var(--cor-primaria-900)); box-shadow: 0 8px 20px rgba(0, 102, 204, .22); transform: translateY(0) scale(.91); }
.botao-lancador[aria-expanded="true"] i { transform: rotate(135deg); }
.painel-lancador { display: flex; width: min(400px, calc(100vw - 28px)); max-height: min(650px, calc(100dvh - 112px)); padding: 0; background: rgba(255, 255, 255, .99); border: 1px solid var(--cor-linha); border-radius: var(--raio-grande); box-shadow: var(--sombra-elevada); backdrop-filter: blur(16px); flex-direction: column; overflow: hidden; animation: entrada-lancador-gestx 240ms cubic-bezier(.2, .7, .2, 1) both; transform-origin: bottom right; }
.painel-lancador > header { position: relative; z-index: 1; display: flex; flex: 0 0 auto; min-height: 78px; margin: 0; padding: 17px 18px 14px; align-items: center; background: rgba(255, 255, 255, .99); border-bottom: 1px solid var(--cor-linha); box-shadow: 0 8px 20px rgba(18, 48, 69, .035); }
.painel-lancador h2 { margin: 0; font-size: 19px; }
.conteudo-lancador { min-height: 0; padding: 14px 18px 18px; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; }
.setor-lancador + .setor-lancador { margin-top: 15px; padding-top: 14px; border-top: 1px solid var(--cor-linha); }
.setor-lancador h3 { margin-bottom: 8px; color: #8495a2; font-size: 13px; font-weight: 600; letter-spacing: .11em; text-transform: uppercase; }
.grade-lancador { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.atalho-lancador { display: grid; min-height: 59px; padding: 9px 11px; grid-template-columns: 34px minmax(0, 1fr); align-items: center; gap: 9px; color: var(--cor-texto); background: #f8fafb; border: 1px solid #e7eeee; border-radius: 11px; text-align: left; }
.atalho-lancador i { display: grid; width: 34px; height: 34px; color: var(--cor-primaria-700); background: var(--cor-primaria-50); border-radius: 9px; font-size: 17px; place-items: center; transition: color var(--transicao), background-color var(--transicao), transform var(--transicao); }
.atalho-lancador span { min-width: 0; font-size: 13px; font-weight: 600; }
.atalho-lancador:hover { color: var(--cor-primaria-900); background: #fff; border-color: rgba(0, 102, 204, .25); box-shadow: 0 11px 24px rgba(25, 58, 78, .11); transform: translateY(-3px); }
.atalho-lancador:hover i { color: #fff; background: var(--cor-primaria-700); transform: scale(1.07) rotate(-4deg); }
.atalho-lancador:active { transform: translateY(0) scale(.97); }
.camada-modal { position: fixed; z-index: 1200; inset: 0; display: grid; padding: 2.5dvh 2.5vw; background: rgba(13, 39, 52, .47); backdrop-filter: blur(5px); place-items: center; animation: entrada-fundo-modal-gestx 180ms ease both; }
.camada-modal-secundaria { z-index: 1250; background: rgba(8, 25, 43, .54); backdrop-filter: blur(7px); }
.camada-confirmacao { z-index: 1400; background: rgba(8, 25, 43, .62); backdrop-filter: blur(8px); }
.modal { position: relative; display: flex; width: max-content; min-width: min(420px, 95vw); max-width: 95vw; min-height: 0; max-height: 95dvh; background: #fff; border: 1px solid var(--cor-linha); border-radius: var(--raio-grande); box-shadow: 0 30px 90px rgba(7, 24, 45, .30); flex-direction: column; overflow: hidden; animation: entrada-modal-gestx 250ms cubic-bezier(.2, .7, .2, 1) both; }
.modal.modal-pequeno { width: min(700px, 95vw); min-width: min(620px, 95vw); max-width: 95vw; }
.modal.modal-grande { width: min(1180px, 95vw); min-width: min(780px, 95vw); max-width: 95vw; }
.cabecalho-modal { display: flex; flex: 0 0 auto; min-height: 72px; padding: 17px 22px; align-items: center; justify-content: space-between; gap: 18px; background: #fff; border-bottom: 1px solid var(--cor-linha); }
.cabecalho-modal h2 { margin: 0; font-size: 20px; }
.titulos-modal { display: grid; min-width: 0; gap: 3px; }
.subtitulo-modal { margin: 0; color: var(--cor-texto-suave); font-size: 13px; }
.conteudo-modal { box-sizing: border-box; width: 100%; flex: 0 1 auto; min-width: 0; min-height: 0; max-width: 100%; padding: 22px; background: #fff; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; }
.conteudo-modal > *, .conteudo-formulario-modal-estoque, .conteudo-formulario-modal-estoque > * { box-sizing: border-box; width: 100%; min-width: 0; max-width: 100%; }
.acoes-modal { display: flex; flex: 0 0 auto; min-height: 70px; padding: 14px 22px; align-items: center; justify-content: flex-end; gap: 10px; background: #fff; border-top: 1px solid var(--cor-linha); box-shadow: 0 -10px 28px rgba(19, 39, 64, .035); }
.modal-confirmacao { width: min(440px, 95vw); padding: 30px; align-items: center; text-align: center; overflow: visible; }
.modal-confirmacao .icone-confirmacao { display: grid; width: 60px; height: 60px; margin: 0 auto 16px; color: var(--cor-laranja); background: var(--cor-laranja-suave); border-radius: 18px; font-size: 25px; place-items: center; animation: pulso-confirmacao-gestx 1.8s ease-in-out infinite; }
.modal-confirmacao .acoes-modal { min-height: 0; padding: 0; background: transparent; border: 0; box-shadow: none; justify-content: center; }
.regiao-notificacoes { position: fixed; z-index: 1500; top: 18px; right: 18px; display: grid; width: min(390px, calc(100vw - 28px)); gap: 10px; pointer-events: none; }
.notificacao { display: grid; padding: 13px; grid-template-columns: 38px minmax(0, 1fr) auto; align-items: center; gap: 10px; color: var(--cor-texto); background: rgba(255, 255, 255, .99); border: 1px solid var(--cor-linha); border-left: 4px solid var(--cor-primaria-700); border-radius: 14px; box-shadow: 0 18px 48px rgba(11, 43, 74, .18); pointer-events: auto; backdrop-filter: blur(12px); animation: entrada-notificacao-gestx 260ms cubic-bezier(.2, .7, .2, 1) both; }
.notificacao-saindo { opacity: 0; transform: translateX(34px) scale(.98); transition: opacity var(--transicao), transform var(--transicao); }
.notificacao-destacada { border-color: rgba(0, 102, 204, .36); box-shadow: 0 22px 58px rgba(0, 102, 204, .22); }
.icone-notificacao { display: grid; width: 36px; height: 36px; color: var(--cor-primaria-700); background: var(--cor-primaria-50); border-radius: 11px; place-items: center; }
.conteudo-notificacao { display: grid; gap: 4px; }
.conteudo-notificacao p { margin: 0; font-size: 13px; }
.conteudo-notificacao a { font-size: 13px; font-weight: 600; }
.notificacao-sucesso { border-left-color: var(--cor-sucesso); }
.notificacao-sucesso .icone-notificacao { color: var(--cor-sucesso); background: var(--cor-sucesso-suave); }
.notificacao-alerta { border-left-color: var(--cor-alerta); }
.notificacao-alerta .icone-notificacao { color: var(--cor-alerta); background: var(--cor-alerta-suave); }
.notificacao-erro { border-left-color: var(--cor-erro); }
.notificacao-erro .icone-notificacao { color: var(--cor-erro); background: var(--cor-erro-suave); }

/* Entradas e indicadores de carregamento necessários em qualquer página. */
.animar-entrada { animation: entrada-suave-gestx 420ms cubic-bezier(.2, .7, .2, 1) backwards; }
.animar-lateral { animation: entrada-lateral-gestx 360ms cubic-bezier(.2, .7, .2, 1) both; }
.animar-crescimento { animation: crescimento-gestx 260ms cubic-bezier(.2, .7, .2, 1) both; }
.atraso-1 { animation-delay: 70ms; }
.atraso-2 { animation-delay: 140ms; }
.atraso-3 { animation-delay: 210ms; }
.carregando, [aria-busy="true"] { position: relative; pointer-events: none; cursor: progress !important; }
.carregando::before, button[aria-busy="true"]::before { display: inline-block; flex: 0 0 auto; width: 16px; height: 16px; content: ""; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: girar-gestx .7s linear infinite; }
.carregador-circular { display: inline-block; width: 22px; height: 22px; color: var(--cor-primaria-700); border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; vertical-align: -5px; animation: girar-gestx .7s linear infinite; }
.carregador-orbita { position: relative; display: inline-grid; width: 42px; height: 42px; color: var(--cor-primaria-700); border: 2px solid rgba(0, 102, 204, .16); border-top-color: currentColor; border-radius: 50%; place-items: center; animation: girar-gestx .85s linear infinite; }
.carregador-orbita::after { width: 20px; height: 20px; content: ""; border: 2px solid rgba(255, 85, 0, .17); border-bottom-color: var(--cor-laranja); border-radius: 50%; animation: girar-inverso-gestx .55s linear infinite; }
.sobreposicao-carregamento { position: fixed; z-index: 30000; inset: 0; display: grid; padding: 20px; background: rgba(8, 25, 43, .30); backdrop-filter: blur(6px); opacity: 0; visibility: hidden; place-items: center; transition: opacity 180ms ease, visibility 180ms ease; }
.sobreposicao-carregamento.visivel, .sobreposicao-carregamento[aria-hidden="false"] { opacity: 1; visibility: visible; }
.cartao-carregamento { display: grid; width: min(360px, calc(100vw - 32px)); padding: 25px 28px; justify-items: center; gap: 12px; color: var(--cor-texto); background: rgba(255, 255, 255, .98); border: 1px solid var(--cor-linha); border-radius: var(--raio-grande); box-shadow: var(--sombra-elevada); text-align: center; animation: crescimento-gestx 220ms ease both; }

/* Indicador da navegação lateral: fica junto ao item clicado, sem modal. */
.item-navegacao-carregando { padding-right: 38px; cursor: progress !important; }
.item-navegacao-carregando::after { opacity: 0 !important; }
.indicador-navegacao-lateral { position: absolute; z-index: 2; top: calc(50% - 8px); right: 11px; display: block; width: 16px; height: 16px; box-sizing: border-box; color: var(--cor-primaria-700); border: 2px solid rgba(0, 102, 204, .18); border-top-color: currentColor; border-radius: 50%; pointer-events: none; animation: girar-gestx .7s linear infinite; }
.barra-recolhida .item-navegacao-carregando .indicador-navegacao-lateral { right: -17px; background: #fff; box-shadow: 0 0 0 3px #fff; }

/* Controles densos nunca criam uma segunda rolagem horizontal em pop-ups. */
select, .campo-select, [role="listbox"] { min-width: 0; max-width: 100%; }
select { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.conteudo-modal, .painel-lancador, .conteudo-lancador, .resultados-busca-cabecalho, .lista-resultados-busca, .opcoes-usuario, .painel-seletor, .lista-opcoes-seletor { overflow-x: hidden; }

/* A biblioteca mantém seu índice alinhado e os artigos estáveis no apontador. */
.estrutura-biblioteca { align-items: start; }
.indice-biblioteca { align-self: start; margin: 0; }
.artigos-biblioteca { align-self: start; margin: 0; }
.artigo-biblioteca, .artigo-biblioteca:hover, .artigo-biblioteca:active { transform: none !important; }
.artigo-biblioteca { transition: border-color var(--transicao), box-shadow var(--transicao); }
.artigo-biblioteca:hover .numero-artigo, .artigo-biblioteca:active .numero-artigo { transform: none; }

/* Limite tipográfico global: títulos em 600 e nenhum texto acima desse peso. */
body { font-weight: 400; }
h1, h2, h3, h4, h5, h6, strong, b { font-weight: 600; }

/* Animações curtas e previsíveis, limitadas a opacidade e transformação. */
@keyframes entrada-suave-gestx { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes entrada-lateral-gestx { from { opacity: 0; transform: translateX(26px); } to { opacity: 1; transform: none; } }
@keyframes crescimento-gestx { from { opacity: 0; transform: scale(.96); } to { opacity: 1; transform: scale(1); } }
@keyframes entrada-conteudo-gestx { from { opacity: 0; transform: translateY(9px); } to { opacity: 1; transform: none; } }
@keyframes entrada-menu-gestx { from { opacity: 0; transform: translateY(-10px) scale(.975); } to { opacity: 1; transform: none; } }
@keyframes entrada-busca-gestx { from { opacity: 0; transform: translateY(-8px) scale(.975); } to { opacity: 1; transform: none; } }
@keyframes entrada-lancador-gestx { from { opacity: 0; transform: translateY(14px) scale(.96); } to { opacity: 1; transform: none; } }
@keyframes entrada-fundo-modal-gestx { from { opacity: 0; } to { opacity: 1; } }
@keyframes entrada-modal-gestx { from { opacity: 0; transform: translateY(10px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes entrada-notificacao-gestx { from { opacity: 0; transform: translateX(25px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes entrada-mensagem-gestx { from { opacity: 0; transform: translateY(-5px); } to { opacity: 1; transform: none; } }
@keyframes entrada-titulo-autenticacao-gestx { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: none; } }
@keyframes entrada-formulario-autenticacao-gestx { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }

/* Estado global de conectividade, independente dos modais de trabalho. */
.camada-conectividade{position:fixed;z-index:70000;inset:0;display:grid;padding:20px;background:rgba(8,25,43,.48);backdrop-filter:blur(8px);place-items:center;animation:entrada-fundo-modal-gestx 180ms ease both}.modal-conectividade{display:grid;width:min(460px,calc(100vw - 32px));padding:28px;justify-items:center;gap:11px;color:var(--cor-texto);background:#fff;border:1px solid var(--cor-linha);border-radius:22px;box-shadow:var(--sombra-elevada);text-align:center;animation:entrada-modal-gestx 220ms ease both}.modal-conectividade h2{margin:3px 0 0;font-size:22px}.modal-conectividade>p{margin:0;color:var(--cor-texto-suave);line-height:1.6}.icone-conectividade{display:grid;width:62px;height:62px;color:var(--cor-erro);background:var(--cor-erro-suave);border-radius:18px;font-size:25px;place-items:center}.estado-conectividade{display:flex;width:100%;min-height:48px;padding:10px 13px;align-items:center;justify-content:center;gap:8px;color:var(--cor-texto-suave);background:#f7fafb;border:1px solid var(--cor-linha);border-radius:12px;font-size:13px;font-weight:600}.conectividade-verificando i{animation:girar-gestx .75s linear infinite}.conectividade-online{color:var(--cor-sucesso);background:var(--cor-sucesso-suave);border-color:#c7e8d7}.conectividade-restabelecida .icone-conectividade{color:var(--cor-sucesso);background:var(--cor-sucesso-suave)}body.conectividade-interrompida{overflow:hidden}
@keyframes orbita-autenticacao-gestx { 0%, 100% { opacity: .72; transform: scale(1); } 50% { opacity: 1; transform: scale(1.045); } }
@keyframes pulso-indicador-gestx { 0%, 100% { box-shadow: 0 0 0 0 rgba(255, 85, 0, .35); } 50% { box-shadow: 0 0 0 7px rgba(255, 85, 0, 0); } }
@keyframes pulso-confirmacao-gestx { 0%, 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(255, 85, 0, .18); } 50% { transform: scale(1.045); box-shadow: 0 0 0 10px rgba(255, 85, 0, 0); } }
@keyframes girar-gestx { to { transform: rotate(360deg); } }
@keyframes girar-inverso-gestx { to { transform: rotate(-360deg); } }

/* Adaptação gradual para telas intermediárias e móveis. */
@media (max-width: 1180px) {
    .busca-cabecalho { width: 260px; }
    .busca-cabecalho kbd { display: none; }
    .botao-usuario { min-width: 155px; }
}

@media (min-width: 1121px) {
    .indice-biblioteca { position: sticky; top: 96px; max-height: calc(100dvh - 116px); }
}

@media (max-width: 960px) {
    .estrutura-aplicacao { --largura-barra: 78px; }
    .estrutura-aplicacao .texto-barra { width: 0; max-width: 0; margin: 0; overflow: hidden; pointer-events: none; opacity: 0; }
    .estrutura-aplicacao .barra-lateral { padding-inline: 13px; }
    .estrutura-aplicacao .barra-lateral .marca { min-width: 36px; width: 36px; }
    .estrutura-aplicacao .item-navegacao { width: 48px; min-width: 48px; margin-inline: auto; padding-inline: 0; justify-content: center; gap: 0; }
    .estrutura-aplicacao .item-navegacao::after { display: none; }
    .estrutura-aplicacao .item-navegacao-ativo, .estrutura-aplicacao .item-navegacao[aria-current="page"] { box-shadow: none; }
    .estrutura-aplicacao .item-navegacao-carregando { padding-right: 0; }
    .estrutura-aplicacao .item-navegacao-carregando .indicador-navegacao-lateral { right: -9px; background: #fff; box-shadow: 0 0 0 3px #fff; }
    .estrutura-aplicacao .titulo-grupo { height: 1px; margin: 10px 0; overflow: hidden; }
    .botao-recolher { display: none !important; }
    .area-busca-cabecalho { display: none; }
    .painel-autenticacao { grid-template-columns: minmax(350px, .82fr) minmax(410px, 1fr); }
    .marca-autenticacao { padding-inline: 48px; }
}

@media (max-width: 760px) {
    .painel-autenticacao { display: block; }
    .marca-autenticacao { min-height: auto; padding: 22px 24px; }
    .marca-autenticacao > div, .rodape-marca { display: none; }
    .marca-autenticacao::before, .marca-autenticacao::after { display: none; }
    .formulario-autenticacao { min-height: calc(100vh - 80px); padding: 32px 22px; }
    .estrutura-aplicacao { display: block; padding-bottom: 82px; }
    .barra-lateral { position: fixed; top: auto; right: 10px; bottom: 10px; left: 10px; width: auto; height: 66px; padding: 7px; background: rgba(255, 255, 255, .97); border: 1px solid var(--cor-linha); border-radius: 18px; box-shadow: 0 18px 50px rgba(16, 35, 61, .18); backdrop-filter: blur(16px); }
    .topo-barra-lateral, .rodape-barra-lateral, .titulo-grupo { display: none; }
    .navegacao-lateral { display: flex; width: 100%; padding: 0; align-items: center; justify-content: space-around; overflow: visible; }
    .navegacao-lateral .item-navegacao { display: none; width: 50px; height: 50px; min-height: 50px; margin: 0; border-radius: 13px; }
    .navegacao-lateral .item-navegacao:nth-of-type(-n+4), .navegacao-lateral .item-navegacao[href*="ferramentas"] { display: flex; }
    .item-navegacao-ativo, .item-navegacao[aria-current="page"] { box-shadow: inset 0 -3px 0 var(--cor-primaria-700); }
    .item-navegacao::after { display: none; }
    .navegacao-lateral .item-navegacao-carregando .indicador-navegacao-lateral { top: 4px; right: 4px; width: 13px; height: 13px; border-width: 2px; box-shadow: 0 0 0 2px rgba(255, 255, 255, .92); }
    .cabecalho-aplicacao { min-height: 82px; padding: 13px 15px; }
    .contexto-pagina > p:last-child, .trilha { display: none !important; }
    .contexto-pagina h1 { margin: 0; font-size: 21px; }
    .dados-usuario, .botao-usuario > i { display: none; }
    .botao-usuario { min-width: 48px; width: 48px; min-height: 48px; padding: 6px; border-radius: 50%; }
    .acoes-cabecalho > .botao-icone { display: none; }
    .conteudo-principal { min-height: calc(100vh - 82px); padding: 20px 14px 30px; }
    .cabecalho-conteudo { align-items: flex-start; flex-direction: column; }
    .opcoes-usuario { position: fixed; top: 72px; right: 12px; width: min(270px, calc(100vw - 24px)); }
    .linha-formulario, .grade-campos, .grade-campos-tres { grid-template-columns: 1fr; }
    .acoes-formulario { align-items: stretch; flex-direction: column-reverse; }
    .acoes-formulario .botao { width: 100%; }
    .lancador-suspenso { right: 14px; bottom: 90px; }
    .painel-lancador { width: calc(100vw - 28px); }
    .grade-lancador { grid-template-columns: 1fr; }
    .camada-modal { padding: 2.5dvh 2.5vw; }
    .modal { width: 95vw; min-width: 0; max-height: 95dvh; border-radius: 16px; }
    .cabecalho-modal, .conteudo-modal, .acoes-modal { padding-inline: 17px; }
    .acoes-modal { align-items: stretch; flex-direction: column-reverse; }
    .acoes-modal .botao { width: 100%; }
    .regiao-notificacoes { top: 10px; right: 10px; width: calc(100vw - 20px); }
    .painel-notificacoes-cabecalho { top: 72px; right: 10px; width: calc(100vw - 20px); max-height: calc(100vh - 84px); }
    .item-painel-notificacoes { grid-template-columns: 36px minmax(0, 1fr); }
    .acoes-item-notificacao { grid-column: 2; }
}

@media (max-width: 440px) {
    .formulario-autenticacao { padding: 27px 18px; place-items: start center; }
    .cartao-autenticacao h2 { font-size: 29px; }
    .cartao-vazio { min-height: 350px; padding: 24px 18px; }
    .opcoes-autenticacao { align-items: flex-start; flex-direction: column; }
}

/* A preferência do usuário sempre tem prioridade sobre os movimentos decorativos. */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* Geometria final dos modais: nenhum descendente amplia a janela. */
.camada-modal { box-sizing: border-box; padding: clamp(8px, 2.5dvh, 24px) clamp(8px, 2.5vw, 28px); }
.modal, .modal.modal-pequeno, .modal.modal-grande { box-sizing: border-box; max-width: calc(100vw - clamp(16px, 5vw, 56px)); }
.modal { width: min(760px, calc(100vw - clamp(16px, 5vw, 56px))); }
.modal.modal-pequeno { width: min(700px, calc(100vw - clamp(16px, 5vw, 56px))); min-width: 0; }
.modal.modal-grande { width: min(1180px, calc(100vw - clamp(16px, 5vw, 56px))); min-width: 0; }
.conteudo-modal { flex: 1 1 auto; max-height: calc(95dvh - 73px); }
.conteudo-modal > *, .conteudo-formulario-modal-estoque, .conteudo-formulario-modal-estoque > *, .formulario, .grade-campos > *, .acoes-formulario > * { min-width: 0; max-width: 100%; }

/* Geometria definitiva: a camada usa a viewport e nenhum ancestral corta o diálogo. */
.camada-modal {
    width: 100vw;
    height: 100dvh;
    max-width: none;
    max-height: none;
    overflow: hidden;
    contain: layout paint;
}
.camada-modal > .modal {
    width: min(760px, calc(100vw - clamp(16px, 5vw, 56px)));
    max-width: calc(100vw - clamp(16px, 5vw, 56px));
    max-height: calc(100dvh - clamp(16px, 5dvh, 48px));
    margin: 0;
}
.camada-modal > .modal.modal-grande { width: min(1180px, calc(100vw - clamp(16px, 5vw, 56px))); }
.camada-modal > .modal.modal-pequeno { width: min(700px, calc(100vw - clamp(16px, 5vw, 56px))); }
.cabecalho-modal { position: relative; z-index: 2; }
.conteudo-modal { flex: 1 1 auto; max-height: none; overflow: hidden auto; scrollbar-gutter: stable; }
.conteudo-modal .acoes-formulario { position: relative; right: auto; left: auto; width: 100%; }

/* Estrutura invariável: cabeçalho e rodapé nunca participam da rolagem do conteúdo. */
.camada-modal > .modal-principal {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
}
.camada-modal > .modal-principal > .cabecalho-modal { grid-row: 1; }
.camada-modal > .modal-principal > .conteudo-modal { grid-row: 2; min-height: 0; overflow: hidden auto; }
.camada-modal > .modal-principal > .acoes-modal { position: relative; z-index: 3; grid-row: 3; width: 100%; margin: 0; }
.camada-modal > .modal-principal > .acoes-modal[hidden] { display: none !important; }

/* Mantém a geometria final coerente com componentes.css, que é carregado antes. */
#modal-principal.modal-estrutura-fixa,
#modal-secundario.modal-estrutura-fixa {
    display: grid;
    height: auto;
    min-height: 0;
    max-width: 95vw;
    max-height: 95dvh;
    grid-template-rows: max-content minmax(0, 1fr) max-content;
    overflow: hidden;
}
#modal-principal.modal-estrutura-fixa > .conteudo-modal,
#modal-secundario.modal-estrutura-fixa > .conteudo-modal {
    min-height: 0;
    max-height: calc(95dvh - 150px);
    overflow: hidden auto;
}

/* 3.0.3 — notificações roláveis e rodapé lateral coerente. */
.painel-notificacoes-cabecalho{grid-template-rows:auto minmax(0,1fr)!important}
.lista-painel-notificacoes{min-height:0!important;max-height:calc(min(680px,100vh - 92px) - 68px)!important;overflow-y:auto!important;overscroll-behavior:contain}
.rodape-barra-lateral .item-navegacao{color:var(--cor-texto-suave)!important;background:transparent!important;border-color:transparent!important}
.rodape-barra-lateral .item-navegacao:hover{color:var(--cor-primaria-700)!important;background:var(--cor-primaria-50)!important}
