/* ===========================================================================
   TRADESTAR DISPATCH — folha única (gerada a partir de styles.css)
   Cole dentro de um <style> no HTML do report, ou linke este arquivo.
   NÃO inclui as fontes: para PDF/offline, some tokens/fonts.css (base64) antes
   deste bloco. Para tela, o <link> do Google Fonts resolve:
   Fraunces + Manrope + JetBrains Mono.
   Ordem de origem: tokens/colors.css → tokens/typography.css → tokens/layout.css → css/base.css → css/marca.css → css/editorial.css → css/dados.css → css/graficos.css → css/tabelas.css → css/controles.css → css/alertas.css → css/cartas.css → css/painel.css → css/fluxo.css → css/animacao.css → css/responsivo.css → css/impressao.css
   Gerado por build_dist.py — NUNCA editar este arquivo a mão.
   =========================================================================== */

/* ==== tokens/colors.css ==== */
/* ---------------------------------------------------------------------------
   COR — base preto / branco / cinza + UM acento trocável por tema
   A marca Tradestar é grafite e preto: a base é neutra de verdade (croma 0).
   O acento não é uma escolha estética por documento — é um TEMA:
       <body class="acento-verde">     ← padrão
       <body class="acento-azul">
       <body class="acento-vermelho">
   Troque a classe e o report inteiro (fios, §, série 1, veredito, mapa de
   calor, chips) muda junto. Some body.escuro para a edição escura.
   Camada 1: cinzas crus + tema.  Camada 2: apelidos semânticos (use estes).
   --------------------------------------------------------------------------- */
:root{
  /* --- 1 · cinzas (croma 0) --------------------------------------------- */
  --cinza-0:#FFFFFF;
  --cinza-1:#F5F5F5;   /* papel */
  --cinza-2:#EAEAEA;   /* recuo: controles, cabeçalho de tabela, trilhos */
  --cinza-3:#D8D8D8;   /* fio */
  --cinza-4:#BDBDBD;   /* fio forte */
  --cinza-5:#8A8A8A;   /* texto terciário */
  --cinza-7:#454545;   /* texto secundário */
  --cinza-9:#141414;   /* tinta */

  /* --- 1b · tintas de família (sutis, croma baixo) ----------------------
     Só para etiqueta de família/categoria em tabela. Nunca para gráfico,
     nunca como fundo de bloco. Oito tintas, cíclicas.                     */
  --fam-1-bg:#E6EEE9; --fam-1-tx:#2C5F43;
  --fam-2-bg:#E7ECF3; --fam-2-tx:#32506F;
  --fam-3-bg:#F1ECE1; --fam-3-tx:#6A5A31;
  --fam-4-bg:#EEE8EF; --fam-4-tx:#5C4460;
  --fam-5-bg:#E4EEEE; --fam-5-tx:#2C5C60;
  --fam-6-bg:#F2E9E6; --fam-6-tx:#78423A;
  --fam-7-bg:#EBEFE5; --fam-7-tx:#4C6035;
  --fam-8-bg:#ECEBE9; --fam-8-tx:#4A4745;

  /* --- 2 · semáforo (fixo, não depende do tema) ------------------------- */
  --sem-ok:#2F6B4A;    --sem-ok-claro:#6FB58C;    --sem-ok-soft:#DFEAE3;
  --sem-risco:#A33726; --sem-risco-claro:#E0876C; --sem-risco-soft:#F3DED8;
  --sem-aviso:#8A6A14; --sem-aviso-claro:#C9A544; --sem-aviso-soft:#EFE6CC;
  /* rampa de FOGO: calor fixo em tijolo, independente do acento — para
     heatmap de SAÍDA/negativo (a rampa --calor acompanha o acento e é a
     do positivo/entrada). Mesmos degraus do calor do acento vermelho. */
  --fogo-0:#F5EEEC; --fogo-1:#EFD9D5; --fogo-2:#DCAEA6;
  --fogo-3:#C57E72; --fogo-4:#A3271F; --fogo-5:#5E120D;
}

/* --- 3 · temas de acento --------------------------------------------------
   Cada tema declara: 6 = acento, 1 = fundo suave, 8 = tinta do acento,
   4 = versão clara (edição escura), soft-escuro = fundo suave no escuro,
   calor-0..5 = rampa do treemap / matriz.                                  */
:root,
body.acento-verde{
  --ac-6:#2D5A3D; --ac-1:#D9E5DD; --ac-8:#14361F; --ac-4:#7FB08D; --ac-soft-esc:#1B2A20;
  --calor-0:#EDF1EE; --calor-1:#D3E0D8; --calor-2:#A6C4B0;
  --calor-3:#6E9C80; --calor-4:#3E7154; --calor-5:#14361F;
}
body.acento-azul{
  --ac-6:#1E4E8C; --ac-1:#D8E2F0; --ac-8:#0F2E55; --ac-4:#86AEE0; --ac-soft-esc:#172436;
  --calor-0:#ECEFF5; --calor-1:#D3DCEC; --calor-2:#A6B8D8;
  --calor-3:#6E8AB8; --calor-4:#3A5D91; --calor-5:#0F2E55;
}
body.acento-vermelho{
  --ac-6:#A3271F; --ac-1:#F2DBD8; --ac-8:#5E120D; --ac-4:#E08A7E; --ac-soft-esc:#2E1917;
  --calor-0:#F5EEEC; --calor-1:#EFD9D5; --calor-2:#DCAEA6;
  --calor-3:#C57E72; --calor-4:#A3271F; --calor-5:#5E120D;
}
/* monocromáticos — quando o report não deve ter cor nenhuma além da tinta.
   O semáforo continua sendo a única cor da página (e por isso salta mais).  */
body.acento-preto{
  --ac-6:#141414; --ac-1:#E2E2E2; --ac-8:#000000; --ac-4:#F2F2F1; --ac-soft-esc:#2B2B2B;
  --calor-0:#EDEDED; --calor-1:#D2D2D2; --calor-2:#A8A8A8;
  --calor-3:#6E6E6E; --calor-4:#3C3C3C; --calor-5:#000000;
}
body.acento-cinza{
  --ac-6:#6E6E6E; --ac-1:#E7E7E7; --ac-8:#3A3A3A; --ac-4:#C2C2C2; --ac-soft-esc:#242424;
  --calor-0:#F0F0F0; --calor-1:#DCDCDC; --calor-2:#BFBFBF;
  --calor-3:#9A9A9A; --calor-4:#6E6E6E; --calor-5:#3A3A3A;
}
/* branco só existe de verdade no escuro/preto. No claro cai para tinta —
   texto branco sobre papel branco não é uma opção de design, é um bug.      */
body.acento-branco{
  --ac-6:#1C1C1C; --ac-1:#E6E6E6; --ac-8:#000000; --ac-4:#FFFFFF; --ac-soft-esc:#333333;
  --calor-0:#EFEFEF; --calor-1:#D6D6D6; --calor-2:#ADADAD;
  --calor-3:#767676; --calor-4:#3F3F3F; --calor-5:#111111;
}
body.escuro.acento-branco{
  --accent:#FFFFFF; --accent-soft:#2E2E2E; --accent-ink:#FFFFFF; --accent-on:#000000;
  --serie-1:#FFFFFF; --serie-5:#9A9A9A;
  --calor-0:#1A1A1A; --calor-1:#2B2B2B; --calor-2:#454545;
  --calor-3:#6E6E6E; --calor-4:#A8A8A8; --calor-5:#FFFFFF;
}
body.escuro.acento-preto{
  --accent:#F2F2F1; --accent-soft:#2B2B2B; --accent-ink:#F2F2F1; --accent-on:#000000;
  --serie-1:#F2F2F1; --serie-2:#9A9A9A; --serie-5:#5E5E5E;
  --calor-0:#1A1A1A; --calor-1:#2A2A2A; --calor-2:#434343;
  --calor-3:#6B6B6B; --calor-4:#A0A0A0; --calor-5:#EDEDED;
}
body.escuro.acento-cinza{
  --accent:#C2C2C2; --accent-soft:#262626; --accent-ink:#D8D8D8; --accent-on:#111111;
  --serie-1:#C2C2C2; --serie-5:#6E6E6E;
  --calor-0:#1B1B1B; --calor-1:#292929; --calor-2:#3E3E3E;
  --calor-3:#5E5E5E; --calor-4:#8C8C8C; --calor-5:#C2C2C2;
}

/* --- 4 · semânticos (o que o HTML usa) ---------------------------------- */
:root{
  --paper:var(--cinza-1);
  --paper-2:var(--cinza-2);
  --card:var(--cinza-0);
  --ink:var(--cinza-9);
  --ink-2:var(--cinza-7);
  --ink-3:var(--cinza-5);
  --rule:var(--cinza-3);
  --rule-2:var(--cinza-4);

  --accent:var(--ac-6);
  --accent-soft:var(--ac-1);
  --accent-ink:var(--ac-8);
  --accent-on:#FFFFFF;         /* texto sobre o acento cheio */

  --ok:var(--sem-ok);        --ok-soft:var(--sem-ok-soft);
  --risco:var(--sem-risco);  --risco-soft:var(--sem-risco-soft);
  --aviso:var(--sem-aviso);  --aviso-soft:var(--sem-aviso-soft);
  --moss:var(--ok);            /* compat com reports antigos */

  /* série de dados — 1 é o acento, o resto é cinza. Máx 6. */
  --serie-1:var(--ac-6);
  --serie-2:var(--cinza-9);
  --serie-3:var(--cinza-5);
  --serie-4:var(--cinza-4);
  --serie-5:var(--ac-4);
  --serie-6:var(--sem-aviso);
}

/* --- 5 · edição escura -------------------------------------------------- */
body.escuro{
  --paper:#131313;
  --paper-2:#1C1C1C;
  --card:#1C1C1C;
  --ink:#F2F2F1;
  --ink-2:#C7C7C6;
  --ink-3:#8A8A8A;
  --rule:#333333;
  --rule-2:#4A4A4A;
  /* fogo no escuro: mesma sequência do calor vermelho escuro */
  --fogo-0:#1E1917; --fogo-1:#2E1E1B; --fogo-2:#4A2A24;
  --fogo-3:#7A3A30; --fogo-4:#A3271F; --fogo-5:#E08A7E;

  --accent:var(--ac-4);
  --accent-soft:var(--ac-soft-esc);
  --accent-ink:var(--ac-4);
  --accent-on:#111111;

  --ok:var(--sem-ok-claro);       --ok-soft:#1B2A22;
  --risco:var(--sem-risco-claro); --risco-soft:#2E1D18;
  --aviso:var(--sem-aviso-claro); --aviso-soft:#2A2314;

  --serie-1:var(--ac-4);
  --serie-2:#F2F2F1;
  --serie-3:var(--cinza-5);
  --serie-4:#4A4A4A;
  --serie-5:var(--ac-6);
  --serie-6:var(--sem-aviso-claro);
  --fam-1-bg:#1D2A23; --fam-1-tx:#8FC0A3;
  --fam-2-bg:#1C2530; --fam-2-tx:#9DB6D3;
  --fam-3-bg:#2A251A; --fam-3-tx:#CBB784;
  --fam-4-bg:#261E28; --fam-4-tx:#BFA3C4;
  --fam-5-bg:#1A2728; --fam-5-tx:#8DBCC0;
  --fam-6-bg:#2A1E1B; --fam-6-tx:#D3A198;
  --fam-7-bg:#222A1C; --fam-7-tx:#AEC08F;
  --fam-8-bg:#252423; --fam-8-tx:#BFBCB8;
}
/* --- 5b · edição preta ---------------------------------------------------
   Preto de verdade (#000) para OLED, sala escura e telão. Herda tudo de
   body.escuro — no HTML use as duas classes: <body class="escuro preto">.
   O toolkit (TD.temaInit) cicla claro → escuro → preto e persiste.        */
body.escuro.preto{
  --paper:#000000;
  --paper-2:#0C0C0C;
  --card:#0A0A0A;
  --ink:#F7F7F6;
  --ink-2:#CFCFCE;
  --ink-3:#8C8C8C;
  --rule:#242424;
  --rule-2:#3A3A3A;
  --accent-on:#000000;
}
body.escuro.preto::before{opacity:.16}          /* menos grão no preto puro */
body.escuro.preto .fig,body.escuro.preto .grupo,body.escuro.preto table.led{
  background:var(--card)}

/* rampa de calor no escuro: a mesma sequência, invertida em luminância */
body.escuro.acento-verde,body.escuro:not(.acento-azul):not(.acento-vermelho){
  --calor-0:#1B1E1C; --calor-1:#24302A; --calor-2:#2F4A39;
  --calor-3:#3E7154; --calor-4:#5F9B77; --calor-5:#7FB08D;
}
body.escuro.acento-azul{
  --calor-0:#181A1E; --calor-1:#1F2A38; --calor-2:#2A3F5C;
  --calor-3:#3A5D91; --calor-4:#5E86BE; --calor-5:#86AEE0;
}
body.escuro.acento-vermelho{
  --calor-0:#1E1917; --calor-1:#2E1E1B; --calor-2:#4A2A24;
  --calor-3:#7A3A30; --calor-4:#A3271F; --calor-5:#E08A7E;
}

/* ==== tokens/typography.css ==== */
/* ---------------------------------------------------------------------------
   TIPOGRAFIA — três vozes, sem exceção
   Fraunces  → display: títulos, valores de KPI, primeira coluna de tabela.
   Manrope   → corpo. Nunca Inter.
   JetBrains Mono → rótulo, metadado, número dentro de tabela, eixo, código.
   Regra de ouro: se é número que se compara, é mono e tabular. Se é número
   que impressiona (um KPI grande), é Fraunces.
   --------------------------------------------------------------------------- */
:root{
  --fonte-display:'Fraunces',Georgia,serif;
  --fonte-corpo:'Manrope',-apple-system,'Segoe UI',sans-serif;
  --fonte-mono:'JetBrains Mono','SFMono-Regular',Consolas,monospace;

  /* escala de display — densa; um report não é uma landing page */
  --fs-hero:clamp(34px,4.4vw,58px);
  --fs-h1:clamp(28px,3.2vw,40px);
  --fs-h2:23px;
  --fs-h3:17px;
  --fs-veredito:22px;

  /* corpo */
  --fs-lede:13.5px;
  --fs-corpo:13px;
  --fs-corpo-2:12px;

  /* mono */
  --fs-rotulo:9.5px;    /* eyebrow, kpi-label, th */
  --fs-meta:10px;       /* masthead, chips */
  --fs-num:11px;        /* célula de tabela */
  --fs-nota:9px;        /* eixo, dica, colofão */

  /* números de destaque */
  --fs-kpi:38px;
  --fs-kpi-2:25px;

  --lh-display:1.03;
  --lh-corpo:1.6;
  --ls-display:-.025em;
  --ls-rotulo:.16em;
  --ls-meta:.2em;
}

/* tabulação é lei: qualquer número alinha coluna a coluna */
*{font-variant-numeric:tabular-nums}

/* utilitários de voz — para quando o componente não cobre o caso */
.u-display{font-family:var(--fonte-display);font-weight:400;letter-spacing:var(--ls-display)}
.u-mono{font-family:var(--fonte-mono)}
.u-rotulo{font-family:var(--fonte-mono);font-size:var(--fs-rotulo);letter-spacing:var(--ls-rotulo);
  text-transform:uppercase;color:var(--ink-3)}
.u-nota{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.06em;color:var(--ink-3)}
.u-num{font-family:var(--fonte-mono);font-size:var(--fs-num);color:var(--ink-2)}
.u-pos{color:var(--ok)} .u-neg{color:var(--risco)} .u-aviso{color:var(--aviso)}
.u-acc{color:var(--accent)}
em.acc,.u-it{font-style:italic;color:var(--accent)}

/* ==== tokens/layout.css ==== */
/* ---------------------------------------------------------------------------
   MEDIDA, FIO E RITMO
   O sistema é regido por fios, não por sombras. Três pesos de fio, quatro
   passos de espaço. Cantos: 0. Sempre 0. Sombra: nenhuma (exceto o anel do
   marcador "agora" numa linha do tempo).
   --------------------------------------------------------------------------- */
