/* astra-tokens.css — camada de token única da moldura (Fase 2 do reskin Astra)
 * CAMADA 1: primitivas por cor e intensidade. Viram quando o tema virar.
 * CAMADA 2: semânticas por papel. Apontam para a camada 1; não viram sozinhas.
 * Carregado depois das folhas da moldura: autoridade sobre os nomes abaixo,
 * declarados fora de :root (ver camadas 1 e 2). Não redeclara --bg/--surface/--text/--line/--muted, que já
 * existem com valores conflitantes entre arquivos: nomes novos, sem colisão.
 * Zero seletor de componente aqui — só definição de variável.
 *
 * Fase 2b acrescenta as famílias --noturno, --ciano, --gelo e --bruma: cobre
 * midnight-shell.css (a moldura ESCURA, que vence canonical-shell.css na
 * maioria das rotas). São primitivas/semânticas SEPARADAS das da Fase 2 —
 * --texto (#14233a, claro) e --noturno-texto (#e7f1f7, escuro) não são o
 * mesmo papel em dois temas, são duas camadas empilhadas na mesma tela hoje.
 */
/* Export congelado (15/09/2026) — camadas 1 e 2 FORA de :root.
 * Custom property é herdada e getComputedStyle a enumera: declarada em :root, cada
 * nome abaixo entrava no estilo computado de #shift-board, .report-paper e
 * #communication-document, que dom-export.mjs copia inteiro (custom properties
 * inclusive) para o PNG/PDF, e mudava a impressão digital congelada em
 * tests/fixtures/export-baseline.json. Os nomes passam a ser declarados nos filhos de
 * cada elo da cadeia html > body > .viewport > .app-shell > .workspace >
 * .paper-wrap ou .document-stage que não são o próximo elo nem uma raiz exportável:
 * a moldura inteira continua herdando os tokens; as três raízes, não. Onde a própria
 * cadeia consome token (canonical-shell.css e midnight-shell.css), o var() traz o
 * mesmo valor como fallback. Mesmo princípio do bloco da Fase 3, abaixo. */
