/* Temas da Gestão (05/10/2026, pedido do Romeu, trazido do pro_ris): a abinha de aparência, a foto de fundo e o
   acrílico. As cores do tema escuro estão no style.css (bloco «TEMA ESCURO»); a lista das fotos, em app/temas.py.

   TRÊS INTERRUPTORES no <html>, escritos pelo script síncrono do <head> (templates/_tema_cabeca.html) e pela
   abinha (static/temas.js):
     data-tema="claro|escuro"   as cores (style.css)
     data-fundo="on|off"        há foto escolhida PARA O TEMA ATUAL (uma para o claro, outra para o escuro)
     data-acrilico="on|off"     cartões, cabeçalho, tabelas e menus viram vidro (só com foto)
   Padrão de fábrica: claro, off, off — e com off NENHUMA regra deste arquivo casa, a não ser a da abinha. Quem
   nunca mexer na abinha vê o sistema exatamente como antes.

   O VÉU: por cima da foto, sempre, uma camada que AFASTA o fundo do texto — branca no claro (o texto é escuro),
   escura no escuro. Escurecer a foto no claro derrubaria o contraste (nota do pro_ris-acrilico.css).

   O VIDRO não fica no próprio cartão: `backdrop-filter` num elemento faz dele a referência dos `position: fixed`
   de dentro, e há fixos morando em cartões (o formulário de irregularidade da Busca Ativa, o visor cheio do Cardio).
   Então o desfoque vai num pseudo-elemento ATRÁS do cartão (z-index -1), e o cartão só fica translúcido.
   Desempenho: desfoque só nos contêineres (cartão, tabela, painel, menu) — nunca nas linhas da tabela. */

/* ------------------------------------------------------------------ a abinha (toda página, quem está logado) */
.tm-aba { position: fixed; right: 0; bottom: 96px; z-index: 940; width: 40px; height: 44px; display: grid;
  place-items: center; padding: 0; border: 0; cursor: pointer; color: #fff; background: var(--marca, #0b5c3f);
  border-radius: 12px 0 0 12px; box-shadow: -3px 4px 16px rgba(16, 32, 24, .22); transition: width .15s ease; }
.tm-aba:hover { width: 46px; }
.tm-aba:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.tm-aba svg { width: 20px; height: 20px; }
.tm-aba[hidden] { display: none !important; }
/* no celular a aba da assistente desce para o pé da tela (bottom 88 px, ~135 px de altura): esta fica acima dela */
@media (max-width: 700px) { .tm-aba { bottom: 236px; } }
@media print { .tm-aba, .tm-painel { display: none !important; } }

/* ------------------------------------------------------------------ a gaveta (galeria) */
.tm-painel { position: fixed; right: 12px; bottom: 12px; z-index: 960; width: min(380px, calc(100vw - 24px));
  max-height: min(640px, calc(100vh - 24px)); max-height: min(640px, calc(100dvh - 24px)); display: flex;
  flex-direction: column; overflow: hidden; color: var(--tinta); background: var(--branco);
  border: 1px solid var(--linha); border-radius: 14px; box-shadow: 0 18px 50px rgba(10, 20, 15, .28);
  font-size: .9rem; }
.tm-painel[hidden] { display: none !important; }
@media (max-width: 480px) {
  .tm-painel { right: 0; left: 0; bottom: 0; width: 100%; border-radius: 14px 14px 0 0; max-height: 82vh;
    max-height: 82dvh; padding-bottom: env(safe-area-inset-bottom, 0px); }
}
.tm-cab { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-bottom: 1px solid var(--linha); }
.tm-cab h2 { margin: 0; font-size: 1rem; color: var(--tinta); flex: 1; }
.tm-x { width: 32px; height: 32px; display: grid; place-items: center; border: 0; border-radius: 8px; cursor: pointer;
  background: transparent; color: var(--suave); }
.tm-x:hover { background: var(--verde-fundo); color: var(--tinta); }
.tm-x svg { width: 16px; height: 16px; }
.tm-corpo { overflow-y: auto; padding: 12px 14px 16px; display: grid; gap: 14px; }
.tm-rot { font-size: .72rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--suave);
  margin: 0 0 6px; }
.tm-seg { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--linha); border-radius: 10px;
  overflow: hidden; }
.tm-seg button { display: flex; align-items: center; justify-content: center; gap: 7px; padding: 9px 8px;
  border: 0; background: transparent; color: var(--suave); font: inherit; font-weight: 600; cursor: pointer; }