:root{
  /* largura da folha por tipo de report */
  --w-folha:1040px;     /* dashboard denso (padrão) */
  --w-folha-larga:1180px;/* muitas colunas / kanban */
  --w-folha-texto:820px; /* memo, narrativa, decisão */
  --w-medida:70ch;       /* medida de leitura do corpo */

  /* espaço — passos densos; report cabe mais informação por dobra */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px;
  --sp-5:22px; --sp-6:30px; --sp-7:42px; --sp-8:60px;

  /* fio */
  --fio:1px solid var(--rule);
  --fio-2:1.5px solid var(--ink);
  --fio-3:3px solid var(--ink);
  --fio-pont:1px dotted var(--rule);

  --raio:0;
  --dur:.22s;
  --ease:cubic-bezier(.2,.7,.3,1);
}

/* ==== css/base.css ==== */
/* --- BASE ---------------------------------------------------------------- */
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{background:var(--paper);color:var(--ink);font-family:var(--fonte-corpo);
  font-size:var(--fs-corpo);line-height:var(--lh-corpo);
  transition:background var(--dur),color var(--dur)}

/* grão de papel — fica. É o que separa "dispatch" de "dashboard". */
body::before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.30;z-index:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .04 0'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E")}

.folha,.paper{max-width:var(--w-folha);margin:0 auto;padding:26px 38px 34px;
  position:relative;z-index:1}
.folha.larga{max-width:var(--w-folha-larga)}
.folha.texto{max-width:var(--w-folha-texto)}

a{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent-soft)}
a:hover{border-bottom-color:var(--accent)}
code,kbd{font-family:var(--fonte-mono);font-size:.92em;background:var(--paper-2);
  border:1px solid var(--rule);padding:1px 4px}
::selection{background:var(--accent-soft);color:var(--accent-ink)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* fio de separação entre blocos de um report longo */
.fio{border:none;border-top:var(--fio-2);margin:var(--sp-6) 0 var(--sp-5)}
.fio-fino{border:none;border-top:var(--fio);margin:var(--sp-5) 0}

/* grades utilitárias — o report se monta com estas, não com margens soltas */
.g2,.g3,.g4{display:grid;gap:var(--sp-4)}
.g2{grid-template-columns:1fr 1fr}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
.g-lado{display:grid;grid-template-columns:1fr 300px;gap:var(--sp-5);align-items:start}
.linha{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}

/* ==== css/marca.css ==== */
/* --- MARCA + MASTHEAD -----------------------------------------------------
   A logo entra sempre no masthead, à esquerda, altura 22–26px, e em mais
   nenhum lugar do documento. Nunca dentro do corpo, nunca ampliada, nunca
   colorida de indigo. Respiro mínimo = altura da própria logo.
   Fundo escuro usa a versão invertida (troca automática via body.escuro).
   ------------------------------------------------------------------------- */
.masthead{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-5);
  border-top:var(--fio-3);border-bottom:var(--fio);padding:13px 0 11px;flex-wrap:nowrap}
.mh-marca{display:flex;align-items:center;gap:14px;flex-shrink:0}
.mh-logo{height:23px;width:auto;display:block}
body.escuro .mh-logo{filter:invert(1) brightness(1.9)}
.mh-marca::after{content:"";width:1px;height:16px;background:var(--rule-2)}
.mh{font-family:var(--fonte-mono);font-size:var(--fs-meta);letter-spacing:var(--ls-meta);
  text-transform:uppercase;color:var(--ink-3);white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis}
.masthead>.mh{flex:0 1 auto;min-width:0}
.mh strong{color:var(--ink-2);font-weight:500}
.mh-dir{margin-left:auto;display:flex;align-items:center;gap:11px;flex-shrink:0}
.extracao,.destinatario{font-family:var(--fonte-mono);font-size:var(--fs-nota);
  letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;color:var(--ink-3)}
.destinatario{padding:4px 8px;border:1px solid var(--accent);color:var(--accent-ink);
  background:var(--accent-soft);font-weight:700}

/* selo de edição/estado no masthead: AO VIVO, SNAPSHOT, RASCUNHO */
.selo{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.16em;
  text-transform:uppercase;background:var(--ink);color:var(--paper);padding:4px 9px;
  white-space:nowrap}
.selo.acc{background:var(--accent);color:var(--accent-on)}
.selo.vivo{background:var(--ok);color:#fff}
.selo.vivo::before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;
  background:currentColor;margin-right:6px;vertical-align:1px;animation:pulso 1.8s infinite}
@keyframes pulso{0%,100%{opacity:1}50%{opacity:.25}}

/* rodapé de fonte de dados — todo report termina nele */
.colofao{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.08em;
  line-height:1.75;color:var(--ink-3);border-top:var(--fio);padding-top:12px;margin-top:var(--sp-5)}
.colofao b{color:var(--ink-2);font-weight:500}

/* cabeça repetida na impressão */
.running-head{display:none}

/* ==== css/editorial.css ==== */
/* --- EDITORIAL: título, veredito, seção, texto ---------------------------- */
h1,.h1{font-family:var(--fonte-display);font-weight:400;font-size:var(--fs-h1);
  letter-spacing:var(--ls-display);line-height:var(--lh-display);margin:22px 0 6px}
h1 em,.h1 em{font-style:italic;color:var(--accent)}
.hero-h1{font-size:var(--fs-hero)}
h2,.h2{font-family:var(--fonte-display);font-weight:500;font-size:var(--fs-h2);
  letter-spacing:-.015em;line-height:1.1}
h3,.h3{font-family:var(--fonte-display);font-weight:500;font-size:var(--fs-h3);
  letter-spacing:-.01em;line-height:1.2}
.lede{font-size:var(--fs-lede);line-height:1.6;color:var(--ink-2);max-width:82ch;
  margin-bottom:var(--sp-5)}
.corpo{font-size:var(--fs-corpo);line-height:var(--lh-corpo);color:var(--ink-2);
  max-width:var(--w-medida);text-wrap:pretty}
.corpo+.corpo{margin-top:var(--sp-3)}
.corpo b,.corpo strong{color:var(--ink);font-weight:600}

/* eyebrow acima de qualquer bloco */
.eyebrow{font-family:var(--fonte-mono);font-size:var(--fs-rotulo);letter-spacing:var(--ls-rotulo);
  text-transform:uppercase;color:var(--ink-3);margin-bottom:var(--sp-2)}

/* § NN — cabeça de seção. Numere sempre; "Capítulo 1" não existe aqui. */
.secao{display:grid;grid-template-columns:auto 1fr;gap:var(--sp-4);align-items:baseline;
  border-top:var(--fio-2);padding-top:11px;margin:var(--sp-6) 0 var(--sp-4)}
.secao-n{font-family:var(--fonte-mono);font-size:var(--fs-meta);letter-spacing:.14em;
  color:var(--accent);font-weight:600;padding-top:5px;white-space:nowrap}
.secao h2{margin-bottom:3px}
.secao-kicker{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-3);grid-column:2}

/* VEREDITO — a frase que o leitor lê se ler só uma coisa.
   Um por report, no topo, gerada a partir dos números. */
.veredito{font-family:var(--fonte-display);font-style:italic;font-weight:300;
  font-size:var(--fs-veredito);line-height:1.3;letter-spacing:-.01em;color:var(--ink);
  border-left:3px solid var(--accent);padding:5px 0 5px 17px;margin:0 0 var(--sp-5);
  max-width:62ch;animation:sobe .5s var(--ease)}
.veredito em{font-style:italic;color:var(--accent);font-weight:500}
.veredito small{display:block;font-family:var(--fonte-mono);font-style:normal;font-size:var(--fs-nota);
  letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-top:8px}
@keyframes sobe{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}

/* capitular — uma vez por documento longo, no primeiro parágrafo */
.capitular>p:first-of-type::first-letter{font-family:var(--fonte-display);font-weight:400;
  font-size:70px;line-height:.66;float:left;margin:9px 12px -2px 0;color:var(--accent)}

/* notas de margem — a ressalva sai da linha do argumento */
.com-notas{display:grid;grid-template-columns:1fr 220px;gap:var(--sp-7);align-items:start}
.com-notas .col-corpo{max-width:60ch}
.notas-lado{display:flex;flex-direction:column;gap:var(--sp-5);padding-top:3px}
.nota-lado{font-family:var(--fonte-mono);font-size:10.5px;line-height:1.65;color:var(--ink-3);
  border-top:var(--fio);padding-top:8px}
.nota-lado b{display:block;color:var(--accent);font-weight:600;margin-bottom:3px}
sup.ref{font-family:var(--fonte-mono);font-size:9px;color:var(--accent);font-weight:600;padding:0 1px}

/* entretítulo — pausa de ritmo entre seções, uma linha só */
.entretitulo{border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);
  padding:38px 0;margin:var(--sp-6) 0}
.entretitulo .marca-cit{font-family:var(--fonte-display);font-size:46px;color:var(--accent);
  line-height:.5;display:block;height:24px}
.entretitulo blockquote{font-family:var(--fonte-display);font-style:italic;font-weight:300;
  font-size:30px;line-height:1.24;letter-spacing:-.02em;max-width:26ch;margin-top:14px}
.entretitulo blockquote em{color:var(--accent)}
.entretitulo cite{display:block;font-family:var(--fonte-mono);font-size:var(--fs-meta);
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-style:normal;margin-top:16px}

/* sumário — só em report longo */
.sumario{border-top:var(--fio-2);border-bottom:var(--fio-2);margin-bottom:var(--sp-5)}
.sumario a{display:grid;grid-template-columns:auto 1fr auto;gap:var(--sp-4);align-items:baseline;
  padding:10px 3px;border-bottom:var(--fio-pont);color:inherit;border-left:none;border-right:none}
.sumario a:last-child{border-bottom:none}
.sumario a:hover{background:var(--paper-2)}
.sumario-n{font-family:var(--fonte-mono);font-size:var(--fs-num);color:var(--accent);font-weight:600;
  white-space:nowrap}
.sumario-t{font-family:var(--fonte-display);font-size:17px}
.sumario-t em{font-style:italic;color:var(--accent)}
.sumario-p{font-family:var(--fonte-mono);font-size:var(--fs-num);color:var(--ink-3)}

/* notas de pé */
.notas-pe{border-top:var(--fio);padding-top:12px;margin-top:var(--sp-5);max-width:76ch}
.notas-pe ol{list-style:none;counter-reset:fn}
.notas-pe li{counter-increment:fn;position:relative;padding:5px 0 5px 24px;font-size:12px;
  color:var(--ink-2);line-height:1.55}
.notas-pe li::before{content:counter(fn);position:absolute;left:0;top:5px;
  font-family:var(--fonte-mono);font-size:9px;color:var(--accent);font-weight:600}

/* citação de destaque */
.destaque{font-family:var(--fonte-display);font-style:italic;font-weight:300;font-size:26px;
  line-height:1.3;letter-spacing:-.02em;max-width:34ch;color:var(--ink);
  border-top:var(--fio-2);border-bottom:var(--fio-2);padding:22px 0;margin:var(--sp-5) 0}
.destaque em{color:var(--accent)}

/* ==== css/dados.css ==== */
/* --- DADOS: KPI, chips, blocos de grupo, linha do tempo, passos ----------- */

/* KPI — a régua superior. 2 a 5 colunas; o valor é Fraunces, o delta é mono. */
.kpis{display:grid;grid-template-columns:repeat(3,1fr);border-top:var(--fio-2);
  border-bottom:var(--fio-2);margin-bottom:var(--sp-5)}
.kpis.k2{grid-template-columns:repeat(2,1fr)}
.kpis.k4{grid-template-columns:repeat(4,1fr)}
.kpis.k5{grid-template-columns:repeat(5,1fr)}
.kpi{padding:13px 18px 15px;border-right:var(--fio)}
.kpi:last-child{border-right:none}
.kpi-label{font-family:var(--fonte-mono);font-size:var(--fs-rotulo);letter-spacing:var(--ls-rotulo);
  text-transform:uppercase;color:var(--ink-3);margin-bottom:7px}
.kpi-val{font-family:var(--fonte-display);font-size:var(--fs-kpi);font-weight:400;
  letter-spacing:-.03em;line-height:.9}
.kpi-val small{font-family:var(--fonte-corpo);font-size:12px;font-weight:500;color:var(--ink-3);
  margin-left:4px;letter-spacing:0}
.kpi-note{font-size:11.5px;color:var(--ink-2);margin-top:8px;line-height:1.45}
.kpi-delta{font-family:var(--fonte-mono);font-size:var(--fs-num);font-weight:600;margin-left:7px}
.kpi.destacado{background:var(--accent-soft)}
.kpi.destacado .kpi-label{color:var(--accent-ink)}

/* direção: sobe/desce é semântica, não decoração */
.bom,.delta-pos,.mc-pos,.kpi-delta.bom{color:var(--ok)}
.ruim,.delta-neg,.mc-neg,.kpi-delta.ruim{color:var(--risco)}
.neutro{color:var(--ink-3)}

/* chips e etiquetas */
/* vertical-align: sem isso o chip alinha pela BASELINE e o padding vertical
   empurra o texto vizinho — num "chip + frase" o texto sai afundado. */
.chip{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.08em;padding:3px 7px;
  border:1px solid;white-space:nowrap;display:inline-block;vertical-align:middle}

/* Chip que ABRE uma frase de nota (MC NEGATIVA, PARCIAL, REVISAR...). O chip
   fica ancorado na primeira linha e o texto que quebra INDENTA em vez de
   passar por baixo dele. Use uma <p class="nota-chip"> por aviso. */
.nota-chip{display:grid;grid-template-columns:auto 1fr;gap:0 8px;align-items:start;
  font-family:var(--fonte-corpo);font-size:12px;line-height:1.55;color:var(--ink-2);margin:0}
.nota-chip + .nota-chip{margin-top:6px}
.nota-chip > .chip{margin-top:1px}
.chip.ok{color:var(--ok);border-color:var(--ok)}
.chip.aviso{color:var(--aviso);border-color:var(--aviso)}
.chip.risco{color:var(--risco);border-color:var(--risco)}
.chip.grave{color:#fff;border-color:var(--risco);background:var(--risco)}
body.escuro .chip.grave{color:#191014}
.chip.acc{color:var(--accent-ink);border-color:var(--accent);background:var(--accent-soft)}
.chip.mudo{color:var(--ink-3);border-color:var(--rule-2)}
/* etiqueta de família: tinta sutil, texto escuro da mesma família de cor */
.tag-fam{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.08em;
  text-transform:uppercase;padding:2px 6px;white-space:nowrap;display:inline-block;
  background:var(--fam-8-bg);color:var(--fam-8-tx);border:1px solid transparent}
.tag-fam.f1{background:var(--fam-1-bg);color:var(--fam-1-tx)}
.tag-fam.f2{background:var(--fam-2-bg);color:var(--fam-2-tx)}
.tag-fam.f3{background:var(--fam-3-bg);color:var(--fam-3-tx)}
.tag-fam.f4{background:var(--fam-4-bg);color:var(--fam-4-tx)}
.tag-fam.f5{background:var(--fam-5-bg);color:var(--fam-5-tx)}
.tag-fam.f6{background:var(--fam-6-bg);color:var(--fam-6-tx)}
.tag-fam.f7{background:var(--fam-7-bg);color:var(--fam-7-tx)}
.tag-fam.f8{background:var(--fam-8-bg);color:var(--fam-8-tx)}

/* escolhe-colunas: quais colunas a tabela mostra */
.colunas{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 var(--sp-3)}
.colunas>b{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:var(--ls-rotulo);
  text-transform:uppercase;color:var(--ink-3);font-weight:400;margin-right:4px}
.col-t{white-space:nowrap;font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.1em;
  text-transform:uppercase;border:1px solid var(--rule-2);background:var(--card);
  color:var(--ink-3);padding:4px 8px;cursor:pointer;user-select:none}
.col-t:hover{border-color:var(--ink-3);color:var(--ink)}
.col-t.on{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.led td .cod{font-family:var(--fonte-mono);font-size:var(--fs-num);color:var(--ink-3)}

.tags{display:flex;flex-wrap:wrap;gap:7px;margin:var(--sp-2) 0}
.tag{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.14em;
  text-transform:uppercase;border:1px solid var(--rule-2);padding:5px 10px;color:var(--ink-2)}
.tag.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.tag.acc{background:var(--accent);color:var(--accent-on);border-color:var(--accent)}

/* GRUPO — o bloco cercado que carrega uma entidade (pilar, filial, cliente,
   fase, projeto). É o container genérico: cabeça + régua de KPI + conteúdo. */
.grupo{border:var(--fio-2);margin-bottom:var(--sp-5);background:var(--card)}
.grupo-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-3);
  padding:13px 18px;border-bottom:var(--fio);flex-wrap:wrap}
.grupo-head h2{font-size:21px}
.grupo-kpis{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:var(--fio)}
.gk{padding:11px 18px;border-right:var(--fio)}
.gk:last-child{border-right:none}
.gk-l{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-3);margin-bottom:5px}
.gk-v{font-family:var(--fonte-display);font-size:var(--fs-kpi-2);letter-spacing:-.02em;line-height:1}
.gk-v small{font-family:var(--fonte-corpo);font-size:11px;color:var(--ink-3);margin-left:3px}
.gk-v.menor{font-size:18px;padding-top:4px}
.gk-n{font-family:var(--fonte-mono);font-size:var(--fs-meta);margin-top:4px;color:var(--ink-2)}
.grupo-corpo{padding:6px 18px 14px}
.grupo-nota{padding:11px 18px;border-bottom:var(--fio)}