body>:not(.viewport),
.viewport>:not(.app-shell),
.app-shell>:not(.workspace),
.workspace>:not(.paper-wrap,.document-stage,#shift-board,.report-paper,#communication-document),
:is(.paper-wrap,.document-stage)>:not(#shift-board,.report-paper,#communication-document){
  /* camada 1 — primitivas, nomeadas por cor e intensidade */
  --slate-0:#fff;
  --slate-50:#f8fafc;
  --slate-100:#f3f6fa;
  --slate-150:#eef4fb;
  --slate-175:#eef3f8;
  --slate-200:#edf3f8;
  --slate-250:#e1e7ef;
  --slate-300:#d9e1eb;
  --slate-350:#cbd7e4;
  --slate-500:#52647c;
  --slate-600:#475569;
  --slate-650:#40516a;
  --slate-700:#334155;
  --slate-800:#17345b;
  --slate-850:#14233a;
  --slate-900:#102744;
  --azul-500:#2d64c8;
  --verde-400:#a3df68;
  --vermelho-500:#ff3b46;
  --ambar-400:#ff9a2f;
  --ambar-100:#fff8df;
  --creme-50:#fffdf7;
  --overlay-backdrop:rgba(8,20,36,.68);

  /* camada 1 — primitivas da moldura escura (midnight), Fase 2b */
  --noturno-900:#020a14;
  --noturno-900-topbar:#020a14ed;
  --noturno-850:#071725;
  --noturno-800:#091e2e;
  --noturno-750:#0c2334;
  --noturno-700:#294254;
  --noturno-650:#2b4b60;
  --ciano-300:#75cbdc;
  --ciano-450:#00cce2;
  --ciano-500:#00d9ef;
  --ciano-550:#00e3f5;
  --ciano-600:#00e4f8;
  --ciano-850:#00485e;
  --ciano-900:#00394e;
  --azul-eletrico:#3d9eff;
  --gelo-100:#f2f6fa;
  --gelo-150:#edf5fa;
  --gelo-200:#e7f3fa;
  --gelo-250:#e7f1f7;
  --gelo-300:#e3eef5;
  --gelo-350:#dcebf5;
  --gelo-360:#dcebf4;
  --gelo-370:#dceaf3;
  --gelo-400:#d9e6ef;
  --bruma-500:#b5c8d6;
  --bruma-550:#aabccb;
  --bruma-600:#a9bdcd;
  --bruma-650:#a5b9c9;

  /* camada 2 — semânticas, nomeadas por papel */
  --fundo-app:var(--slate-100);
  --texto:var(--slate-850);
  --texto-fraco:var(--slate-600);
  --texto-mais-fraco:var(--slate-700);
  --texto-sutil:var(--slate-650);
  --texto-inverso:var(--slate-0);
  --superficie:var(--slate-0);
  --superficie-sutil:var(--slate-50);
  --trilho-fundo:var(--slate-175);
  --dialogo-selo-fundo:var(--slate-150);
  --borda:var(--slate-300);
  --borda-forte:var(--slate-350);
  --linha:var(--slate-250);
  --acento-escuro:var(--slate-800);
  --foco:var(--azul-500);
  --acento-positivo:var(--verde-400);
  --topbar-texto-sutil:var(--slate-200);
  --marca-sigla:var(--ambar-400);
  --marca-nome:var(--vermelho-500);
  --escuro-base:var(--slate-900);
  --aviso-fundo:var(--ambar-100);
  --papel-fundo:var(--creme-50);
  --sobreposicao:var(--overlay-backdrop);
  --nav-texto:var(--slate-500);

  /* camada 2 — semânticas da moldura escura (midnight), Fase 2b */
  --noturno-fundo-app:var(--noturno-900);
  --noturno-fundo-topbar:var(--noturno-900-topbar);
  --noturno-texto:var(--gelo-250);
  --noturno-texto-forte:var(--gelo-150);
  --noturno-texto-fraco:var(--bruma-650);
  --noturno-texto-sutil:var(--bruma-500);
  --noturno-topbar-texto-fraco:var(--bruma-550);
  --noturno-nav-texto:var(--gelo-400);
  --noturno-marca-sigla:var(--gelo-100);
  --noturno-foco:var(--ciano-500);
  --noturno-foco-alt:var(--ciano-450);
  --noturno-foco-texto-ativo:var(--ciano-600);
  --noturno-foco-texto-alt:var(--ciano-550);
  --noturno-icone:var(--ciano-300);
  --noturno-acento-fundo:var(--ciano-900);
  --noturno-acento-fundo-alt:var(--ciano-850);
  --noturno-acento-azul:var(--azul-eletrico);
  --noturno-painel-fundo:var(--noturno-850);
  --noturno-painel-fundo-alt:var(--noturno-800);
  --noturno-painel-borda:var(--noturno-700);
  --noturno-painel-texto:var(--gelo-370);
  --noturno-painel-texto-forte:var(--gelo-300);
  --noturno-painel-texto-fraco:var(--bruma-600);
  --noturno-campo-fundo:var(--noturno-750);
  --noturno-campo-borda:var(--noturno-650);
  --noturno-campo-texto:var(--gelo-350);
  --noturno-campo-texto-alt:var(--gelo-360);
  --noturno-campo-texto-input:var(--gelo-200);
}

/* Fase 3 — tokens da MOLDURA, escopados aos contêineres dela (não a :root).
 * Custom property é herdada: definida em :root entraria no estilo computado de
 * #shift-board, .report-paper e #communication-document, que dom-export.mjs copia
 * para o PNG/PDF (achado do Gauntlet, revisor A, F8). Escopar ao trilho, à barra
 * lateral, à barra de topo e à navegação de seção mantém as três árvores sem os
 * nomes abaixo. A rota "radar" fica de fora, como no bloco da Fase 3 em
 * midnight-shell.css: radar-v42-visual.css é camada visual própria e o radar-v41
 * (moldura clara, mesma rota) não deve herdar token que não consome. Continua
 * sendo só definição de variável: nenhuma propriedade visual é declarada aqui. */
html[data-canonical-shell][data-canonical-shell-route]:not([data-canonical-shell-route="radar"]) .app-shell>:is(.topbar,.sidebar,.right-rail,.settings-rail),
html[data-canonical-shell][data-canonical-shell-route]:not([data-canonical-shell-route="radar"]) .section-navigation{
  /* camada 1 — primitivas da moldura */
  --fio-branco:rgba(255,255,255,.055);
  --vidro-escuro-alto:rgba(7,10,14,.84);
  --vidro-escuro-baixo:rgba(6,8,12,.80);
  --sombra-longe:0 30px 80px -44px rgba(0,0,0,.82);
  --raio-14:14px;
  /* camada 2 — semânticas da moldura */
  --moldura-painel-borda:var(--fio-branco);
  --moldura-painel-fundo:linear-gradient(var(--vidro-escuro-alto),var(--vidro-escuro-baixo));
  --moldura-painel-sombra:var(--sombra-longe);
  --moldura-raio:var(--raio-14);
  /* movimento contido (Assinatura 6): rápido para cor e borda, base para sombra */
  --dur-rapida:.14s;
  --dur-base:.22s;
  --ease-enfase:cubic-bezier(.16,1,.3,1);
}
@media (prefers-reduced-motion:reduce){
  html[data-canonical-shell][data-canonical-shell-route]:not([data-canonical-shell-route="radar"]) .app-shell>:is(.topbar,.sidebar,.right-rail,.settings-rail),
  html[data-canonical-shell][data-canonical-shell-route]:not([data-canonical-shell-route="radar"]) .section-navigation{
    --dur-rapida:0s;
    --dur-base:0s;
  }
}