.tm-seg button + button { border-left: 1px solid var(--linha); }
.tm-seg button svg { width: 16px; height: 16px; }
.tm-seg button[aria-pressed="true"] { background: var(--verde); color: #fff; }
.tm-cats { display: flex; gap: 6px; flex-wrap: wrap; }
.tm-cat { padding: 5px 12px; border-radius: 999px; border: 1px solid var(--linha); background: transparent;
  color: var(--tinta); font: inherit; font-size: .85rem; font-weight: 600; cursor: pointer; }
.tm-cat[aria-pressed="true"] { border-color: var(--verde); background: var(--verde-claro); color: var(--verde-esc); }
.tm-grade { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.tm-foto { position: relative; aspect-ratio: 16 / 10; padding: 0; border: 0; border-radius: 8px; overflow: hidden;
  cursor: pointer; background: var(--verde-fundo); outline: 2px solid transparent; outline-offset: 2px; }
.tm-foto img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tm-foto:hover { outline-color: var(--linha); }
.tm-foto:focus-visible { outline: 3px solid #ffd166; }
.tm-foto[aria-pressed="true"] { outline-color: var(--verde); }
.tm-foto[aria-pressed="true"]::after { content: "✓"; position: absolute; right: 5px; top: 5px; width: 20px; height: 20px;
  border-radius: 50%; background: var(--verde); color: #fff; font-size: 12px; font-weight: 700; display: grid;
  place-items: center; }
.tm-sem { display: grid; place-items: center; text-align: center; font-size: .78rem; font-weight: 600; color: var(--suave);
  border: 1px dashed var(--linha); background: transparent; }
.tm-chave { display: flex; align-items: center; gap: 10px; cursor: pointer; padding: 0; border: 0; background: none;
  font: inherit; color: var(--tinta); text-align: left; width: 100%; }
.tm-chave:disabled { cursor: default; opacity: .55; }
.tm-chave .tm-trilho { flex: none; width: 38px; height: 22px; border-radius: 999px; background: var(--linha);
  position: relative; transition: background .15s; }
.tm-chave .tm-trilho::after { content: ""; position: absolute; left: 3px; top: 3px; width: 16px; height: 16px;
  border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0, 0, 0, .3); transition: transform .15s; }
.tm-chave[aria-checked="true"] .tm-trilho { background: var(--verde); }
.tm-chave[aria-checked="true"] .tm-trilho::after { transform: translateX(16px); }
.tm-chave b { display: block; }
.tm-chave small { display: block; color: var(--suave); font-size: .8rem; }
.tm-nota { margin: 0; color: var(--suave); font-size: .8rem; }
.tm-vazio { color: var(--suave); font-size: .85rem; margin: 0; }
@media (prefers-reduced-motion: reduce) { .tm-aba, .tm-chave .tm-trilho, .tm-chave .tm-trilho::after { transition: none; } }

/* ------------------------------------------------------------------ a foto e o véu (data-fundo="on") */
:root { --foto: var(--foto-claro, none);
  --acr-blur: 18px; --acr-sat: 160%;
  --acr-vidro: rgba(255, 255, 255, .62); --acr-vidro-2: rgba(255, 255, 255, .34); --acr-campo: rgba(255, 255, 255, .55);
  --acr-borda: rgba(30, 50, 40, .14); --acr-sombra: rgba(16, 24, 40, .10); --acr-brilho: rgba(255, 255, 255, .35);
  --acr-veu: rgba(255, 255, 255, .30); --acr-base: #f4faf6; }
:root[data-tema="escuro"] { --foto: var(--foto-escuro, none);
  --acr-vidro: rgba(20, 29, 25, .58); --acr-vidro-2: rgba(255, 255, 255, .05); --acr-campo: rgba(8, 12, 10, .35);
  --acr-borda: rgba(255, 255, 255, .12); --acr-sombra: rgba(0, 0, 0, .45); --acr-brilho: rgba(255, 255, 255, .06);
  --acr-veu: rgba(6, 10, 8, .16); --acr-base: #0f1613; }

@media screen {
  :root[data-fundo="on"] { background-color: var(--acr-base); }
  :root[data-fundo="on"] body, :root[data-fundo="on"] body.entrada { background: transparent; }
  :root[data-fundo="on"] body::before, :root[data-fundo="on"] body::after {
    content: ""; position: fixed; inset: 0; pointer-events: none; }
  :root[data-fundo="on"] body::before { z-index: -3; background: var(--acr-base) var(--foto) center / cover no-repeat; }
  :root[data-fundo="on"] body::after { z-index: -2; background: var(--acr-veu); }
  /* sem acrílico, a foto aparece entre os cartões (que continuam sólidos); o véu fica mais forte nas bordas */

  /* a entrada (esteira) tem fundo próprio na cor da marca: com foto, ele sai e a foto aparece */
  :root[data-fundo="on"] body.entrada .pagina { background: none; }
  :root[data-fundo="on"] body.entrada h1 { color: var(--tinta); }
  :root[data-fundo="on"] body.entrada .ajuda, :root[data-fundo="on"] body.entrada .area-tit { color: var(--tinta); }
  :root[data-fundo="on"] body.entrada .pagina::before { filter: none; opacity: .08; }
  :root[data-tema="escuro"][data-fundo="on"] body.entrada .pagina::before { filter: brightness(0) invert(1); }
  :root[data-fundo="on"] body.entrada .pagina::after { color: var(--tinta); }
  :root[data-fundo="on"] body.entrada h1, :root[data-fundo="on"] body.entrada .ajuda {
    text-shadow: 0 1px 12px var(--acr-base); }
  :root[data-fundo="on"] body.entrada .posto.vazio { background: var(--acr-vidro); color: var(--tinta); }
  :root[data-fundo="on"] body.entrada .posto.vazio h2, :root[data-fundo="on"] body.entrada .posto.vazio .fluxo dd,
  :root[data-fundo="on"] body.entrada .posto.vazio .partes b { color: var(--tinta); }
  :root[data-fundo="on"] body.entrada .posto.vazio .posto-resumo, :root[data-fundo="on"] body.entrada .posto.vazio .fluxo dt,
  :root[data-fundo="on"] body.entrada .posto.vazio .posto-outros,
  :root[data-fundo="on"] body.entrada .posto.vazio .partes { color: var(--suave); }
}

/* ------------------------------------------------------------------ o acrílico (data-acrilico="on", com foto) */
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  @media screen {
    /* as superfícies ficam translúcidas pelos TOKENS (vale para todos os módulos de uma vez); no <body> porque as
       marcas redefinem --verde-fundo ali */
    :root[data-acrilico="on"] body {
      --branco: var(--acr-vidro); --e-cartao: var(--acr-vidro); --e-cartao-2: var(--acr-vidro-2);
      --e-campo: var(--acr-campo); --e-veu: var(--acr-vidro); --verde-fundo: var(--acr-vidro-2);
    }
    /* TABELA sobre o vidro (06/10/2026, Romeu: «todos os datagrids ficaram zebrados … o de Permissões não está» e «o
       cabeçalho no escuro está muito escuro, quase sólido»). Sobre o vidro a tinta de 8 % some: a zebra sobe para 10 % no
       claro (tinta escura) e 8 % no escuro (tinta clara). O cabeçalho deixou de ser a base a 78 %: é vidro com uma
       camada a mais — verde a 15 % no claro, branco a 15 % no escuro —, e uma linha embaixo. */
    :root[data-acrilico="on"] body {
      --v-zebra: color-mix(in srgb, var(--tinta) 10%, transparent);
      --v-linha-hover: color-mix(in srgb, var(--verde) 24%, transparent);
      --v-cab: color-mix(in srgb, var(--verde) 15%, transparent);
      --v-cab-linha: color-mix(in srgb, var(--verde-esc) 38%, transparent);
    }
    :root[data-acrilico="on"][data-tema="escuro"] body {
      --v-zebra: color-mix(in srgb, #fff 8%, transparent);
      --v-cab: color-mix(in srgb, #fff 15%, transparent);
      --v-cab-linha: color-mix(in srgb, #fff 22%, transparent);
    }

    /* os contêineres: desfoque atrás (pseudo-elemento), borda e sombra de vidro */
    :where(:root[data-acrilico="on"]) :where(.card, .kpi, .kpis-mini, .modulo, .posto, .ba-c, .ba-tabela, .ba-grupo,
      .ba-painel, .ba-topo-busca, .contato, details.sec, .grupo-clinica summary, .grupo-clinica .corpo, .unidade-btn,
      .criterio, .equipe-topo, .agd-mes, .agd-semana, .agd-dia, .agh-item, .ag-dg, .lb-passo, .ck-item, .sst-cartao,
      .sst-vis, .sst-tec, .cand-card, .dp-depto, .em-fluxo .em-passo, .msg):not(table) { position: relative; }
    /* TABELA solta (a da Busca Ativa): pseudo-elemento dentro de <table> vira célula e desalinha as colunas. Ela
       ganha o desfoque direto — e o perde enquanto o formulário de irregularidade (fixo, dentro da linha) está
       aberto, para ele continuar preso à tela e não à tabela. */
    :root[data-acrilico="on"] table.ba-tabela:not(:has(.irreg[open])) {
      -webkit-backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat));
      backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat)); }
    :root[data-acrilico="on"] :is(.card, .kpi, .kpis-mini, .modulo, .ba-c, .ba-grupo, .ba-painel, .ba-topo-busca, .contato, details.sec, .grupo-clinica summary, .grupo-clinica .corpo, .unidade-btn, .criterio,
      .equipe-topo, .agd-mes, .agd-semana, .agd-dia, .agh-item, .ag-dg, .lb-passo, .ck-item, .sst-cartao, .sst-vis,
      .sst-tec, .cand-card, .dp-depto, .em-fluxo .em-passo)::before,
    :root[data-acrilico="on"] .posto::after {
      content: ""; position: absolute; inset: 0; z-index: -1; border-radius: inherit; pointer-events: none;
      -webkit-backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat));
      backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat));
    }
    :root[data-acrilico="on"] :is(.card, .kpi, .kpis-mini, .modulo, .posto, .ba-c, .ba-tabela, .ba-grupo, .ba-painel,
      .contato, details.sec, .criterio, .equipe-topo, .agd-mes, .agd-semana, .agd-dia, .ck-item, .sst-cartao,
      .cand-card, .dp-depto) {
      border-color: var(--acr-borda); box-shadow: 0 8px 32px var(--acr-sombra), inset 0 1px 0 var(--acr-brilho);
    }
    /* a entrada: os cartões já tinham sombra própria (marcas.css) */
    :root[data-acrilico="on"] body.entrada :is(.posto, .modulo) { border-color: var(--acr-borda); }

    /* o cabeçalho: branco vira vidro; a barra da marca (módulos) vira vidro na cor da marca */
    :root[data-acrilico="on"] body:not(.com-barra) .topo { background: var(--acr-vidro);
      -webkit-backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat));
      backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat)); position: relative; z-index: 2; }
    /* (05/10/2026, Romeu: «na página principal fica acrílico, quando entra nos cards não fica») — com 80%/66% de cor
       a barra parecia sólida: agora a foto aparece através dela, escurecida o bastante para o texto branco do menu */
    :root[data-acrilico="on"] body.com-barra .topo {
      background: linear-gradient(90deg,
                  color-mix(in srgb, color-mix(in srgb, var(--marca, #0b5c3f) 70%, #000) 72%, transparent),
                  color-mix(in srgb, var(--marca, #0b5c3f) 58%, transparent) 60%,
                  color-mix(in srgb, var(--marca, #0b5c3f) 52%, transparent));
      box-shadow: inset 0 -1px 0 rgba(255, 255, 255, .22), 0 8px 28px var(--acr-sombra);
      -webkit-backdrop-filter: blur(calc(var(--acr-blur) + 6px)) saturate(var(--acr-sat)) brightness(.9);
      backdrop-filter: blur(calc(var(--acr-blur) + 6px)) saturate(var(--acr-sat)) brightness(.9);
      z-index: 2; }
    :root[data-acrilico="on"] body.com-barra .topo :is(nav a, .marca-nome, .marca-mod) { text-shadow: 0 1px 2px rgba(0, 0, 0, .35); }
    /* menus que abrem por cima (sem fixos dentro): vidro direto */
    :root[data-acrilico="on"] .menu-itens, :root[data-acrilico="on"] .ag, :root[data-acrilico="on"] .barra-fixa,
    :root[data-acrilico="on"] .tm-painel {
      background: var(--acr-vidro); border-color: var(--acr-borda);
      -webkit-backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat));
      backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat)); }
    /* a gaveta e os menus pedem leitura firme: vidro mais denso */
    :root[data-acrilico="on"] .tm-painel, :root[data-acrilico="on"] .menu-itens {
      background: color-mix(in srgb, var(--acr-base) 84%, transparent); }
    /* linha selecionada / passada do mouse nas tabelas: tinta leve, sem desfoque por linha */
    :root[data-acrilico="on"] .ba-tabela tr:hover td { background: var(--v-linha-hover); }
    /* o cabeçalho: UMA linha (as células), com desfoque só nele — quando a tabela rola dentro de uma caixa (os grids dos
       Agendamentos), o cabeçalho fixo é translúcido e o texto das linhas que passam por baixo não pode aparecer */
    :root[data-acrilico="on"] table.t th { background: var(--v-cab); border-bottom: 1px solid var(--v-cab-linha);
      -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
    /* no escuro o texto do cabeçalho vai ao tom cheio: o --suave (#b4c5bb) dava 3,8:1 sobre o vidro mais claro (foto
       de mediana alta), o --tinta dá 5,6:1 */
    :root[data-acrilico="on"][data-tema="escuro"] table.t th { color: var(--tinta); }
  }
}

/* ------------------------------------------------------------------ TUDO o que é sólido também vira vidro
   (05/10/2026, Romeu: «deixa todas as divs como botões, badges, alertas, toasts ou divs sólidas, quando estiver com o
   acrílico ligado, em acrílico também»; e «tem divs que não pegaram o acrílico … essa página ficou transparente»).
   Como no pro_ris: o que é colorido vira vidro TINGIDO da própria cor; o neutro, vidro transparente.

   1. PELOS TOKENS, de uma vez para todos os módulos: os fundos de estado (--verde-claro, --amarelo-f, --vermelho-f,
      --azul-f, os --e-*-f do escuro, --e-sutil) passam a ser a cor misturada ao branco (no escuro, ao verde-quase-preto)
      com 80–82 % de opacidade; o texto de estado escurece no claro (clareia no escuro) para seguir em AA sobre o
      vidro — conta feita com a foto mais desfavorável (preta no claro, branca no escuro) e sem cartão por baixo.
   2. A FOLHA: fora da tela inicial, o <main class="pagina"> ganha UMA folha de vidro atrás (pseudo-elemento com o
      desfoque, como os cartões), e o texto solto da página (títulos, ajudas, tabelas fora de cartão) deixa de ficar
      direto sobre a foto. Dentro dela, os cartões ficam mais leves e sem desfoque próprio: um desfoque só por página,
      e nenhum linha a linha nas tabelas.
   3. BOTÕES: o primário vira vidro verde (90 %: o branco por cima fica ≥ 4,5:1 até sobre a foto branca); perigo,
      alerta, WhatsApp e urgente, vidro da cor deles.
   4. O que flutua fora da folha (diálogo, barra do robô, a saudação da tela inicial): vidro com desfoque próprio. */
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  @media screen {
    :root[data-acrilico="on"]:not([data-tema="escuro"]) body {
      --verde-claro: color-mix(in srgb, color-mix(in srgb, var(--verde) 14%, #fff) 82%, transparent);
      --amarelo-f: color-mix(in srgb, color-mix(in srgb, #b7791f 16%, #fff) 82%, transparent);
      --vermelho-f: color-mix(in srgb, color-mix(in srgb, #c0392b 12%, #fff) 82%, transparent);
      --azul-f: color-mix(in srgb, color-mix(in srgb, #1f5f99 12%, #fff) 82%, transparent);
      --e-verde-f: var(--verde-claro); --e-amarelo-f: var(--amarelo-f); --e-vermelho-f: var(--vermelho-f);
      --e-azul-f: var(--azul-f);
      --e-roxo-f: color-mix(in srgb, color-mix(in srgb, #5b3a8e 12%, #fff) 82%, transparent);
      --e-sutil: color-mix(in srgb, color-mix(in srgb, #1d2b24 8%, #fff) 80%, transparent);
      --e-sutil-2: color-mix(in srgb, color-mix(in srgb, #1d2b24 18%, #fff) 80%, transparent);
      --e-cartao-2: var(--acr-vidro-2);
      --e-veu: color-mix(in srgb, var(--acr-base) 80%, transparent);
      --vermelho: #9b2a1e; --amarelo: #7a4f0c; --azul: #1a5288; --suave: #4d5c54;
      --e-verde-t: #04522d; --e-amarelo-t: #7a4f0c; --e-vermelho-t: #9b2a1e; --e-azul-t: #1a5288; --e-suave: #4d5c54;
      --e-verde-esc-forte: color-mix(in srgb, color-mix(in srgb, var(--verde) 45%, #000) 90%, transparent);
      --e-vermelho-forte: color-mix(in srgb, #9b2a1e 90%, transparent);
      --e-amarelo-forte: color-mix(in srgb, #7a4f0c 90%, transparent);
      --e-azul-forte: color-mix(in srgb, #1a5288 90%, transparent);
    }
    :root[data-acrilico="on"][data-tema="escuro"] body {
      --verde-claro: color-mix(in srgb, color-mix(in srgb, var(--verde) 18%, #141d19) 88%, transparent);
      --amarelo-f: color-mix(in srgb, color-mix(in srgb, #e3a948 16%, #141d19) 88%, transparent);
      --vermelho-f: color-mix(in srgb, color-mix(in srgb, #ff8577 14%, #141d19) 88%, transparent);
      --azul-f: color-mix(in srgb, color-mix(in srgb, #8cbfff 14%, #141d19) 88%, transparent);
      --e-verde-f: var(--verde-claro); --e-amarelo-f: var(--amarelo-f); --e-vermelho-f: var(--vermelho-f);
      --e-azul-f: var(--azul-f);
      --e-roxo-f: color-mix(in srgb, color-mix(in srgb, #cdb6f5 14%, #141d19) 88%, transparent);
      --e-sutil: color-mix(in srgb, color-mix(in srgb, #e3ebe6 8%, #141d19) 86%, transparent);
      --e-sutil-2: color-mix(in srgb, color-mix(in srgb, #e3ebe6 18%, #141d19) 86%, transparent);
      --e-cartao-2: var(--acr-vidro-2);
      --e-veu: color-mix(in srgb, var(--acr-base) 80%, transparent);
      --vermelho: #ff9a8e; --amarelo: #f2c66d; --azul: #93c5ff; --suave: #b4c5bb; --e-suave: #b4c5bb;
      --e-vermelho-t: #ff9a8e; --e-azul-t: #93c5ff;
      --e-verde-esc-forte: color-mix(in srgb, color-mix(in srgb, var(--verde) 45%, #000) 90%, transparent);
      --e-vermelho-forte: color-mix(in srgb, #b0362a 90%, transparent);
      --e-amarelo-forte: color-mix(in srgb, #94600f 90%, transparent);
      --e-azul-forte: color-mix(in srgb, #1f5f99 90%, transparent);
    }

    /* 2. a folha de vidro da página (fora da tela inicial, que tem os cartões soltos sobre a foto de propósito) */
    :root[data-acrilico="on"] body:not(.entrada) .pagina { position: relative;
      --branco: var(--acr-vidro-2); --e-cartao: var(--acr-vidro-2); }
    :root[data-acrilico="on"] body:not(.entrada) .pagina::before {
      content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; border-radius: 0 0 16px 16px;
      background: var(--acr-vidro); box-shadow: 0 10px 40px var(--acr-sombra), inset 0 1px 0 var(--acr-brilho);
      -webkit-backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat));
      backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat)); }
    /* a folha vai até o pé da tela (06/10/2026, Romeu: «a página está sem acrílico» no Encaminhamento da Emissão sem
       pendência, na Busca Ativa com o filtro vazio e no Malote sem unidade): com pouco conteúdo ela acabava no meio
       e o resto da tela ficava foto pura. A barra do layout novo tem --barra-h; no antigo, o cabeçalho tem ~64 px. */
    :root[data-acrilico="on"] body:not(.entrada) .pagina {
      min-height: calc(100vh - var(--barra-h, 64px)); min-height: calc(100dvh - var(--barra-h, 64px)); }
    /* o bloco de estado (vazio, erro, carregando) fora de cartão e de tabela é um vidro como os cartões: antes era
       texto solto sobre a folha («Escolha a sua unidade», «Nenhuma guia neste filtro») */
    :root[data-acrilico="on"] body:not(.entrada) .estado:not(:is(.card, td, th, .ba-painel, .ba-lista .card) .estado) {
      background: var(--acr-vidro-2); border: 1px solid var(--acr-borda); border-radius: var(--raio, 10px);
      box-shadow: inset 0 1px 0 var(--acr-brilho); }
    /* dentro da folha, nenhum desfoque a mais (a folha já desfocou a foto) */
    :root[data-acrilico="on"] body:not(.entrada) .pagina *::before,
    :root[data-acrilico="on"] body:not(.entrada) .pagina table {
      -webkit-backdrop-filter: none; backdrop-filter: none; }
    /* a tela inicial: o texto solto (saudação, ajuda, «Apoio») ganha um vidro do tamanho dele */
    :root[data-acrilico="on"] body.entrada :is(.pagina > h1, .pagina > .ajuda, .pagina > .area-tit) {
      width: fit-content; max-width: 100%; padding: 6px 12px; border-radius: 10px; text-shadow: none;
      background: var(--acr-vidro); box-shadow: inset 0 1px 0 var(--acr-brilho);
      -webkit-backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat));
      backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat)); }

    /* 3. botões: vidro tingido (o primário, pela cor de ação do visual novo; os outros, pela cor deles) */
    :where(:root[data-acrilico="on"]) .btn {
      background: color-mix(in srgb, var(--v-acao, var(--verde)) 90%, transparent);
      border-color: color-mix(in srgb, var(--v-acao, var(--verde)) 70%, transparent);
      box-shadow: inset 0 1px 0 rgba(255, 255, 255, .18); }
    :root[data-acrilico="on"]:not([data-tema="escuro"]) .btn.alerta {
      background: var(--e-amarelo-forte, #7a4f0c); border-color: var(--e-amarelo-forte, #7a4f0c); }
    :root[data-acrilico="on"] .btn.whats { background: color-mix(in srgb, #17733f 90%, transparent); border-color: transparent; }
    :root[data-acrilico="on"] .btn.urg { background: color-mix(in srgb, #b42318 90%, transparent); border-color: transparent; }
    :root[data-acrilico="on"] .btn.sec { border-color: var(--acr-borda); box-shadow: inset 0 1px 0 var(--acr-brilho); }

    /* os números e contadores coloridos (passo da tela inicial, etapa da Emissão, aba das Concluídas, contador da
       Busca Ativa): vidro da cor deles, com o branco por cima ainda ≥ 4,5:1 */
    :root[data-acrilico="on"] body.entrada .passo { background: color-mix(in srgb, var(--marca, #0b5c3f) 88%, transparent); }
    /* uma regra por seletor (não :is, que dá a todos o peso do mais pesado e passava por cima do número apagado) */
    :root[data-acrilico="on"] .num, :root[data-acrilico="on"] .etapas li.feito .bola,
    :root[data-acrilico="on"] .topo nav a.em-passo-nav.on .em-passo-num,
    :root[data-acrilico="on"] .nb-passos a[aria-current="step"] .nb-passo-num,
    :root[data-acrilico="on"] .ba-rot-cenarios button.on .num {
      background: color-mix(in srgb, var(--v-acao, var(--verde)) 90%, transparent);
      border-color: transparent; }
    :root[data-acrilico="on"] body .fx-ok .fx-bola { background: color-mix(in srgb, var(--v-acao, var(--verde)) 90%, transparent); }
    :root[data-acrilico="on"] .abas-trabalho a.on .aba-n { background: color-mix(in srgb, #0b6b3a 88%, transparent); }
    /* as luzes de estado (Nina, robô da Busca Ativa, bolinha da guia): vidro da cor, sem perder o sinal */
    :root[data-acrilico="on"] .bola.verde { background: color-mix(in srgb, var(--verde) 85%, transparent); }
    :root[data-acrilico="on"] .reg { background: color-mix(in srgb, var(--reg) 85%, transparent); }
    :root[data-acrilico="on"] .robo-luz { background: color-mix(in srgb, #7ee2a5 85%, transparent); }
    :root[data-acrilico="on"] .ag-luz { background: color-mix(in srgb, #9fb2a6 85%, transparent); }
    :root[data-acrilico="on"] .ag-luz.ligado { background: color-mix(in srgb, #00a557 85%, transparent); }
    :root[data-acrilico="on"] .ag-luz.simulado { background: color-mix(in srgb, #b7791f 85%, transparent); }
    :root[data-acrilico="on"] .ag-luz.desligado { background: color-mix(in srgb, #c0392b 85%, transparent); }
    /* o texto apagado (Busca Ativa e afins) sobre o vidro: o tom de reserva dá 2,6:1 */
    :root[data-acrilico="on"]:not([data-tema="escuro"]) body { --e-apagado: #56645c; }
    :root[data-acrilico="on"][data-tema="escuro"] body { --e-apagado: #a3b4aa; }
    /* o cabeçalho na cor da marca: o item ativo e os botões redondos ESCURECEM o vidro (clarear derrubava o branco do
       texto para 3,6–4,2:1); o texto vai a branco cheio */
    :root[data-acrilico="on"] body.com-barra .topo nav :is(a.on, .menu-drop.on .menu-topo, .menu-drop:hover .menu-topo) {
      background: rgba(0, 0, 0, .22); color: #fff; }
    :root[data-acrilico="on"] body.com-barra .topo nav a:hover { background: rgba(0, 0, 0, .14); }
    :root[data-acrilico="on"] body.com-barra .topo :is(.ba-sino, .ba-perm) { background: rgba(0, 0, 0, .2); color: #fff; }
    :root[data-acrilico="on"] body.com-barra .topo .ba-eu { background: rgba(0, 0, 0, .26); color: #fff; }
    :root[data-acrilico="on"] body.com-barra .topo nav :is(a, .menu-topo) { color: #fff; }

    /* 4. o que flutua por cima de tudo */
    :root[data-acrilico="on"] dialog {
      background: color-mix(in srgb, var(--acr-base) 82%, transparent); border-color: var(--acr-borda);
      -webkit-backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat));
      backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat)); }
    /* 5. O QUE GRUDA (sticky) OU FLUTUA (fixed) POR CIMA DE CONTEÚDO (06/10/2026, varredura do Romeu): o fundo deles vinha
       do token de cartão, translúcido de 34 %, e o texto que passava por baixo aparecia através — a ficha de liberação,
       a janela do Malote/Liberação, o formulário de irregularidade, o placar do checklist, o visor cheio do Cardio. Vidro
       DENSO (84 % da cor de base) com desfoque próprio, como o diálogo. O cabeçalho das tabelas saiu daqui (06/10/2026:
       era a base a 78 %, quase sólido): é vidro leve com desfoque só nele, no bloco da zebra. */
    :root[data-acrilico="on"] :is(.lb-ficha, .lb-modal-caixa, .irreg[open] .irreg-form, .sst-placar, .cd-visor.cheia) {
      background: color-mix(in srgb, var(--acr-base) 84%, transparent); border-color: var(--acr-borda);
      -webkit-backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat));
      backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat)); }
    :root[data-acrilico="on"] .robo {
      background: color-mix(in srgb, #0e1a14 80%, transparent);
      -webkit-backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat));
      backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat)); }
  }
}

/* (Feito, 23/10/2026) o tamanho do texto no painel: A− / porcentagem / A+ (temas.js). O mesmo seletor do tema,
   em três colunas; o «A» pequeno e o grande dizem o sentido; no fim da faixa, o botão apaga. */
.tm-seg.tm-escala { grid-template-columns: 1fr 1.1fr 1fr; }
.tm-escala button { gap: 2px; font-variant-numeric: tabular-nums; }
.tm-escala .tm-escala-a { font-weight: 700; font-size: 12px; line-height: 1; }
.tm-escala .tm-escala-a.tm-escala-maior { font-size: 17px; }
.tm-escala button:disabled { opacity: .4; cursor: default; }

/* (Feito, 23/10/2026) VIDRO SÓ NOS BLOCOS (data-acrilico-modo="blocos", escolha da abinha): o que a tela inicial do
   Gestão já faz — os cartões soltos sobre a foto — em todas as páginas. A folha de vidro da página sai, e a foto
   aparece NÍTIDA entre os blocos; cada bloco ganha o próprio desfoque pelo MESMO pseudo-elemento atrás dele (o
   cartão em si não leva backdrop-filter: os fixos de dentro continuam presos à tela). A faixa do título, que ficaria
   solta sobre a foto, vira um vidro também; os blocos ficam um pouco mais densos, sem a folha por trás. */
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  @media screen {
    :root[data-acrilico="on"][data-acrilico-modo="blocos"] body:not(.entrada) .pagina {
      --branco: var(--acr-vidro); --e-cartao: var(--acr-vidro); }
    :root[data-acrilico="on"][data-acrilico-modo="blocos"] body:not(.entrada) .pagina::before {
      content: none; -webkit-backdrop-filter: none; backdrop-filter: none; }
    :root[data-acrilico="on"][data-acrilico-modo="blocos"] body:not(.entrada) .pagina :is(.card, .kpi, .kpis-mini,
      .modulo, .ba-c, .ba-grupo, .ba-painel, .ba-topo-busca, .contato, details.sec, .criterio, .equipe-topo,
      .sst-cartao, .cand-card, .dp-depto)::before {
      -webkit-backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat));
      backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat)); }
    :root[data-acrilico="on"][data-acrilico-modo="blocos"] body:not(.entrada) .pagina .nb-faixa {
      position: relative; padding: 10px 14px; border-radius: var(--raio, 10px); background: var(--acr-vidro);
      border: 1px solid var(--acr-borda); box-shadow: 0 8px 32px var(--acr-sombra), inset 0 1px 0 var(--acr-brilho); }
    :root[data-acrilico="on"][data-acrilico-modo="blocos"] body:not(.entrada) .pagina .nb-faixa::before {
      content: ""; position: absolute; inset: 0; z-index: -1; border-radius: inherit; pointer-events: none;
      -webkit-backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat));
      backdrop-filter: blur(var(--acr-blur)) saturate(var(--acr-sat)); }
  }
}