/* LINHA DO TEMPO — marcos datados */
.tempo{border-left:2px solid var(--ink);margin:var(--sp-2) 0 var(--sp-2) 5px;max-width:64ch}
.tp{position:relative;padding:0 0 22px 26px}
.tp:last-child{padding-bottom:0}
.tp::before{content:"";position:absolute;left:-8px;top:3px;width:12px;height:12px;
  border:2px solid var(--ink);background:var(--paper);border-radius:50%}
.tp.feito::before{background:var(--accent);border-color:var(--accent)}
.tp.agora::before{background:var(--paper);border-color:var(--accent);
  box-shadow:0 0 0 3px var(--accent-soft)}
.tp-data{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.14em;
  text-transform:uppercase;color:var(--ink-3);margin-bottom:2px}
.tp.agora .tp-data{color:var(--accent)}
.tp-t{font-family:var(--fonte-display);font-size:18px;font-weight:500;line-height:1.15}
.tp-c{font-size:12.5px;color:var(--ink-2);margin-top:3px;max-width:56ch}

/* PASSOS numerados — método, sequência de apuração, rito de fechamento */
.passos{display:grid;border-top:var(--fio-2)}
.passo{display:grid;grid-template-columns:auto 1fr;gap:22px;padding:18px 0;
  border-bottom:var(--fio);align-items:start}
.passo-n{font-family:var(--fonte-display);font-size:38px;font-weight:300;line-height:.8;
  color:var(--accent);letter-spacing:-.02em;min-width:46px}
.passo h3{margin-bottom:3px}
.passo p{font-size:12.5px;color:var(--ink-2);max-width:62ch}

/* GLOSSÁRIO — o que cada métrica quer dizer. Todo report que usa sigla precisa. */
.glossario{border-top:var(--fio)}
.gl{display:grid;grid-template-columns:190px 1fr;gap:26px;padding:12px 0;border-bottom:var(--fio)}
.gl-t{font-family:var(--fonte-display);font-size:16px;font-weight:500;letter-spacing:-.01em}
.gl-t small{display:block;font-family:var(--fonte-mono);font-size:var(--fs-nota);font-weight:400;
  letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-top:3px}
.gl-d{font-size:12.5px;color:var(--ink-2);max-width:64ch;align-self:center}
.gl-d b{color:var(--ink)}

/* PERGUNTAS — objeção antecipada (usado em memo de decisão) */
.qa{border-top:var(--fio-2)}
.qa-i{padding:18px 0;border-bottom:var(--fio)}
.qa-q,.qa-a{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:start}
.qa-a{margin-top:10px}
.qa-b{font-family:var(--fonte-mono);font-size:var(--fs-num);font-weight:600;width:24px;height:24px;
  border:1.5px solid var(--ink);display:grid;place-items:center;color:var(--ink)}
.qa-a .qa-b{border-color:var(--accent);color:var(--accent)}
.qa-q h3{align-self:center}
.qa-a p{font-size:13px;color:var(--ink-2);max-width:66ch}

/* ANTES / DEPOIS */
.split{display:grid;grid-template-columns:1fr 1fr;border:var(--fio-2)}
.split-c{padding:20px 22px}
.split-c+.split-c{border-left:var(--fio)}
.split-c.velho{background:var(--paper-2)}
.split-tag{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.18em;
  text-transform:uppercase;margin-bottom:11px;display:flex;align-items:center;gap:7px;
  color:var(--ink-3)}
.split-c.novo .split-tag{color:var(--ok)}
.split-tag::before{content:"";width:16px;height:1.5px;background:currentColor}
.split-c h3{font-size:19px;font-weight:400;margin-bottom:9px}
.split-c ul{list-style:none}
.split-c li{font-size:12.5px;color:var(--ink-2);padding:6px 0 6px 16px;position:relative;
  border-bottom:var(--fio-pont)}
.split-c li:last-child{border-bottom:none}
.split-c li::before{content:"–";position:absolute;left:0;color:var(--ink-3)}
.split-c.novo li::before{content:"+";color:var(--ok);font-weight:600}

/* mini-tab DENSA: ranking lado a lado com um barchart de mesma contagem —
   linhas mais apertadas pra fig-dupla nao ficar assimetrica */
.mini-tab.densa td{padding:2px 8px 2px 0}
.mini-tab.densa td.v{font-size:14px}
.mini-tab.densa td.b i{height:5px}

/* ==== css/graficos.css ==== */
/* --- GRÁFICOS -------------------------------------------------------------
   Regra: o gráfico é uma FIGURA numerada dentro de .fig, com legenda mono no
   topo (fig. NN · o que é · unidade). Nunca uma biblioteca. Nunca gradiente.
   O valor aparece sempre como texto ao lado da forma — nunca só na largura.
   Série 1 = indigo. Séries seguintes = grafite e semáforo (--serie-2..6).
   ------------------------------------------------------------------------- */
.fig{border:var(--fio);background:var(--card);padding:16px 18px 13px;margin-bottom:var(--sp-4)}
.fig-tag{font-family:var(--fonte-mono);font-size:var(--fs-rotulo);letter-spacing:var(--ls-rotulo);
  text-transform:uppercase;color:var(--accent);margin-bottom:12px;display:flex;
  justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;align-items:baseline}
.dica-fig,.nota-fig{font-family:var(--fonte-mono);font-size:var(--fs-nota);color:var(--ink-3);
  letter-spacing:.06em;text-transform:none}
.fig-dupla{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4)}

/* legenda de séries */
.legenda{display:flex;flex-wrap:wrap;gap:var(--sp-4);margin-top:11px;padding-top:8px;
  border-top:var(--fio)}
.lg{display:flex;align-items:center;gap:6px;font-family:var(--fonte-mono);font-size:var(--fs-nota);
  letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);white-space:nowrap}
.lg i{width:11px;height:11px;background:var(--serie-1);display:block}
.lg.s2 i{background:var(--serie-2)} .lg.s3 i{background:var(--serie-3)}
.lg.s4 i{background:var(--serie-4)} .lg.s5 i{background:var(--serie-5)}
.lg.s6 i{background:var(--serie-6)}
.lg.tracejado i{background:none;border-top:2px dashed var(--ink-3);height:0}

/* 1 · BARRAS horizontais — ranking, top N, composição */
.barchart{display:grid;gap:8px}
.bar-row{display:grid;grid-template-columns:190px 1fr 62px;gap:13px;align-items:center}
.bar-row.largo{grid-template-columns:240px 1fr 74px}
.bar-label{font-family:var(--fonte-display);font-size:13.5px;line-height:1.1}
.bar-label.b2{font-size:12px}
.bar-label small{display:block;font-family:var(--fonte-mono);font-size:var(--fs-nota);
  color:var(--ink-3)}
.bar-track{height:15px;background:var(--paper-2);border:var(--fio);overflow:hidden;position:relative}
.bar-track.alto{height:20px}
.bar-fill{display:block;height:100%;background:var(--serie-1);
  transition:width .5s var(--ease)}
.bar-fill.s2{background:var(--serie-2)} .bar-fill.s3,.bar-fill.moss{background:var(--serie-3)}
.bar-fill.s4{background:var(--serie-4)} .bar-fill.risco{background:var(--risco)}
.bar-fill.muted{background:var(--rule-2)}
.bar-fill.raiado{background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.28) 0 3px,transparent 3px 7px)}
.bar-val{font-family:var(--fonte-mono);font-size:var(--fs-num);color:var(--ink-2);text-align:right}
.bar-val b{color:var(--ink);font-weight:600}
.bar-axis{display:flex;justify-content:space-between;font-family:var(--fonte-mono);
  font-size:var(--fs-nota);color:var(--ink-3);letter-spacing:.06em;margin-top:11px;
  border-top:var(--fio);padding-top:5px;white-space:nowrap;gap:8px}
.bar-row.clicavel{cursor:pointer;margin:0 -8px;padding:0 8px}
.bar-row.clicavel:hover{background:var(--paper-2)}
.bar-row.ativa{background:var(--accent-soft)}
/* preço e outras medidas de faixa: posição numa escala local, nunca barra desde zero */
.faixas{display:grid;gap:10px}
.faixa-row{display:grid;grid-template-columns:190px 1fr 86px;gap:13px;align-items:center}
.faixa-label{font-family:var(--fonte-display);font-size:13.5px;line-height:1.1}
.faixa-track{position:relative;height:18px;border-top:1px solid var(--rule-2);border-bottom:1px solid var(--rule-2)}
.faixa-track::before,.faixa-track::after{content:"";position:absolute;top:-3px;bottom:-3px;width:1px;background:var(--rule-2)}
.faixa-track::before{left:0}.faixa-track::after{right:0}
.faixa-ponto{position:absolute;top:50%;width:9px;height:9px;margin:-4.5px 0 0 -4.5px;
  border-radius:50%;background:var(--card);border:2px solid var(--serie-1);z-index:1}
.faixa-val{font-family:var(--fonte-mono);font-size:var(--fs-num);text-align:right;color:var(--ink)}
.faixa-eixo{display:flex;justify-content:space-between;margin:2px 99px 0 203px;
  font-family:var(--fonte-mono);font-size:8.5px;color:var(--ink-3);letter-spacing:.08em}
/* barra empilhada: vários .bar-fill dentro do mesmo track */
.bar-track.pilha{display:flex}
.bar-track.pilha .bar-fill{height:100%}
/* marcador de alvo/meta dentro do track */
.bar-alvo{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink);z-index:2}

/* 2 · TRILHO com alvo — escoamento, atingimento de meta, ocupação */
.trilho-bloco{padding:11px 0}
.trilho{position:relative;height:20px;background:var(--paper-2);border:var(--fio);margin-top:17px}
.trilho-fill{position:absolute;left:0;top:0;bottom:0;background:var(--accent);
  transition:width .5s var(--ease)}
.trilho-fill.ok{background:var(--ok)} .trilho-fill.risco{background:var(--risco)}
.trilho-alvo{position:absolute;top:-5px;bottom:-5px;width:2.5px;background:var(--ink)}
.trilho-alvo::after{content:attr(data-rot);position:absolute;top:-14px;left:-10px;
  font-family:var(--fonte-mono);font-size:8.5px;color:var(--ink-3);white-space:nowrap}
/* compat com reports antigos */
.esc{padding:11px 18px;border-bottom:var(--fio)}
.esc-track{position:relative;height:20px;background:var(--paper-2);border:var(--fio);margin-top:17px}
.esc-fill{position:absolute;left:0;top:0;bottom:0;background:var(--accent);
  transition:width .5s var(--ease)}
.esc-target{position:absolute;top:-5px;bottom:-5px;width:2.5px;background:var(--ink)}
.esc-target::after{content:"alvo";position:absolute;top:-15px;left:-12px;
  font-family:var(--fonte-mono);font-size:8.5px;color:var(--ink-3)}

/* 3 · SÉRIE TEMPORAL — SVG desenhado pelo toolkit (serie(), area(), banda()) */
.quadro{display:block;width:100%}
.serie{display:block;overflow:visible}
.serie .grade{stroke:var(--rule);stroke-width:1;shape-rendering:crispEdges}
.serie .grade-zero{stroke:var(--rule-2);stroke-width:1;shape-rendering:crispEdges}
.serie .eixo{font-family:var(--fonte-mono);font-size:9.5px;fill:var(--ink-3);letter-spacing:.1em;
  text-transform:uppercase}
.serie .alvo-t{fill:var(--ink-3)}
.serie .linha-1{stroke:var(--serie-1);stroke-width:1.75;fill:none;stroke-linejoin:round;
  stroke-linecap:round}
.serie .linha-2{stroke:var(--ink-3);stroke-width:1.15;fill:none;stroke-dasharray:4 3.5;opacity:.9}
.serie .linha-3{stroke:var(--serie-3);stroke-width:1.25;fill:none}
.serie .area-1{fill:var(--accent-soft);opacity:.55}
.serie .ponto{fill:var(--card);stroke:var(--serie-1);stroke-width:2}
.serie .marca{fill:var(--serie-1);opacity:.55}
.serie .rotulo{font-family:var(--fonte-mono);font-size:10px;fill:var(--ink-2)}
.serie .rotulo.forte{fill:var(--ink);font-weight:600;font-size:10.5px}
.serie .alvo{stroke:var(--ink-3);stroke-width:1;stroke-dasharray:5 4}
.serie .conector{stroke:var(--rule-2);stroke-width:1;stroke-dasharray:2 2.5}
.serie .barra{fill:var(--serie-1)}
.serie .barra-2{fill:var(--serie-2)}
.serie .barra-neg{fill:var(--risco)}
.serie .barra-ok{fill:var(--ok)}
.serie .conector{stroke:var(--ink-3);stroke-width:1;stroke-dasharray:2 2}
.serie .alvo{stroke:var(--ink);stroke-width:1.5;stroke-dasharray:5 3}
/* série N (op.series), projeção (op.corte), banda (op.banda), marcos, cursor */
.serie .linha{fill:none;stroke-width:1.4;stroke-linejoin:round;stroke-linecap:round}
.serie .linha-s1{stroke:var(--serie-1);stroke-width:1.75}
.serie .linha-s2{stroke:var(--serie-2)} .serie .linha-s3{stroke:var(--serie-3)}
.serie .linha-s4{stroke:var(--serie-4)} .serie .linha-s5{stroke:var(--serie-5)}
.serie .linha-s6{stroke:var(--serie-6)}
.serie .area{opacity:.16}
.serie .area-s2{fill:var(--serie-2)} .serie .area-s3{fill:var(--serie-3)}
.serie .area-s4{fill:var(--serie-4)} .serie .area-s5{fill:var(--serie-5)}
.serie .area-s6{fill:var(--serie-6)}
.serie .linha.proj,.serie .linha-2.proj{stroke-dasharray:5 4;opacity:.85}
.serie .area-1.proj{opacity:.22}
.serie .area.proj{opacity:.08}
.serie .banda{fill:var(--serie-1);opacity:.10}
.serie .corte-l,.serie .marco{stroke:var(--rule-2);stroke-width:1;stroke-dasharray:2 3;
  shape-rendering:crispEdges}
.serie .marco-t{font-family:var(--fonte-mono);font-size:8.5px;fill:var(--ink-3);
  letter-spacing:.1em;text-transform:uppercase}
.serie .cursor-x{stroke:var(--ink-3);stroke-width:1;stroke-dasharray:2 2;visibility:hidden}
/* legenda de série do quadro: chips clicáveis, chip apagado = série desligada */
.legenda-serie{margin:0 0 8px;padding:0;border-top:none;gap:var(--sp-3) var(--sp-4)}
.legenda-serie .lg[data-sk]{cursor:pointer}
.legenda-serie .lg[data-sk]:hover{color:var(--ink)}
.legenda-serie .lg.off{opacity:.32;text-decoration:line-through}
.legenda-serie .lg.lg-banda i{background:var(--serie-1);opacity:.22}
.legenda-serie .lg.lg-proj i{background:none;border-top:2px dashed var(--ink-3);height:0}
/* leitura no cursor: caixa fixa, mono, herda tema; nunca no print */
.td-dica{position:fixed;z-index:70;pointer-events:none;display:none;background:var(--card);
  border:var(--fio-2);padding:7px 10px 8px;font-family:var(--fonte-mono);font-size:10.5px;
  color:var(--ink);min-width:130px;max-width:240px}
.td-dica .dx{font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);
  margin-bottom:5px;white-space:nowrap}
.td-dica .dl{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:1.5px 0}
.td-dica .dl b{font-weight:600;font-variant-numeric:tabular-nums}
.td-dica .ds{display:inline-flex;align-items:center;gap:5px;color:var(--ink-2);white-space:nowrap}
.td-dica .ds i{width:8px;height:8px;display:block;background:var(--serie-1)}
.td-dica .ds.s2 i{background:var(--serie-2)} .td-dica .ds.s3 i{background:var(--serie-3)}
.td-dica .ds.s4 i{background:var(--serie-4)} .td-dica .ds.s5 i{background:var(--serie-5)}
.td-dica .ds.s6 i{background:var(--serie-6)}
.td-dica .ds.mudo i{background:var(--rule-2)}
@media print{.td-dica,.serie .cursor-x{display:none !important}}
.spark{display:block;margin-top:7px}

/* 4 · ROSCA / donut — participação. Máx 6 fatias + "outros". */
.rosca-wrap{display:grid;grid-template-columns:auto 1fr;gap:var(--sp-5);align-items:center}
.rosca{display:block;overflow:visible}
.rosca.isolando .fatia{opacity:.28}
.rosca.isolando .fatia.viva{opacity:1}
.rosca-centro{font-family:var(--fonte-display);font-size:20px;fill:var(--ink)}
.rosca-centro-l{font-family:var(--fonte-mono);font-size:8.5px;fill:var(--ink-3);letter-spacing:.14em}
.rosca-legenda{display:grid;gap:5px}
.rl{display:grid;grid-template-columns:11px 1fr auto auto;gap:9px;align-items:center;
  font-size:12px;padding:3px 0;border-bottom:var(--fio-pont)}
.rl:last-child{border-bottom:none}
.rl[data-k]{cursor:pointer;margin:0 -6px;padding:3px 6px}
.rl[data-k]:hover{background:var(--paper-2)}
.rl.ativa{background:var(--accent-soft)}
.rl i{width:11px;height:11px;display:block}
.rl span{font-family:var(--fonte-display);font-size:13px;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap}
.rl b{font-family:var(--fonte-mono);font-size:var(--fs-num);font-weight:500;color:var(--ink)}
.rl small{font-family:var(--fonte-mono);font-size:var(--fs-nota);color:var(--ink-3);min-width:38px;
  text-align:right}

/* 5 · TREEMAP / MAPA DE CALOR — área = tamanho, cor = intensidade */
.mapa{position:relative;width:100%;border:var(--fio);background:var(--paper-2);overflow:hidden}
.mapa-cel{position:absolute;border-right:1px solid var(--paper);border-bottom:1px solid var(--paper);
  padding:6px 7px;overflow:hidden;cursor:pointer;transition:outline-color .15s;
  outline:2px solid transparent;outline-offset:-2px}
.mapa-cel:hover{outline-color:var(--ink)}
.mapa-cel.ativa{outline-color:var(--accent)}
.mapa-cel b{font-family:var(--fonte-display);font-size:12px;font-weight:500;display:block;
  line-height:1.1}
.mapa-cel small{font-family:var(--fonte-mono);font-size:var(--fs-nota);opacity:.8;display:block;
  margin-top:2px}
.mapa-cel.claro{color:var(--ink)} .mapa-cel.escuro{color:#F2F2EE}
.mapa-cel.c0{background:var(--calor-0)} .mapa-cel.c1{background:var(--calor-1)}
.mapa-cel.c2{background:var(--calor-2)} .mapa-cel.c3{background:var(--calor-3)}
.mapa-cel.c4{background:var(--calor-4)} .mapa-cel.c5{background:var(--calor-5)}
.escala{display:flex;align-items:center;gap:7px;margin-top:9px;font-family:var(--fonte-mono);
  font-size:var(--fs-nota);color:var(--ink-3);letter-spacing:.08em;white-space:nowrap}
.fig-tag .dica-fig{white-space:nowrap}
.escala i{width:26px;height:9px;display:block}

/* 6 · MATRIZ DE PONTOS — comparação qualitativa entre opções/critérios */
table.matriz{width:100%;border-collapse:collapse}
.matriz th{font-family:var(--fonte-mono);font-size:var(--fs-rotulo);letter-spacing:.1em;
  text-transform:uppercase;padding:9px 10px;border-bottom:var(--fio-2);color:var(--ink-2);
  text-align:center}
.matriz th:first-child{text-align:left}
.matriz td{padding:9px 10px;border-bottom:var(--fio);text-align:center;font-size:12.5px}
.matriz td:first-child{text-align:left;font-family:var(--fonte-display);font-size:14px;
  color:var(--ink)}
.ponto{display:inline-block;width:12px;height:12px;border:1.5px solid var(--ink);border-radius:50%}
.ponto.cheio{background:var(--accent);border-color:var(--accent)}
.ponto.meio{background:linear-gradient(90deg,var(--accent) 50%,transparent 50%)}

/* 7 · BULLET / comparação contra referência (real vs meta vs ano anterior) */
.bullet{display:grid;grid-template-columns:150px 1fr 96px;gap:13px;align-items:center;
  padding:5px 0;border-bottom:var(--fio-pont)}
.bullet:last-child{border-bottom:none}
.bullet-t{font-family:var(--fonte-display);font-size:13px}
.bullet-tr{position:relative;height:16px;background:var(--paper-2);border:var(--fio)}
.bullet-ref{position:absolute;top:0;bottom:0;background:var(--rule-2);opacity:.55}
.bullet-v{position:absolute;top:3px;bottom:3px;background:var(--accent)}
.bullet-m{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink)}
.bullet-n{font-family:var(--fonte-mono);font-size:var(--fs-num);text-align:right;color:var(--ink-2)}

/* 8 · MINIGRÁFICOS — tamanho de ícone, moram dentro de célula e de rótulo
   Regra: minigráfico nunca carrega o número sozinho. O valor fica ao lado,
   em texto mono. Sem eixo, sem legenda, sem tooltip obrigatório.          */
.mini{display:inline-block;vertical-align:-3px;flex-shrink:0}
.mini-rosca .trilho{stroke:var(--paper-2)}
.mini-rosca .arco{stroke:var(--accent)}
.mini-rosca.ok .arco{stroke:var(--ok)} .mini-rosca.risco .arco{stroke:var(--risco)}
.mini-rosca.aviso .arco{stroke:var(--aviso)} .mini-rosca.mudo .arco{stroke:var(--ink-3)}
body.escuro .mini-rosca .trilho{stroke:var(--rule)}
body.escuro .mini-pontos>i{border-color:var(--rule-2)}
.mini-gauge .trilho{stroke:var(--paper-2);stroke-linecap:butt}
body.escuro .mini-gauge .trilho{stroke:var(--rule)}
.mini-gauge .arco{stroke:var(--accent);stroke-linecap:butt}
.mini-gauge.risco .arco{stroke:var(--risco)} .mini-gauge.ok .arco{stroke:var(--ok)}
.mini-colunas .pos{fill:var(--accent)} .mini-colunas .neg{fill:var(--risco)}
.mini-colunas.mudo .pos{fill:var(--ink-3)}
.mini-linha polyline{fill:none;stroke:var(--accent);stroke-width:1.6}
.mini-linha.ok polyline{stroke:var(--ok)} .mini-linha.risco polyline{stroke:var(--risco)}
.mini-linha.mudo polyline{stroke:var(--ink-3)}
.mini-trilho{position:relative;height:7px;background:var(--paper-2);border:1px solid var(--rule);
  display:inline-block;vertical-align:0}
.mini-trilho>i{position:absolute;left:0;top:0;bottom:0;background:var(--accent);
  transition:width var(--mv-medio,.5s) var(--mv-curva,ease)}
.mini-trilho.ok>i{background:var(--ok)} .mini-trilho.risco>i{background:var(--risco)}
.mini-trilho>b{position:absolute;top:-2px;bottom:-2px;width:1.5px;background:var(--ink)}
.mini-pilha{position:relative;height:7px;display:inline-flex;border:1px solid var(--rule);
  vertical-align:0;overflow:hidden}
.mini-pilha>i{height:100%;display:block}
.mini-pontos{display:inline-flex;gap:2px;vertical-align:1px}
.mini-pontos>i{width:5px;height:5px;border:1px solid var(--rule-2);display:block;border-radius:50%}
.mini-pontos>i.on{background:var(--accent);border-color:var(--accent)}
.mini-delta{font-family:var(--fonte-mono);font-size:var(--fs-nota);font-weight:600;white-space:nowrap}
.mini-delta.bom{color:var(--ok)} .mini-delta.ruim{color:var(--risco)}
/* combinação canônica: minigráfico + número, alinhados na linha da tabela */
.mn{display:inline-flex;align-items:center;gap:6px;font-family:var(--fonte-mono);
  font-size:var(--fs-num);color:var(--ink-2)}
.mn b{font-weight:500;color:var(--ink)}

/* 9 · ASCII / diagrama de arquitetura */
.ascii{font-family:var(--fonte-mono);font-size:11.5px;line-height:1.55;color:var(--ink-2);
  background:var(--paper-2);border:var(--fio);padding:16px 18px;overflow-x:auto;white-space:pre}

/* --- mapa coropletico por UF (TD.mapaUf) ------------------------------
   Geografia de verdade, nao treemap: responde ONDE, nao so quanto. Cor pela
   rampa de calor do acento; UF sem venda fica neutra e fora da escala. */
.mapa-uf{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(120px,150px);gap:12px;align-items:start}
.mapa-uf svg{width:100%;max-width:100%;height:var(--mapa-h,460px);display:block}
.mapa-uf .uf{fill:var(--calor-0);stroke:var(--paper);stroke-width:1.2;transition:fill .22s var(--mv-curva)}
.mapa-uf .uf.sem{fill:var(--paper-2);stroke:rgba(20,20,20,.28);stroke-width:1}
/* UF sem venda precisa de CONTORNO visivel: com fill --paper-2 sobre papel
   --paper a diferenca e ~7% e o pais some da pagina (medido 20/08 no
   relatorio de arames: a secao inteira foi lida como espaco em branco). */
.mapa-uf .uf.p0{fill:var(--calor-0)} .mapa-uf .uf.p1{fill:var(--calor-1)}
.mapa-uf .uf.p2{fill:var(--calor-2)} .mapa-uf .uf.p3{fill:var(--calor-3)}
.mapa-uf .uf.p4{fill:var(--calor-4)} .mapa-uf .uf.p5{fill:var(--calor-5)}
.mapa-uf .uf[onclick]{cursor:pointer}
.mapa-uf .uf[onclick]:hover,.mapa-uf .uf:focus-visible{stroke:var(--ink);stroke-width:2;outline:none}
.mapa-uf .uf.ativa{stroke:var(--ink);stroke-width:2.5}
.mapa-uf .rot text{font-family:var(--fonte-mono);fill:var(--ink);pointer-events:none}
.mapa-uf .rot .sig{font-size:19px;font-weight:600;letter-spacing:.06em}
.mapa-uf .rot .v1{font-size:17px;font-variant-numeric:tabular-nums}
.mapa-uf .rot .v2{font-size:15px;font-variant-numeric:tabular-nums;opacity:.85}
.mapa-uf .rot.claro text{fill:var(--paper)}
.mapa-uf .mapa-fora{list-style:none;margin:0;padding:0;min-width:132px;border-left:var(--fio) solid var(--rule)}
.mapa-uf .mapa-fora li{padding:3px 0 3px 10px;font-family:var(--fonte-mono);font-size:var(--fs-nota,10px)}
.mapa-uf .mapa-uf-linha{display:flex;justify-content:space-between;gap:8px}
.mapa-uf .mapa-fora b{font-weight:600;letter-spacing:.06em}
.mapa-uf .mapa-fora span{font-variant-numeric:tabular-nums;opacity:.8}
.mapa-uf .mapa-fora small{display:block;margin-top:5px;font:400 9px/1.45 var(--fonte-mono);color:var(--ink-3)}
.mapa-uf.editorial{grid-template-columns:minmax(0,1fr) minmax(300px,360px);gap:18px}
.mapa-uf .mapa-uf-painel{min-width:0}
.mapa-uf.editorial .mapa-fora{min-width:0}
.mapa-uf.editorial .mapa-fora li.principal{padding:9px 10px 10px 12px;border-left:3px solid var(--accent);background:var(--accent-soft);margin-bottom:7px}
.mapa-uf.editorial .mapa-fora li.principal b{color:var(--accent)}
.mapa-uf .mapa-uf-rota{margin:9px 0 0 10px;padding:9px 10px;border-top:var(--fio) solid var(--rule);font:400 9px/1.45 var(--fonte-mono);color:var(--ink-3)}
.mapa-uf .mapa-uf-rota b{display:block;margin-bottom:3px;color:var(--accent);font-weight:600;letter-spacing:.1em;text-transform:uppercase}
.mapa-uf .mapa-uf-rota span{display:block}
.mapa-uf .mapa-escala{grid-column:1/-1;display:flex;align-items:center;gap:3px;font-family:var(--fonte-mono);font-size:var(--fs-nota,10px);opacity:.75}
.mapa-uf .mapa-escala i{width:26px;height:9px;display:inline-block}
.mapa-uf .mapa-escala span:first-child{margin-right:5px}
.mapa-uf .mapa-escala span:last-child{margin-left:5px}
.mapa-uf .mapa-escala .p0{background:var(--calor-0)} .mapa-uf .mapa-escala .p1{background:var(--calor-1)}
.mapa-uf .mapa-escala .p2{background:var(--calor-2)} .mapa-uf .mapa-escala .p3{background:var(--calor-3)}
.mapa-uf .mapa-escala .p4{background:var(--calor-4)} .mapa-uf .mapa-escala .p5{background:var(--calor-5)}
@media (max-width:780px){
  .mapa-uf,.mapa-uf.editorial{grid-template-columns:1fr}
  .mapa-uf svg{height:min(var(--mapa-h,460px),360px)}
  .mapa-uf .mapa-fora{border-left:0;border-top:var(--fio) solid var(--rule);padding-top:6px;
    display:grid;grid-template-columns:repeat(2,1fr);gap:0 12px}
  .mapa-uf.editorial .mapa-fora{display:block}
  .mapa-uf .mapa-uf-rota{margin-left:0}
  .mapa-uf .rot .v2{display:none}
}

/* --- mapa MUNDI por pais (TD.mapaMundo) -------------------------------
   Irmao do coropletico por UF: responde DE ONDE (origem de compra,
   exposicao por pais). Rampa do acento (p0..p5) ou de FOGO (f0..f5) para
   custo/saida; pais sem dado fica neutro; destino marcado sem heat. */
.mapa-mundo{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,200px);gap:12px;align-items:start}
.mapa-mundo svg{width:100%;max-width:100%;height:var(--mapa-h,430px);display:block;
  background:var(--paper-2);border:var(--fio)}
.mapa-mundo .pais{fill:var(--paper);stroke:var(--rule);stroke-width:.5;
  transition:fill .22s var(--mv-curva)}
.mapa-mundo .pais.sem{fill:var(--paper)}
.mapa-mundo .pais.destino{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1}
.mapa-mundo .pais.p0{fill:var(--calor-0)} .mapa-mundo .pais.p1{fill:var(--calor-1)}
.mapa-mundo .pais.p2{fill:var(--calor-2)} .mapa-mundo .pais.p3{fill:var(--calor-3)}
.mapa-mundo .pais.p4{fill:var(--calor-4)} .mapa-mundo .pais.p5{fill:var(--calor-5)}
.mapa-mundo .pais.f0{fill:var(--fogo-0)} .mapa-mundo .pais.f1{fill:var(--fogo-1)}
.mapa-mundo .pais.f2{fill:var(--fogo-2)} .mapa-mundo .pais.f3{fill:var(--fogo-3)}
.mapa-mundo .pais.f4{fill:var(--fogo-4)} .mapa-mundo .pais.f5{fill:var(--fogo-5)}
.mapa-mundo .pais[onclick]{cursor:pointer}
.mapa-mundo .pais[onclick]:hover,.mapa-mundo .pais:focus-visible{stroke:var(--ink);stroke-width:1.5;outline:none}
.mapa-mundo .pais.ativa{stroke:var(--ink);stroke-width:2}
.mapa-mundo .rot text{font-family:var(--fonte-mono);fill:var(--ink);pointer-events:none}
.mapa-mundo .rot .sig{font-size:12px;font-weight:600;letter-spacing:.06em}
.mapa-mundo .rot .v1{font-size:11px;font-variant-numeric:tabular-nums}
.mapa-mundo .rot .v2{font-size:10px;font-variant-numeric:tabular-nums;opacity:.85}
.mapa-mundo .rot.claro text{fill:var(--paper)}
.mapa-mundo .rot.destino-rot .sig{font-size:9px;font-weight:400;letter-spacing:.22em;fill:var(--ink-3)}
.mapa-mundo .mapa-fora{list-style:none;margin:0;padding:0;min-width:150px;border-left:var(--fio) solid var(--rule)}
.mapa-mundo .mapa-fora li{padding:5px 0 5px 10px;font-family:var(--fonte-mono);font-size:var(--fs-nota,10px)}
.mapa-mundo .mapa-fora b{font-weight:600;letter-spacing:.04em;display:block}
.mapa-mundo .mapa-fora span{display:block;font-variant-numeric:tabular-nums;opacity:.8}
/* painel explicativo (lista:'todas'): coluna mais larga porque cada item leva
   uma 2a linha de nota, e rolagem propria quando passa da altura do mapa */
.mapa-mundo.lista-todas{grid-template-columns:minmax(0,1fr) minmax(180px,244px)}
.mapa-mundo.lista-todas .mapa-fora{max-height:var(--mapa-h,430px);overflow-y:auto}
.mapa-mundo.lista-tabela{grid-template-columns:minmax(0,1fr) minmax(300px,340px)}
.mapa-mundo .mapa-painel{min-width:0;border-left:var(--fio) solid var(--rule)}
.mapa-mundo .mapa-tabela{width:100%;border-collapse:collapse;font-family:var(--fonte-mono);
  font-size:var(--fs-nota,10px);font-variant-numeric:tabular-nums}
.mapa-mundo .mapa-tabela th,.mapa-mundo .mapa-tabela td{padding:4px 5px;
  border-bottom:var(--fio) solid var(--rule);vertical-align:top}
.mapa-mundo .mapa-tabela thead th{font-size:8px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-3);font-weight:400;text-align:right}
.mapa-mundo .mapa-tabela thead th:first-child{text-align:left}
.mapa-mundo .mapa-tabela tbody th{text-align:left;font-weight:600;letter-spacing:.02em}
.mapa-mundo .mapa-tabela tbody td{text-align:right;white-space:nowrap}
.mapa-mundo .mapa-tabela small{display:block;margin-top:2px;font:400 8.5px/1.3 var(--fonte-mono);
  letter-spacing:0;color:var(--ink-3)}
.mapa-mundo .mapa-escala{grid-column:1/-1;display:flex;align-items:center;gap:3px;
  font-family:var(--fonte-mono);font-size:var(--fs-nota,10px);opacity:.75}
.mapa-mundo .mapa-escala i{width:26px;height:9px;display:inline-block}
.mapa-mundo .mapa-escala span:first-child{margin-right:5px}
.mapa-mundo .mapa-escala span:last-child{margin-left:5px}
.mapa-mundo .mapa-escala .p0{background:var(--calor-0)} .mapa-mundo .mapa-escala .p1{background:var(--calor-1)}
.mapa-mundo .mapa-escala .p2{background:var(--calor-2)} .mapa-mundo .mapa-escala .p3{background:var(--calor-3)}
.mapa-mundo .mapa-escala .p4{background:var(--calor-4)} .mapa-mundo .mapa-escala .p5{background:var(--calor-5)}
.mapa-mundo .mapa-escala .f0{background:var(--fogo-0)} .mapa-mundo .mapa-escala .f1{background:var(--fogo-1)}
.mapa-mundo .mapa-escala .f2{background:var(--fogo-2)} .mapa-mundo .mapa-escala .f3{background:var(--fogo-3)}
.mapa-mundo .mapa-escala .f4{background:var(--fogo-4)} .mapa-mundo .mapa-escala .f5{background:var(--fogo-5)}
@media (max-width:780px){
  .mapa-mundo,.mapa-mundo.lista-todas,.mapa-mundo.lista-tabela{grid-template-columns:1fr}
  .mapa-mundo svg{height:190px}
  .mapa-mundo .mapa-fora{border-left:0;border-top:var(--fio) solid var(--rule);padding-top:6px;
    display:grid;grid-template-columns:repeat(2,1fr);gap:0 12px}
  .mapa-mundo.lista-todas .mapa-fora{max-height:none;overflow-y:visible}
  .mapa-mundo .mapa-painel{border-left:0;border-top:var(--fio) solid var(--rule);padding-top:6px}
  .mapa-mundo .rot{display:none}
}
@media print{
  .mapa-mundo.lista-todas .mapa-fora{max-height:none;overflow:visible}
}

/* Camadas de base do mapa-mundi (malha Cloak Arena: sphere/graticule/land/borders).
   Sem estas classes o mapa continua valido, so perde o oceano e a grade. */
.mapa-mundo .esfera{fill:var(--mapa-oceano,#F0F2F1);stroke:var(--fio,#D8D8D8);stroke-width:1}
.mapa-mundo .grade{fill:none;stroke:var(--mapa-grade,#E2E6E4);stroke-width:.5;vector-effect:non-scaling-stroke}
.mapa-mundo .terra{fill:var(--mapa-terra,#E7EAE8);stroke:var(--mapa-terra-fio,#D2D8D4);stroke-width:.6}
.mapa-mundo .fronteiras{fill:none;stroke:var(--mapa-terra-fio,#D2D8D4);stroke-width:.4;vector-effect:non-scaling-stroke}
.mapa-mundo .pais.sem{fill:transparent;stroke:none}
body.escuro .mapa-mundo .esfera{fill:#0E1512;stroke:#243029}
body.escuro .mapa-mundo .grade{stroke:#1A241F}
body.escuro .mapa-mundo .terra{fill:#18211D;stroke:#2A3630}
body.escuro .mapa-mundo .fronteiras{stroke:#2A3630}

/* ==== css/tabelas.css ==== */
/* --- TABELAS --------------------------------------------------------------
   Duas tabelas no sistema:
   .led  — a tabela de trabalho: ordenável, sticky, mono, muitas linhas.
   .fam  — a tabela compacta dentro de um .grupo (poucas linhas, sem sticky).
   .ledger — a tabela de dinheiro: totais no <tfoot>, subtotal em .sub.
   Primeira coluna é Fraunces (nome). Todo número é mono e alinhado à direita.
   ------------------------------------------------------------------------- */
.tabela-wrap{max-height:640px;overflow:auto;border:var(--fio)}
.tabela-wrap.curta{max-height:340px}
.tabela-wrap.livre{max-height:none}

table.led{width:100%;border-collapse:collapse;font-size:12px;background:var(--card)}
.led thead th{position:sticky;top:0;z-index:2;font-family:var(--fonte-mono);font-size:var(--fs-rotulo);
  letter-spacing:.08em;text-transform:uppercase;text-align:right;padding:8px;
  border-bottom:var(--fio-2);background:var(--paper-2);cursor:pointer;white-space:nowrap;
  color:var(--ink-2)}
.led thead th:first-child{text-align:left}
.led thead th:hover{color:var(--accent)}
.led thead th.ord{color:var(--accent)}
.led thead th.ord::after{content:" ↓"}
.led thead th.ord.asc::after{content:" ↑"}
.led td{padding:6px 8px;border-bottom:var(--fio);text-align:right;font-family:var(--fonte-mono);
  font-size:var(--fs-num);color:var(--ink-2);vertical-align:top}
.led td:first-child{text-align:left;font-family:var(--fonte-display);font-size:13px;color:var(--ink);
  max-width:340px}
.led td small{display:block;font-family:var(--fonte-mono);font-size:var(--fs-nota);color:var(--ink-3)}
.led tbody tr:hover td{background:var(--paper-2)}
.led tbody tr.aberta td{background:var(--accent-soft)}
.led tr.detalhe td{background:var(--paper-2);padding:9px 12px 12px}
.led tr.grupo-linha td{background:var(--paper-2);font-family:var(--fonte-mono);
  font-size:var(--fs-rotulo);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);
  text-align:left}

/* micro-barra dentro da célula: contexto sem sair da linha */
td.microbar{position:relative;isolation:isolate;overflow:hidden}
td.microbar i{position:absolute;left:0;bottom:2px;top:2px;background:var(--accent-soft);z-index:0;
  border-right:2px solid var(--accent);pointer-events:none}
td.microbar b{position:relative;z-index:2;font-weight:400;display:inline-block;
  background:var(--card);padding-left:4px}
.led tbody tr:hover td.microbar b{background:var(--paper-2)}
td.microbar.neg i{background:var(--risco-soft);border-right-color:var(--risco)}

/* hierarquia financeira na .led (grade de fluxo): a NATUREZA colore a árvore.
   Grupo de entrada = verde, grupo de saída = tijolo; a filha herda o trilho
   na 1ª célula em versão soft; valor de saldo negativo carimba em tijolo. */
.led tr.nat-in>td:first-child{border-left:3px solid var(--ok)}
.led tr.nat-out>td:first-child{border-left:3px solid var(--risco)}
.led tr.filha>td:first-child{border-left-width:2px}
.led tr.nat-in.filha>td:first-child{border-left-color:var(--ok-soft)}
.led tr.nat-out.filha>td:first-child{border-left-color:var(--risco-soft)}
.led tr.gr.nat-in td:first-child{color:var(--ok)}
.led tr.gr.nat-out td:first-child{color:var(--risco)}
.led tr.gr td:first-child{font-weight:600}
/* bordas verticais opt-in: .led.colv separa as colunas com fio fino */
.led.colv th+th,.led.colv td+td{border-left:1px solid var(--rule)}
.led td.vpos{color:var(--ok);font-weight:600}
.led td.vneg{color:var(--risco);font-weight:600}
.led tr.saldo-linha td{border-top:1.5px solid var(--ink)}
.led tr.nat-in td.microbar i{background:var(--ok-soft);border-right-color:var(--ok)}
.led tr.nat-out td.microbar i{background:var(--risco-soft);border-right-color:var(--risco)}
/* visão gerencial da grade: heatmap de valor por célula, normalizado por linha.
   h0..h5 = rampa --calor do acento vigente. Degraus 3+ são escuros no tema
   claro e pedem texto claro (mesma lógica do .mapa-cel.claro/.escuro); no
   escuro a rampa inverte a luminância e 4-5 voltam a pedir tinta escura. */
.led.heat td.h0{background:var(--calor-0)}
.led.heat td.h1{background:var(--calor-1)}
.led.heat td.h2{background:var(--calor-2)}
.led.heat td.h3{background:var(--calor-3)}
.led.heat td.h4{background:var(--calor-4)}
.led.heat td.h5{background:var(--calor-5)}
.led.heat td.h3,.led.heat td.h4,.led.heat td.h5{color:#F2F2EE}
body.escuro .led.heat td.h4,body.escuro .led.heat td.h5{color:var(--cinza-9)}
.led.heat td.h0,.led.heat td.h1,.led.heat td.h2,.led.heat td.h3,.led.heat td.h4,
.led.heat td.h5{-webkit-print-color-adjust:exact;print-color-adjust:exact}
/* rampa de FOGO (f0..f5): saída e saldo negativo esquentam em tijolo,
   nunca na rampa do acento — saída em verde é contrassenso (21/08/2026) */
.led.heat td.f0{background:var(--fogo-0)}
.led.heat td.f1{background:var(--fogo-1)}
.led.heat td.f2{background:var(--fogo-2)}
.led.heat td.f3{background:var(--fogo-3)}
.led.heat td.f4{background:var(--fogo-4)}
.led.heat td.f5{background:var(--fogo-5)}
.led.heat td.f3,.led.heat td.f4,.led.heat td.f5{color:#F2F2EE}
body.escuro .led.heat td.f4,body.escuro .led.heat td.f5{color:var(--cinza-9)}
.led.heat td.f0,.led.heat td.f1,.led.heat td.f2,.led.heat td.f3,.led.heat td.f4,
.led.heat td.f5{-webkit-print-color-adjust:exact;print-color-adjust:exact}

/* tabela compacta de família/subitem */
table.fam{width:100%;border-collapse:collapse;font-size:12px}
.fam th{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.1em;
  text-transform:uppercase;text-align:right;padding:7px 8px;border-bottom:var(--fio-2);
  color:var(--ink-2)}
.fam th:first-child{text-align:left}
.fam td{padding:6px 8px;border-bottom:var(--fio);text-align:right;font-family:var(--fonte-mono);
  font-size:var(--fs-num);color:var(--ink-2)}
.fam td:first-child{text-align:left;font-family:var(--fonte-display);font-size:13px;color:var(--ink)}
.fam tbody tr:hover td{background:var(--paper-2)}

/* tabela de dinheiro */
table.ledger{width:100%;border-collapse:collapse;font-size:12.5px;background:var(--card)}
.ledger thead th{font-family:var(--fonte-mono);font-weight:600;font-size:var(--fs-rotulo);
  letter-spacing:.12em;text-transform:uppercase;padding:10px 12px;border-bottom:var(--fio-2);
  background:var(--paper-2);text-align:left}
.ledger thead th.r,.ledger td.r{text-align:right}
.ledger td{padding:9px 12px;border-bottom:var(--fio);color:var(--ink-2);vertical-align:top}
.ledger tbody td:first-child{color:var(--ink);font-weight:500;font-family:var(--fonte-display);
  font-size:14px}
.ledger td.r{font-family:var(--fonte-mono);font-size:var(--fs-num)}
.ledger .sub td{border-top:1px solid var(--rule-2);font-weight:600;color:var(--ink)}
.ledger tfoot td{padding:13px 12px;border-top:2px solid var(--ink);font-family:var(--fonte-mono);
  font-size:var(--fs-num);letter-spacing:.04em;text-transform:uppercase;color:var(--ink)}
.ledger tfoot td.total{font-family:var(--fonte-display);font-size:22px;font-weight:400;
  letter-spacing:-.02em;text-transform:none;color:var(--accent-ink)}
.ledger .nota-mudo{font-family:var(--fonte-corpo);font-size:11px;text-transform:none;
  letter-spacing:0;color:var(--ink-3)}

/* série em tabela — a alternativa densa ao gráfico de linha em quadro estreito */
table.mini-tab{width:100%;border-collapse:collapse}
.mini-tab thead th{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink-3);text-align:left;padding:0 8px 6px 0;
  border-bottom:1px solid var(--rule);font-weight:400}
.mini-tab thead th.v,.mini-tab thead th.d{text-align:right;white-space:nowrap}
.mini-tab td{padding:5px 8px 5px 0;border-bottom:var(--fio-pont);vertical-align:middle}
.mini-tab tbody tr:last-child td{border-bottom:none}
.mini-tab td:first-child{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-3);white-space:nowrap;width:1%}
.mini-tab td.v{font-family:var(--fonte-display);font-size:15px;text-align:right;color:var(--ink);
  white-space:nowrap;width:1%;letter-spacing:-.01em}
.mini-tab td.b{width:auto;padding-right:12px}
.mini-tab td.b i{display:block;height:6px;background:var(--accent-soft);
  border-right:2px solid var(--accent);min-width:2px;
  transition:width var(--mv-medio,.5s) var(--mv-curva,ease)}
.mini-tab td.d{font-family:var(--fonte-mono);font-size:var(--fs-num);text-align:right;
  white-space:nowrap;width:1%}
.mini-tab tr.agora td.v{font-weight:600}
.mini-tab tr.agora td:first-child{color:var(--accent)}
.mini-tab tr.agora td.b i{background:var(--accent);border-right-color:var(--accent)}

/* nota de contagem sob a tabela */
.tabela-nota{font-family:var(--fonte-mono);font-size:var(--fs-nota);color:var(--ink-3);
  letter-spacing:.08em;margin-top:8px}

/* ==== css/controles.css ==== */
/* --- CONTROLES ------------------------------------------------------------
   Todo filtro roda no navegador, sem servidor. A barra fica logo abaixo do
   título; o estado ativo aparece como .fchip removível (o leitor sempre sabe
   o que está vendo). Botões: mono, caixa alta, retangulares.
   Some na impressão.
   ------------------------------------------------------------------------- */
.controles{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:end;border:var(--fio);
  background:var(--paper-2);padding:12px 14px;margin-bottom:var(--sp-3)}
.controles-bloco{display:grid;border:var(--fio);background:var(--paper-2);
  margin-bottom:var(--sp-3)}
.controles-data{display:flex;align-items:end;gap:var(--sp-3);padding:13px 14px;
  border-left:3px solid var(--accent);background:var(--card)}
.controles-data::before{content:"PERÍODO";align-self:center;font-family:var(--fonte-mono);
  font-size:var(--fs-rotulo);font-weight:700;letter-spacing:var(--ls-rotulo);color:var(--accent-ink)}
.controles-data .ctl input[type="date"]{min-width:166px;font-weight:600;border-color:var(--ink-3)}
.controles-acoes{display:flex;flex-wrap:wrap;align-items:end;gap:9px;padding:10px 14px;
  border-top:var(--fio)}
.atalho.on,.ctl button.on,.botao.on{background:var(--accent);border-color:var(--accent);
  color:var(--accent-on);opacity:1}
.ctl button:disabled,.botao:disabled{cursor:not-allowed;opacity:.38}
.ctl{display:grid;gap:4px}
.ctl.cresce{flex:1;min-width:160px}
.ctl label{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:var(--ls-rotulo);
  text-transform:uppercase;color:var(--ink-3)}
.ctl select,.ctl input{font-family:var(--fonte-mono);font-size:12px;color:var(--ink);
  background:var(--card);border:1px solid var(--rule-2);padding:6px 9px;min-width:136px;
  border-radius:0;transition:border-color var(--dur)}
.ctl input{width:100%}
.ctl select:hover,.ctl input:hover{border-color:var(--ink-3)}
.ctl select:focus,.ctl input:focus{outline:none;border-color:var(--accent);
  box-shadow:inset 0 0 0 1px var(--accent)}
.ctl button,.botao{font-family:var(--fonte-mono);font-size:var(--fs-meta);letter-spacing:.14em;
  text-transform:uppercase;background:var(--ink);color:var(--paper);border:1px solid var(--ink);
  padding:8px 13px;cursor:pointer;border-radius:0;transition:opacity var(--dur)}
.ctl button.sec,.botao.sec{background:transparent;color:var(--ink);border-color:var(--rule-2)}
/* .on tem que vencer .sec mesmo declarado antes (botão de visão usa "sec on") */
.ctl button.sec.on,.botao.sec.on{background:var(--accent);border-color:var(--accent);
  color:var(--accent-on);opacity:1}
.ctl button.acc,.botao.acc{background:var(--accent);border-color:var(--accent);color:var(--accent-on)}
.ctl button:hover,.botao:hover{opacity:.82}
.ctl button:active,.botao:active{opacity:1}

/* chips de filtro ativo */
.fchips{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 var(--sp-4)}
.fchips:empty{margin:0}
.fchip{font-family:var(--fonte-mono);font-size:var(--fs-meta);letter-spacing:.1em;
  text-transform:uppercase;border:1px solid var(--accent);color:var(--accent-ink);
  background:var(--accent-soft);padding:4px 9px;cursor:pointer;user-select:none}
.fchip::after{content:" ×";font-weight:700}
.fchip:hover{background:var(--accent);color:var(--accent-on)}

/* abas — troca de visão dentro do mesmo report */
.abas{display:flex;gap:0;border-bottom:var(--fio-2);margin-bottom:var(--sp-4);flex-wrap:wrap}
.aba{font-family:var(--fonte-mono);font-size:var(--fs-meta);letter-spacing:.14em;
  text-transform:uppercase;padding:9px 15px;color:var(--ink-3);cursor:pointer;
  border:1px solid transparent;border-bottom:none;margin-bottom:-1.5px;background:none}
.aba:hover{color:var(--ink)}
.aba.on{color:var(--ink);background:var(--card);border-color:var(--ink);
  border-bottom:1.5px solid var(--card)}

/* alternador de tema — canto do masthead */
.tema{font-family:var(--fonte-mono);font-size:var(--fs-meta);letter-spacing:.14em;
  text-transform:uppercase;background:none;border:1px solid var(--rule-2);color:var(--ink-2);
  padding:5px 10px;cursor:pointer}
.tema:hover{border-color:var(--ink);color:var(--ink)}

/* --- botao "Continuar no Claude" ------------------------------------------
   Icone spark do Claude embutido (data URI, sem rede). Cor da marca do
   servico fica: icone de marca nao entra na regra do acento unico.          */
button.claude,.botao.claude{display:inline-flex;align-items:center;gap:7px}
button.claude::before,.botao.claude::before{content:"";flex:none;width:13px;height:13px;
  background:url("data:image/png;base64,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") center/contain no-repeat}

/* botao de ICONE unico (vazio, so o simbolo) + integracao G4 OS */
.ctl button.ico{padding:8px 9px;min-width:0}
.ctl button.ico::before{margin:0}
button.g4,.botao.g4{display:inline-flex;align-items:center;gap:7px}
button.g4::before,.botao.g4::before{content:"";flex:none;width:14px;height:14px;
  background:url("data:image/png;base64,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") center/contain no-repeat}


/* ── indice de navegacao (tabs de secao) ─────────────────────────────────
   Report longo ganha uma barra sticky de tabs numeradas, uma por secao,
   nome CURTO (1 palavra). Clique rola ate a secao (scrollIntoView, NUNCA
   mexer no location.hash: o hash carrega o estado dos filtros). A secao
   precisa de id proprio e scroll-margin-top pro sticky nao cobrir o h2. */
.indice-tabs{position:sticky;top:0;z-index:60;display:flex;flex-wrap:wrap;
  background:var(--cinza-0);border:1px solid var(--cinza-9);
  border-bottom-width:2px;margin:14px 0 18px}
.indice-tabs a{flex:1 1 auto;display:flex;align-items:center;justify-content:center;
  gap:7px;padding:10px 8px;font-family:'JetBrains Mono',monospace;font-size:10.5px;
  letter-spacing:.08em;text-transform:uppercase;color:var(--cinza-7);
  text-decoration:none;border-right:1px solid var(--cinza-3);cursor:pointer;
  white-space:nowrap}
.indice-tabs a:last-child{border-right:0}
.indice-tabs a b{font-weight:700;color:var(--cinza-5)}
.indice-tabs a:hover{background:var(--cinza-1);color:var(--cinza-9)}
.indice-tabs a.on{background:var(--cinza-9);color:var(--cinza-0)}
.indice-tabs a.on b{color:var(--cinza-0)}
.secao{scroll-margin-top:58px}
@media print{.indice-tabs{display:none}}
@media (max-width:780px){.indice-tabs a{font-size:9px;padding:8px 5px;gap:4px}}

/* ==== css/alertas.css ==== */
/* --- ALERTAS E LEITURA ---------------------------------------------------
   O que transforma dashboard em report: uma linha que diz o que fazer.
   .alerta  — bloco de observação, com severidade no fio esquerdo.
   .acoes   — a fila de providências, numerada, no fim do report.
   Marca: letra grega ou §, nunca emoji.
   ------------------------------------------------------------------------- */
.alerta{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:start;border:var(--fio);
  border-left:3px solid var(--accent);background:var(--paper-2);padding:13px 16px;
  margin:0 0 var(--sp-3)}
.alerta-mark{width:25px;height:25px;border:1.5px solid currentColor;display:grid;place-items:center;
  font-family:var(--fonte-display);font-style:italic;font-size:13px;color:var(--accent)}
.alerta-tag{font-family:var(--fonte-mono);font-size:var(--fs-rotulo);letter-spacing:var(--ls-rotulo);
  text-transform:uppercase;font-weight:600;color:var(--accent);margin-bottom:3px}
.alerta p{font-size:12.5px;color:var(--ink-2);max-width:74ch;line-height:1.55}
.alerta p b{color:var(--ink)}
.alerta.risco{border-left-color:var(--risco)}
.alerta.risco .alerta-mark,.alerta.risco .alerta-tag{color:var(--risco)}
.alerta.aviso{border-left-color:var(--aviso)}
.alerta.aviso .alerta-mark,.alerta.aviso .alerta-tag{color:var(--aviso)}
.alerta.ok{border-left-color:var(--ok)}
.alerta.ok .alerta-mark,.alerta.ok .alerta-tag{color:var(--ok)}
.alerta.nota{border-left-color:var(--ink-3)}
.alerta.nota .alerta-mark,.alerta.nota .alerta-tag{color:var(--ink-3)}

/* fila de providências — sempre com dono e prazo */
.acoes{border-top:var(--fio-2)}
.acao{display:grid;grid-template-columns:34px 1fr auto;gap:var(--sp-3);align-items:baseline;
  padding:11px 0;border-bottom:var(--fio)}
.acao-n{font-family:var(--fonte-mono);font-size:var(--fs-num);color:var(--accent);font-weight:600}
.acao-t{font-family:var(--fonte-display);font-size:15px;line-height:1.25}
.acao-t small{display:block;font-family:var(--fonte-corpo);font-size:12px;color:var(--ink-2);
  margin-top:3px;max-width:70ch}
.acao-dono{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink-3);white-space:nowrap;text-align:right}

/* checklist */
.checklist{list-style:none}
.checklist li{position:relative;padding:7px 0 7px 26px;font-size:12.5px;color:var(--ink-2);
  border-bottom:var(--fio-pont)}
.checklist li::before{content:"";position:absolute;left:0;top:9px;width:12px;height:12px;
  border:1.5px solid var(--ink-3)}
.checklist li.feito::before{background:var(--accent);border-color:var(--accent)}
.checklist li.feito{color:var(--ink-3)}

/* cartões de risco — três severidades */
.riscos{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3)}
.risco-card{border:var(--fio);border-top:3px solid var(--ink-3);background:var(--card);
  padding:14px 16px}
.risco-card.media{border-top-color:var(--aviso)}
.risco-card.alta{border-top-color:var(--risco)}
.risco-nivel{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink-3);margin-bottom:7px}
.risco-card.media .risco-nivel{color:var(--aviso)}
.risco-card.alta .risco-nivel{color:var(--risco)}
.risco-card h3{font-size:16px;margin-bottom:5px}
.risco-card p{font-size:12px;color:var(--ink-2)}

/* estado vazio — quando o filtro não devolve nada */
.vazio{border:1px dashed var(--rule-2);padding:26px;text-align:center;
  font-family:var(--fonte-mono);font-size:var(--fs-meta);letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink-3)}

/* ==== css/cartas.css ==== */
/* --- CARTAS, CAPA E BLOCO ESCURO ------------------------------------------ */

/* carta — item do índice da mesa (miniatura + texto), vira link inteiro */
.carta{display:grid;grid-template-columns:300px 1fr;gap:24px;border:var(--fio);
  background:var(--card);margin-bottom:var(--sp-5);text-decoration:none;color:inherit;
  overflow:hidden;transition:border-color var(--dur),transform var(--dur)}
.carta:hover{border-color:var(--accent);transform:translateY(-1px)}
.carta img{width:300px;height:186px;object-fit:cover;object-position:top;border-right:var(--fio)}
.carta-txt{padding:20px 24px;align-self:center}
.carta-eyebrow{font-family:var(--fonte-mono);font-size:var(--fs-rotulo);
  letter-spacing:var(--ls-rotulo);text-transform:uppercase;color:var(--ink-3);margin-bottom:7px}
.carta h2{font-family:var(--fonte-display);font-weight:400;font-size:25px;letter-spacing:-.02em;
  line-height:1.05;margin-bottom:7px}
.carta h2 em{font-style:italic;color:var(--accent)}
.carta p{font-size:12.5px;color:var(--ink-2);max-width:58ch}
.carta-meta{display:flex;gap:var(--sp-3);margin-top:11px;font-family:var(--fonte-mono);
  font-size:var(--fs-nota);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}

/* carta sem imagem, em grade — quando não há miniatura */
.cartas-grade{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-4)}
.carta-seca{display:block;border:var(--fio);background:var(--card);padding:18px 20px;
  color:inherit;text-decoration:none;transition:border-color var(--dur)}
.carta-seca:hover{border-color:var(--accent)}
.carta-seca h2{font-family:var(--fonte-display);font-weight:400;font-size:21px;
  letter-spacing:-.02em;margin:4px 0 6px}
.carta-seca h2 em{font-style:italic;color:var(--accent)}
.carta-seca p{font-size:12.5px;color:var(--ink-2)}

/* cartões de opção — 2 a 4 caminhos, um marcado como sugerido */
.opcoes{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3)}
.opcao{border:var(--fio-2);background:var(--card);padding:18px 20px;position:relative}
.opcao.sugerida{border-color:var(--accent)}
.opcao-fita{position:absolute;top:-1px;right:-1px;background:var(--accent);color:var(--accent-on);
  font-family:var(--fonte-mono);font-size:8.5px;letter-spacing:.16em;text-transform:uppercase;
  padding:4px 9px}
.opcao-n{font-family:var(--fonte-mono);font-size:var(--fs-nota);letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink-3);margin-bottom:8px}
.opcao h3{font-size:19px;font-weight:400;margin-bottom:7px}
.opcao p{font-size:12.5px;color:var(--ink-2)}
.opcao ul{list-style:none;margin-top:11px;border-top:var(--fio);padding-top:9px}
.opcao li{font-size:12px;color:var(--ink-2);padding:4px 0 4px 14px;position:relative}
.opcao li::before{content:"·";position:absolute;left:2px;color:var(--accent);font-weight:700}

/* capa / bloco escuro — pontuação, não regime. Um por documento no máximo. */
.escuro-bloco{background:#141519;color:#F2F2EE;padding:34px 36px;border:1.5px solid #33353B;
  --paper:#141519;--paper-2:#1D1F24;--card:#1D1F24;--ink:#F2F2EE;--ink-2:#C6C7CC;--ink-3:#8A8C92;
  --rule:#33353B;--rule-2:#4A4D54;--accent:#8E9BEB;--accent-soft:#20243D;--accent-ink:#AEB8F2;
  --accent-on:#101218;--ok:#6FB58C;--risco:#E0876C;--aviso:#C9A544}
.escuro-bloco p{color:var(--ink-2)}
.escuro-bloco .mh-logo{filter:invert(1) brightness(1.9)}

/* ==== css/painel.css ==== */
/* ---------------------------------------------------------------------------
   PAINEL — janela paralela do report (drawer à direita; sheet no mobile).
   Uso: detalhe de uma linha (resumo editorial de pessoa, drill de produto).
   Sem sombra: o que destaca o painel é o scrim e o fio de 3px.
   Fecha por X, por clique no scrim e por Esc (JS: TD.painel).

   LINHA DO TEMPO (.tl) — cronologia vertical do dia dentro do painel:
   trilho à esquerda, hora em mono, marco quadrado no trilho (raio 0),
   conteúdo à direita. .tl-forte marca o item dominante.
   --------------------------------------------------------------------------- */
.scrim{position:fixed;inset:0;background:rgba(20,20,20,.45);z-index:80;
  opacity:0;pointer-events:none;transition:opacity var(--mv-rapido,.22s) var(--mv-curva,ease)}
body.painel-aberto .scrim{opacity:1;pointer-events:auto}
body.painel-aberto{overflow:hidden}

.painel{position:fixed;top:0;right:0;bottom:0;width:min(600px,100vw);
  background:var(--paper);border-left:var(--fio-3);z-index:81;
  display:flex;flex-direction:column;visibility:hidden;transform:translateX(102%);
  transition:transform .3s var(--mv-curva,ease),visibility 0s .3s}
body.painel-aberto .painel{visibility:visible;transform:none;transition:transform .3s var(--mv-curva,ease)}

.painel-cab{display:flex;align-items:flex-start;gap:12px;
  padding:18px 20px 14px;border-bottom:var(--fio-2);background:var(--paper)}
.painel-rotulo{font-family:var(--fonte-mono);font-size:var(--fs-rotulo);
  letter-spacing:.14em;text-transform:uppercase;color:var(--cinza-5);margin-bottom:4px}
.painel-titulo{font-family:var(--fonte-display);font-size:24px;line-height:1.1;
  font-weight:600;color:var(--ink)}
.painel-titulo em{font-style:italic;color:var(--accent-ink)}
.painel-x{margin-left:auto;flex:none;width:40px;height:40px;border:var(--fio-2);
  background:var(--paper);color:var(--ink);font-size:18px;line-height:1;cursor:pointer;
  font-family:var(--fonte-mono);display:flex;align-items:center;justify-content:center}
.painel-x:hover{background:var(--ink);color:var(--paper)}

.painel-corpo{flex:1;overflow-y:auto;padding:16px 20px 28px;-webkit-overflow-scrolling:touch}
.painel-corpo .veredito{margin:12px 0}

/* régua de mini-KPIs do painel (3 colunas, fio entre elas) */
.painel-kpis{display:grid;grid-template-columns:repeat(3,1fr);border:var(--fio);
  margin:0 0 14px}
.painel-kpis>div{padding:10px 12px;border-right:var(--fio)}
.painel-kpis>div:last-child{border-right:none}
.painel-kpis .r{font-family:var(--fonte-mono);font-size:var(--fs-rotulo);
  letter-spacing:.12em;text-transform:uppercase;color:var(--cinza-5)}
.painel-kpis .v{font-family:var(--fonte-display);font-size:19px;font-weight:600;
  font-variant-numeric:tabular-nums;color:var(--ink)}

/* --- linha do tempo -------------------------------------------------------- */
.tl{position:relative;margin:6px 0 0;padding-left:76px}
.tl::before{content:"";position:absolute;left:58px;top:6px;bottom:6px;
  border-left:var(--fio)}
.tl-item{position:relative;padding:0 0 16px}
.tl-hora{position:absolute;left:-76px;top:0;width:44px;text-align:right;
  font-family:var(--fonte-mono);font-size:11px;color:var(--cinza-5);
  font-variant-numeric:tabular-nums}
.tl-item::before{content:"";position:absolute;left:-21px;top:3px;width:7px;height:7px;
  background:var(--paper);border:var(--fio-2)}
.tl-item.tl-forte::before{background:var(--accent);border-color:var(--accent)}
.tl-t{font-size:13px;color:var(--ink);line-height:1.45}
.tl-t strong{font-weight:600}
.tl-sub{font-family:var(--fonte-mono);font-size:11px;color:var(--cinza-5);margin-top:2px}
.tl-sub .chip{margin-left:6px}

/* mobile: sheet de tela cheia, X maior pro dedão */
@media (max-width:640px){
  .painel{width:100vw;border-left:none;border-top:var(--fio-3)}
  .painel-cab{padding:14px 16px 12px}
  .painel-corpo{padding:14px 16px 24px}
  .painel-x{width:46px;height:46px}
  .painel-kpis{grid-template-columns:repeat(3,1fr)}
  .painel-kpis .v{font-size:16px}
  .tl{padding-left:62px}
  .tl::before{left:48px}
  .tl-hora{left:-62px;width:38px}
  .tl-item::before{left:-17px}
}

/* escuro herda das variáveis; só o scrim escurece mais */
body.escuro .scrim{background:rgba(0,0,0,.62)}

@media print{.scrim,.painel{display:none}}
@media (prefers-reduced-motion:reduce){
  .scrim,.painel{transition:none}
}

/* ==== css/fluxo.css ==== */
/* ---------------------------------------------------------------------------
   FLUXO — componentes de APLICATIVO (wizard, formulário passo-a-passo, painel
   flutuante, ditado). Nasceram no Lançador de Processo (24/08/2026) e foram
   promovidos pra cá porque a versão inline usava nomes de token inexistentes
   (--papel, --fio-cor) e só funcionava por acidente num dos temas.
   REGRA: aqui dentro só apelido semântico da camada 2 (--paper/--card/--ink/
   --rule/--accent/--accent-on). Nada de hex de tema, nada de fallback chumbado
   — fallback esconde token errado até alguém trocar o tema.
   --------------------------------------------------------------------------- */

/* --- passo do fluxo ------------------------------------------------------ */
.lz-passo{display:none;margin:16px 0;padding:16px;border:1px solid var(--rule);
  background:var(--card);}
.lz-passo.on{display:block;animation:lzIn .45s cubic-bezier(.2,.7,.3,1);}
.lz-passo.feito{opacity:.92;}
.lz-passo h3{font-family:var(--fonte-display);font-size:19px;margin:0 0 4px;color:var(--ink);}
.lz-passo .lz-sub{font-family:var(--fonte-mono);font-size:11px;color:var(--ink-3);margin-bottom:12px;}
@keyframes lzIn{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}
@keyframes lzPop{0%{transform:scale(.9);}60%{transform:scale(1.04);}100%{transform:scale(1);}}
@keyframes lzRespira{0%,100%{opacity:.3;}50%{opacity:.85;}}

/* --- resultados de busca ------------------------------------------------- */
.lz-res{margin-top:8px;}
.lz-res button{display:flex;width:100%;justify-content:space-between;gap:10px;padding:9px 10px;
  margin-bottom:6px;border:1px solid var(--rule);background:transparent;cursor:pointer;
  font:inherit;text-align:left;color:var(--ink);}
.lz-res button:hover{border-color:var(--accent);}
.lz-res .cod{font-family:var(--fonte-mono);font-size:11px;color:var(--ink-3);white-space:nowrap;}
.lz-load{font-family:var(--fonte-mono);font-size:11px;color:var(--ink-3);padding:8px 2px;
  animation:lzRespira 1.1s ease-in-out infinite;}

/* --- valor escolhido (pick) + trocar ------------------------------------- */
.lz-pick{border-left:3px solid var(--accent);padding:10px 12px;margin-top:10px;
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  background:var(--paper-2);animation:lzIn .3s;color:var(--ink);}
.lz-pick small{font-family:var(--fonte-mono);color:var(--ink-3);}
.lz-troca{background:none;border:1px solid var(--rule);font:inherit;font-size:11px;
  padding:4px 10px;cursor:pointer;color:var(--ink-2);}
.lz-troca:hover{border-color:var(--accent);color:var(--ink);}
.lz-sugerido{font-family:var(--fonte-mono);font-size:10px;letter-spacing:.05em;
  color:var(--accent);border:1px solid var(--accent);padding:2px 7px;margin-left:8px;}

/* --- erro de campo -------------------------------------------------------- */
.lz-erro{color:var(--risco);font-family:var(--fonte-mono);font-size:11px;margin-top:6px;display:none;}
.lz-erro.on{display:block;animation:lzIn .25s;}

/* --- chips de escolha rápida ---------------------------------------------- */
.lz-chip{display:inline-block;border:1.5px solid var(--rule);background:transparent;
  color:var(--ink);font:inherit;font-size:12.5px;padding:9px 14px;margin:0 8px 8px 0;cursor:pointer;
  transition:transform .12s,background .18s,border-color .18s,color .18s;}
.lz-chip:hover{border-color:var(--accent);}
.lz-chip:active{transform:scale(.93);}
.lz-chip.on{border-color:var(--accent);background:var(--accent);color:var(--accent-on);
  font-weight:600;animation:lzPop .25s cubic-bezier(.3,1.4,.5,1);}

/* --- cartão-opção clicável (usa .opcao do DS por baixo) ------------------- */
.lz-op{cursor:pointer;transition:transform .15s,border-color .15s,box-shadow .15s;}
.lz-op:hover{border-color:var(--accent);transform:translateY(-2px);}
.lz-op:active{transform:scale(.97);}
.lz-op.lz-sel{border-color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent);
  animation:lzPop .3s cubic-bezier(.3,1.4,.5,1);}

/* --- quadros compactos de valor (país/portos) ----------------------------- */
.lz-card{border:1px solid var(--rule);padding:10px 40px 10px 12px;position:relative;
  background:var(--card);color:var(--ink);
  transition:transform .15s,border-color .15s,box-shadow .15s;animation:lzIn .35s;}
.lz-card:hover{border-color:var(--accent);}
.lz-card .lab{font-family:var(--fonte-mono);font-size:9.5px;letter-spacing:.07em;
  text-transform:uppercase;color:var(--ink-3);}
.lz-card .val{display:flex;gap:8px;align-items:center;font-weight:600;font-size:14px;
  margin:4px 0 2px;min-width:0;}
.lz-card .val .txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lz-card .flag{font-size:19px;line-height:1;flex-shrink:0;}
.lz-card .sub{font-family:var(--fonte-mono);font-size:10px;color:var(--ink-3);}
.lz-card .lz-troca{position:absolute;top:8px;right:8px;padding:3px 8px;font-size:10px;}
.lz-card.vazio{border-style:dashed;cursor:pointer;}
.lz-card.vazio .val{color:var(--ink-3);font-weight:400;}
.lz-card.pulsa{animation:lzPop .35s cubic-bezier(.3,1.4,.5,1);}
.lz-buscabox{margin-top:10px;animation:lzIn .3s;}

/* --- grids utilitários do fluxo ------------------------------------------- */
.lz-grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.lz-grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;}
@media(max-width:640px){.lz-grid3{grid-template-columns:1fr;}.lz-grid2{grid-template-columns:1fr;}}

/* --- itens, totais, parcelas ---------------------------------------------- */
.lz-item{display:flex;justify-content:space-between;gap:8px;padding:9px 0;
  border-bottom:1px dashed var(--rule);color:var(--ink);}
.lz-item .tot{font-family:var(--fonte-mono);font-weight:600;white-space:nowrap;}
.lz-ult{font-family:var(--fonte-mono);font-size:11px;border-left:3px solid var(--accent);
  background:var(--paper-2);padding:8px 10px;margin:8px 0;color:var(--ink-2);}
.lz-total{display:flex;justify-content:space-between;font-family:var(--fonte-mono);
  font-weight:700;margin-top:10px;font-size:14px;color:var(--ink);}
.lz-parcela{border:1px solid var(--rule);padding:12px;margin-bottom:10px;
  background:var(--card);animation:lzIn .3s;}
.lz-selo{display:inline-block;font-family:var(--fonte-mono);font-size:10px;
  letter-spacing:.06em;border:1px solid currentColor;padding:2px 8px;opacity:.7;margin-left:8px;}
.lz-resline{display:flex;justify-content:space-between;gap:10px;padding:4px 0;
  font-size:13px;color:var(--ink);}
.lz-resline b{font-family:var(--fonte-mono);text-align:right;}
.lz-final{border:2px solid var(--accent);padding:18px;text-align:center;margin-top:18px;
  background:var(--card);animation:lzIn .5s;}
.lz-intel{border-left:3px solid var(--accent);font-family:var(--fonte-mono);
  font-size:11px;padding:8px 10px;margin:0 0 12px;background:var(--paper-2);color:var(--ink-2);}

/* --- botões do fluxo ------------------------------------------------------- */
.lz-btn{padding:12px 22px;border:1px solid var(--accent);background:var(--accent);
  color:var(--accent-on);font:inherit;font-weight:600;cursor:pointer;}
.lz-btn.sec2{background:transparent;color:var(--ink);border-color:var(--rule);}
.lz-btn.sec2:hover{border-color:var(--accent);}
.lz-btn:disabled{opacity:.35;cursor:default;}

/* --- barra fixa (um botão de continuar) ------------------------------------ */
.lz-bar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:none;
  background:var(--card);border-top:2px solid var(--accent);
  padding:10px 18px;justify-content:space-between;align-items:center;gap:14px;}
.lz-bar .rot{font-family:var(--fonte-mono);font-size:11px;color:var(--ink-3);min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.lz-prog{position:absolute;top:-2px;left:0;height:2px;background:var(--accent-ink);
  transition:width .45s cubic-bezier(.3,.8,.3,1);}

/* --- painel de ditado flutuante -------------------------------------------- */
.lz-voz-flut{position:fixed;left:12px;right:12px;bottom:74px;z-index:59;max-width:560px;
  margin:0 auto;background:var(--card);border:2px solid var(--accent);padding:12px;
  max-height:45vh;overflow-y:auto;animation:lzIn .3s;box-shadow:0 -6px 24px rgba(0,0,0,.18);}

/* --- quadro "montando o pedido" -------------------------------------------- */
.lz-monta{position:fixed;right:14px;bottom:74px;width:236px;z-index:55;display:none;
  background:var(--card);border:1px solid var(--rule);border-top:3px solid var(--accent);
  padding:9px 12px 10px;box-shadow:0 8px 28px rgba(0,0,0,.16);
  animation:lzIn .4s;overflow:hidden;color:var(--ink);}
.lz-monta .tit{font-family:var(--fonte-mono);font-size:9.5px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--ink-3);margin-bottom:6px;display:flex;align-items:center;gap:8px;}
.lz-monta .tit .n{color:var(--accent);font-weight:700;}
.lz-monta .tit .oculta{margin-left:auto;background:none;border:none;cursor:pointer;
  color:var(--ink-3);font:inherit;font-size:9.5px;letter-spacing:.06em;padding:2px 4px;}
.lz-monta .tit .oculta:hover{color:var(--ink);}
.lz-monta .trilho{height:2px;background:var(--rule);margin:0 0 7px;}
.lz-monta .trilho i{display:block;height:2px;background:var(--accent);
  transition:width .5s cubic-bezier(.3,.8,.3,1);}
.lz-monta .li{display:flex;justify-content:space-between;gap:8px;padding:2px 0;
  font-size:10.5px;line-height:1.5;animation:lzIn .35s;}
.lz-monta .li span{color:var(--ink-3);font-family:var(--fonte-mono);font-size:8.5px;
  text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;padding-top:2px;}
.lz-monta .li b{font-weight:600;text-align:right;min-width:0;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;color:var(--ink);}
.lz-monta .li.total{border-top:1px solid var(--rule);margin-top:3px;padding-top:4px;}
.lz-monta .li.total b{color:var(--accent);font-size:12px;}
.lz-monta .vazio-hint{font-family:var(--fonte-mono);font-size:9.5px;color:var(--ink-3);padding:2px 0;}
.lz-monta-pill{position:fixed;right:14px;bottom:74px;z-index:55;display:none;
  font-family:var(--fonte-mono);font-size:10px;letter-spacing:.06em;
  background:var(--card);border:1px solid var(--accent);color:var(--accent);
  padding:7px 12px;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.14);animation:lzIn .3s;}
@media(max-width:1180px){
  .lz-monta{left:0;right:0;width:auto;max-width:420px;margin:0 auto;}
  .lz-monta-pill{right:12px;}
}

/* --- feed de raciocínio do agente ------------------------------------------ */
.lz-passos-agente{font-family:var(--fonte-mono);font-size:10.5px;line-height:1.6;
  border:1px solid var(--rule);border-left:3px solid var(--accent);background:var(--paper-2);
  padding:10px 12px;margin-top:10px;max-height:300px;overflow-y:auto;color:var(--ink-2);}
.lz-passos-agente div{animation:lzIn .3s;}
.lz-passos-agente .ferramenta{color:var(--accent);}

/* ==== css/animacao.css ==== */
/* ---------------------------------------------------------------------------
   MOVIMENTO — o dispatch se COMPÕE, como uma tiragem saindo da prensa.
   Uma curva, três durações, uma direção. Nada quica, nada gira, nada pisca.
   Vocabulário:
     fio-desenha   o fio corre da esquerda pra direita (scaleX)
     palavra-sobe  título revelado palavra por palavra, por baixo de uma máscara
     sobe          bloco entra 6px abaixo, opacidade 0 → 1
     compoe        número conta do valor anterior até o novo (JS)
     traco         linha/sparkline se desenha (stroke-dashoffset)
     varre         arco da rosca varre a partir das 12h
     recompoe      hairline sob os controles: o recorte está sendo refeito
   Tudo morre em @media print e sob prefers-reduced-motion.
   --------------------------------------------------------------------------- */
:root{
  --mv-rapido:.22s;
  --mv-medio:.5s;
  --mv-lento:.8s;
  --mv-curva:cubic-bezier(.2,.7,.3,1);
  --mv-saida:cubic-bezier(.4,0,.6,1);
}

/* --- fio que se desenha --------------------------------------------------- */
@keyframes mv-fio{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.mv .masthead{position:relative;border-top-color:transparent}
.mv .masthead::before{content:"";position:absolute;left:0;right:0;top:-3px;height:3px;
  background:var(--ink);transform-origin:left center;
  animation:mv-fio var(--mv-lento) var(--mv-curva) both}
.mv-fio{transform-origin:left center;animation:mv-fio var(--mv-medio) var(--mv-curva) both}

/* --- título palavra por palavra ------------------------------------------ */
.mv-h1 .p{display:inline-block;overflow:hidden;vertical-align:bottom;
  padding-bottom:.24em;margin-bottom:-.24em}
.mv-h1 .p>i{display:inline-block;font-style:inherit;color:inherit;
  transform:translateY(135%);animation:mv-palavra .74s var(--mv-curva) both}
@keyframes mv-palavra{from{transform:translateY(135%)}to{transform:translateY(0)}}

/* --- bloco que sobe ------------------------------------------------------ */
@keyframes mv-sobe{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
.mv-sobe{animation:mv-sobe var(--mv-medio) var(--mv-curva) both}

/* --- linha do tempo de uma figura ao entrar na tela --------------------- */
.mv-espera{opacity:0}
.mv-entra{animation:mv-sobe .56s var(--mv-curva) both}

/* --- traço que se desenha ------------------------------------------------ */
/* A FIGURA SE DESENHA, elemento por elemento, na ordem de quem desenha à mão:
   grade → área → linha → marcas → valor. Revelação por clip (dash não serve:
   com stroke em escala o dash vira tracinhos).                              */
@keyframes mv-abre{to{clip-path:inset(0 0 0 0)}}
@keyframes mv-sobe-barra{to{clip-path:inset(0 0 0 0)}}
@keyframes mv-pop{0%{opacity:0;transform:scale(.4)}70%{opacity:1;transform:scale(1.12)}
  100%{opacity:1;transform:scale(1)}}

.serie .grade,.serie .grade-zero{opacity:0;animation:mv-ponto .4s linear both}
.serie .grade:nth-of-type(2){animation-delay:.06s}
.serie .grade:nth-of-type(3){animation-delay:.12s}
.serie .grade:nth-of-type(4){animation-delay:.18s}
.serie .eixo{opacity:0;animation:mv-ponto .45s linear .2s both}
.serie .area-1{clip-path:inset(0 100% 0 0);animation:mv-abre .95s var(--mv-curva) .12s both}
.serie .linha-1,.serie .linha-3,.spark .linha-1{clip-path:inset(0 100% 0 0);
  animation:mv-abre 1.05s var(--mv-curva) .1s both}
.serie .linha-2{clip-path:inset(0 100% 0 0);animation:mv-abre 1.05s var(--mv-curva) .3s both}
.serie .linha{clip-path:inset(0 100% 0 0);animation:mv-abre 1.05s var(--mv-curva) .14s both}
.serie .area{clip-path:inset(0 100% 0 0);animation:mv-abre .95s var(--mv-curva) .12s both}
.serie .banda{clip-path:inset(0 100% 0 0);animation:mv-abre 1.1s var(--mv-curva) .06s both}
.serie .marco,.serie .corte-l{opacity:0;animation:mv-ponto .4s linear .55s both}
.serie .marco-t{opacity:0;animation:mv-ponto .4s linear .65s both}
.serie .alvo{clip-path:inset(0 100% 0 0);animation:mv-abre .7s var(--mv-curva) .5s both}
.serie .conector{opacity:0;animation:mv-ponto .3s linear .5s both}
.serie .marca{opacity:0;animation:mv-ponto .3s linear both;transform-box:fill-box;
  transform-origin:center}
.serie .ponto{opacity:0;transform-box:fill-box;transform-origin:center;
  animation:mv-pop .42s var(--mv-curva) .95s both}
.serie .rotulo{opacity:0;animation:mv-ponto .4s linear both;animation-delay:1.05s}
/* barras: crescem da linha do zero, uma atrás da outra */
.serie .barra,.serie .barra-2,.serie .barra-ok{clip-path:inset(100% 0 0 0);
  animation:mv-sobe-barra .62s var(--mv-curva) both}
.serie .barra-neg{clip-path:inset(0 0 100% 0);animation:mv-sobe-barra .62s var(--mv-curva) both}
.serie .ponto,.spark .ponto{opacity:0;animation:mv-ponto .3s var(--mv-curva) .85s forwards}
@keyframes mv-ponto{to{opacity:1}}

/* --- rosca: arcos varrem, e o hover isola a fatia ----------------------- */
.rosca .fatia{transition:stroke-dasharray var(--mv-lento) var(--mv-curva),
  opacity var(--mv-rapido) linear,stroke-width var(--mv-rapido) var(--mv-curva)}
.rosca:hover .fatia{opacity:.28}
.rosca .fatia:hover,.rosca .fatia.viva{opacity:1;stroke-width:23}
.rosca-legenda .rl{transition:background var(--mv-rapido) linear}
.rosca-centro,.rosca-centro-l{transition:opacity var(--mv-rapido) linear}

/* --- tabela: as linhas se assentam em cascata curta -------------------- */
@keyframes mv-linha{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.mv-cascata tr{animation:mv-linha .34s var(--mv-curva) both}
.mv-cascata tr:nth-child(1){animation-delay:0ms}
.mv-cascata tr:nth-child(2){animation-delay:22ms}
.mv-cascata tr:nth-child(3){animation-delay:44ms}
.mv-cascata tr:nth-child(4){animation-delay:66ms}
.mv-cascata tr:nth-child(5){animation-delay:88ms}
.mv-cascata tr:nth-child(6){animation-delay:110ms}
.mv-cascata tr:nth-child(7){animation-delay:132ms}
.mv-cascata tr:nth-child(8){animation-delay:154ms}
.mv-cascata tr:nth-child(9){animation-delay:176ms}
.mv-cascata tr:nth-child(n+10){animation-delay:198ms}

/* --- KPI: o número compõe, a unidade fica parada ----------------------- */
.kpi-val .num{font-variant-numeric:tabular-nums}
.kpi{position:relative}
.kpi.mv-tocado::after{content:"";position:absolute;left:0;top:-1.5px;width:100%;height:1.5px;
  background:var(--accent);transform-origin:left center;
  animation:mv-fio .5s var(--mv-curva) both}

/* --- recompondo: hairline sob a barra de controles --------------------- */
.recompondo{height:1.5px;background:var(--paper-2);overflow:hidden;margin:-14px 0 13px}
.recompondo>i{display:block;height:100%;width:100%;background:var(--accent);
  transform-origin:left center;transform:scaleX(0)}
.recompondo.ativo>i{animation:mv-recompoe .45s var(--mv-saida) both}
@keyframes mv-recompoe{0%{transform:scaleX(0);opacity:1}
  70%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1);opacity:0}}

/* --- barra: além do crescimento, o hover revela o trilho inteiro ------- */
.bar-row.clicavel .bar-track{transition:border-color var(--mv-rapido) linear}
.bar-row.clicavel:hover .bar-track{border-color:var(--ink-3)}
.bar-fill{transition:width var(--mv-medio) var(--mv-curva),background var(--mv-rapido) linear}

/* --- carta / chip: microresposta --------------------------------------- */
.fchip,.col-t,.tag,.chip{transition:background var(--mv-rapido) linear,
  color var(--mv-rapido) linear,border-color var(--mv-rapido) linear}
.carta img{transition:transform var(--mv-lento) var(--mv-curva)}
.carta:hover img{transform:scale(1.02)}

/* --- respeito ---------------------------------------------------------- */
@media (prefers-reduced-motion: reduce){
  .mv *,.mv *::before,.mv *::after{animation:none !important;transition:none !important}
  .mv-espera{opacity:1}
  .serie *{clip-path:none !important;opacity:1 !important}
}
@media print{
  .mv *,.mv *::before,.mv *::after{animation:none !important;transition:none !important}
  .mv-espera{opacity:1}
  .serie *{clip-path:none !important;opacity:1 !important}
  .recompondo{display:none}
}

/* sem animacao (print, reduced-motion): a palavra tem que ESTAR no lugar */
@media print{.mv-h1 .p>i{transform:none;animation:none}}
@media(prefers-reduced-motion:reduce){.mv-h1 .p>i{transform:none;animation:none}}

/* ==== css/responsivo.css ==== */
/* --- RESPONSIVO -----------------------------------------------------------
   A mesa lê no celular antes de abrir o laptop. Três decisões:
   1. nada de scroll horizontal na PÁGINA — só dentro da tabela;
   2. na tabela, a primeira coluna (o nome) fica grudada e o resto rola;
   3. KPI vira 2 colunas, nunca 1 (perde a comparação) e nunca 4 (ilegível).
   ------------------------------------------------------------------------- */

@media(max-width:1000px){
  .fig-dupla,.g2,.g-lado,.com-notas{grid-template-columns:1fr}
  .opcoes,.riscos{grid-template-columns:1fr 1fr}
  .cartas-grade{grid-template-columns:1fr}
}

@media(max-width:780px){
  .folha,.paper{padding:16px 14px 34px}
  :root{--fs-h1:27px;--fs-kpi:26px;--fs-kpi-2:20px;--fs-veredito:18px}

  .masthead{padding:11px 0 9px;gap:var(--sp-2);flex-wrap:wrap}
  .mh-marca{gap:10px}
  .mh-logo{height:19px}
  .mh-marca::after{display:none}
  .mh{font-size:9px;letter-spacing:.14em}
  .mh-dir{margin-left:0;width:100%;justify-content:space-between;flex-wrap:wrap}

  h1,.h1{margin:16px 0 5px}
  .lede{font-size:12.5px;margin-bottom:var(--sp-4)}
  .veredito{padding-left:13px;margin-bottom:var(--sp-4)}
  .secao{margin:var(--sp-5) 0 var(--sp-3)}

  .kpis,.kpis.k4,.kpis.k5,.grupo-kpis{grid-template-columns:repeat(2,1fr)}
  .kpi{padding:11px 13px 12px}
  .kpi:nth-child(odd){border-right:var(--fio)}
  .kpi:nth-child(even){border-right:none}
  .kpis>.kpi:nth-last-child(n+3){border-bottom:var(--fio)}
  .gk{padding:10px 13px}
  .gk:nth-child(even){border-right:none}
  .grupo-kpis>.gk:nth-last-child(n+3){border-bottom:var(--fio)}
  .kpi-note{font-size:11px}

  .fig{padding:13px 13px 11px}
  .fig-tag{font-size:9px;letter-spacing:.12em}
  .bar-row,.bar-row.largo{grid-template-columns:96px 1fr 58px;gap:8px}
  .bar-label{font-size:11.5px} .bar-label.b2{font-size:11px}
  .bar-label small{display:none}
  .bar-axis{margin-top:9px}
  .rosca-wrap{grid-template-columns:1fr;justify-items:center;gap:var(--sp-3)}
  .rosca-legenda{width:100%}
  .bullet{grid-template-columns:88px 1fr 74px;gap:8px}
  .bullet-t{font-size:11.5px}
  .mapa{min-height:260px}

  /* tabela: nome grudado, números rolam */
  .tabela-wrap{max-height:none;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .led td:first-child,.led thead th:first-child,
  .fam td:first-child,.fam th:first-child{position:sticky;left:0;z-index:1;
    background:var(--card);max-width:150px;box-shadow:1px 0 0 var(--rule)}
  .led thead th:first-child,.fam th:first-child{z-index:3;background:var(--paper-2)}
  .led tbody tr:hover td:first-child{background:var(--paper-2)}
  .led td{padding:6px 7px}
  .ledger thead th,.ledger td{padding:8px 9px}
  .ledger tfoot td.total{font-size:18px}

  /* data continua sendo a primeira linha; só a faixa de ações rola */
  .controles{flex-wrap:nowrap;overflow-x:auto;padding:11px 12px;gap:10px;
    -webkit-overflow-scrolling:touch}
  .controles-data{display:grid;grid-template-columns:auto minmax(118px,1fr) minmax(118px,1fr);
    align-items:end;gap:8px;padding:11px 10px}
  .controles-data::before{grid-row:1;align-self:center}
  .controles-data .ctl input[type="date"]{min-width:0}
  .controles-acoes{flex-wrap:nowrap;overflow-x:auto;padding:10px;
    -webkit-overflow-scrolling:touch}
  .ctl select,.ctl input{min-width:118px;font-size:12px;padding:7px 8px}
  .ctl button,.botao{padding:8px 11px}
  .faixa-row{grid-template-columns:96px 1fr 70px;gap:8px}
  .faixa-eixo{margin-left:104px;margin-right:78px}

  .grupo-head{padding:11px 13px}
  .grupo-corpo,.fams{padding:4px 13px 12px}
  .esc,.grupo-nota{padding:11px 13px}

  .carta{grid-template-columns:1fr}
  .carta img{width:100%;height:138px;border-right:none;border-bottom:var(--fio)}
  .carta-txt{padding:15px 16px}
  .carta h2{font-size:21px}

  .opcoes,.riscos,.split,.g3,.g4{grid-template-columns:1fr}
  .split-c+.split-c{border-left:none;border-top:var(--fio)}
  .qa-q,.qa-a{grid-template-columns:auto 1fr}
  .gl{grid-template-columns:1fr;gap:5px}
  .entretitulo{padding:26px 0}
  .entretitulo blockquote{font-size:23px}
  .escuro-bloco{padding:22px 18px}
  .acao{grid-template-columns:26px 1fr;row-gap:4px}
  .acao-dono{grid-column:2;text-align:left}
}

@media(max-width:420px){
  .kpi-val{font-size:23px}
  .bar-row{grid-template-columns:80px 1fr 52px}
  .tags .tag{font-size:8.5px;padding:4px 7px}
}

/* --- GIRE O CELULAR -------------------------------------------------------
   Tabela larga em retrato nao e leitura, e sofrimento. O aviso aparece so
   em viewport estreita EM RETRATO, some em paisagem, no print e no desktop.
   O retangulo gira 90 de tempos em tempos — instrucao, nao decoracao.       */
.gire{display:none}
@media(max-width:780px) and (orientation:portrait){
  .gire{display:flex;align-items:center;gap:10px;border:var(--fio);
    background:var(--paper-2);padding:9px 12px;margin:0 0 8px;
    font-family:var(--fonte-mono);font-size:9.5px;letter-spacing:.14em;
    text-transform:uppercase;color:var(--ink-3)}
  .gire i{flex:none;width:18px;height:11px;border:1.5px solid var(--ink-2);
    border-radius:2px;animation:gire-rot 2.8s ease-in-out infinite}
}
@keyframes gire-rot{0%,30%{transform:rotate(0)}55%,100%{transform:rotate(90deg)}}
@media print{.gire{display:none}}
@media(prefers-reduced-motion:reduce){.gire i{animation:none;transform:rotate(90deg)}}

/* ==== css/impressao.css ==== */
/* --- IMPRESSÃO / PDF ------------------------------------------------------
   O report tem que sair em PDF sem ninguém arrumar nada. Regras:
   · controles, abas e chips desaparecem — filtro não existe no papel;
   · tabela solta a altura máxima e imprime inteira;
   · seções GRANDES podem quebrar (evitar quebra em <section> cria páginas
     meio vazias); só unidades pequenas ganham break-inside:avoid;
   · o grão de papel sai (vira cinza sujo na impressora).
   Para PDF com fonte correta, use a folha com @font-face embutido
   (tokens/fonts.css já é base64 — não depende de rede).
   ------------------------------------------------------------------------- */
@media print{
  @page{margin:12mm 10mm}
  body{background:#fff}
  body::before{display:none}
  .folha,.paper{max-width:none;padding:0}

  .controles,.controles-bloco,.controles-data,.controles-acoes,.fchips,.abas,.tema,.ctl,.no-print{display:none !important}
  .tabela-wrap{max-height:none !important;overflow:visible !important;border:none}
  .led thead th{position:static}

  section,.grupo{break-inside:auto}
  .fig,.kpis,.alerta,.risco-card,.opcao,.acao,.gl,.tp,.passo,tr,.split{break-inside:avoid}
  .secao{break-after:avoid}
  h1,h2,h3{break-after:avoid}

  .running-head{position:fixed;top:0;left:0;right:0;display:flex;justify-content:space-between;
    font-family:var(--fonte-mono);font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;
    color:#8A8C92;padding:6px 0;border-bottom:.5px solid #D6D6D2}

  a{color:inherit;border-bottom:none}
  .escuro-bloco{background:#141519 !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .bar-fill,.trilho-fill,.esc-fill,.mapa-cel,.microbar i{-webkit-print-color-adjust:exact;
    print-color-adjust:exact}
}
