/* VIZ — o cromo dos gráficos e a coreografia das cenas. 12/09/2026.
   Depende de tokens-cin.css (--cin-red, --ink-*, --surface-*, --font-*).

   Rampas ORDINAIS validadas por scripts/validate_palette.js (OKLab):
   um tom (o vermelho CIn), claro→escuro, passos >= .06 de L, ponta clara
   >= 2:1 sobre a superfície. Não alterar sem revalidar. */
:root{
  --ord-1:#e3928c; --ord-2:#dc6d69; --ord-3:#d34445; --ord-4:#c40022; --ord-5:#a20014;
  --acento:var(--cin-red); --acento-forte:var(--cin-red-deep);
  --papel:var(--canvas); --papel-2:var(--surface-soft); --fio:var(--hairline);
  --tinta:var(--ink-800); --tinta-2:var(--ink-600); --tinta-3:var(--ink-400); --tinta-4:var(--ink-300);
  --grao:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .06 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}
@media (prefers-color-scheme: dark){ :root:not([data-tema="claro"]){
  --ord-1:#ffbdb8; --ord-2:#f69b95; --ord-3:#e97873; --ord-4:#da5351; --ord-5:#c52a33;
  --acento:var(--brand-lift); --acento-forte:#ff8a84;
  --papel:var(--ink-900); --papel-2:#1d1715; --fio:#2c2523;
  --tinta:#f1ecea; --tinta-2:#cfc7c4; --tinta-3:#9a908d; --tinta-4:#6f6663; }}
:root[data-tema="escuro"]{
  --ord-1:#ffbdb8; --ord-2:#f69b95; --ord-3:#e97873; --ord-4:#da5351; --ord-5:#c52a33;
  --acento:var(--brand-lift); --acento-forte:#ff8a84;
  --papel:var(--ink-900); --papel-2:#1d1715; --fio:#2c2523;
  --tinta:#f1ecea; --tinta-2:#cfc7c4; --tinta-3:#9a908d; --tinta-4:#6f6663; }

html{scroll-behavior:smooth}
body{margin:0; background:var(--papel); color:var(--tinta); font-family:var(--font-text); -webkit-font-smoothing:antialiased; position:relative}
body::before{content:""; position:fixed; inset:0; background:var(--grao); pointer-events:none; z-index:0; opacity:.5; mix-blend-mode:multiply}
:root[data-tema="escuro"] body::before{mix-blend-mode:screen; opacity:.25}
.viz-prog{position:fixed; top:0; left:0; height:2px; width:0; background:var(--acento); z-index:50; transition:width .15s linear}

/* ---- tipografia editorial ---- */
.kick{font:500 clamp(.72rem,.7rem + .1vw,.8rem)/1.3 var(--font-mono); letter-spacing:.06em; text-transform:uppercase; color:var(--acento); margin:0 0 .6rem}
.kick::before{content:""; display:inline-block; width:22px; height:1.5px; background:var(--acento); vertical-align:middle; margin-right:.6rem}
h1.titulo,h2.titulo{font:700 clamp(1.9rem,1.2rem + 2.6vw,3.6rem)/1.02 var(--font-display); letter-spacing:-.03em; margin:0 0 .9rem; text-wrap:balance}
h2.titulo{font-size:clamp(1.6rem,1.1rem + 2vw,2.9rem)}
.titulo em{font-style:normal; color:var(--acento)}
.lide{font:400 clamp(1rem,.95rem + .3vw,1.2rem)/1.5 var(--font-text); color:var(--tinta-2); max-width:62ch; margin:0 0 1.4rem; text-wrap:pretty}
.edai{font:400 clamp(.95rem,.9rem + .2vw,1.05rem)/1.5 var(--font-text); color:var(--tinta); border-left:2px solid var(--acento); padding:.35rem 0 .35rem 1rem; margin:1.4rem 0 0; max-width:60ch}
.edai b{font-weight:600}
.nota{font:400 .8rem/1.5 var(--font-mono); color:var(--tinta-3); margin:.8rem 0 0}
.folio{display:flex; justify-content:space-between; font:400 .72rem/1 var(--font-mono); color:var(--tinta-3); border-top:1px solid var(--fio); padding-top:.7rem; margin-top:2.2rem}

/* cascata de palavras nos títulos (site-dinamico; padding para não clipar acento) */
.titulo .w{display:inline-block; overflow:hidden; vertical-align:bottom; padding-top:.14em; margin-top:-.14em}
.titulo .w i{display:inline-block; font-style:normal; transform:translateY(105%); transition:transform .75s cubic-bezier(.2,.7,.2,1)}
.cena.play .titulo .w i{transform:none}
.rv{opacity:0; transform:translateY(22px); transition:opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1)}
.cena.play .rv{opacity:1; transform:none}
.cena.play .rv[data-d="1"]{transition-delay:.12s}.cena.play .rv[data-d="2"]{transition-delay:.24s}.cena.play .rv[data-d="3"]{transition-delay:.36s}.cena.play .rv[data-d="4"]{transition-delay:.48s}
.cena{position:relative; z-index:1; padding:clamp(3rem,6vh,5.5rem) 0; border-top:1px solid var(--fio)}
.cena:first-of-type{border-top:0}
.in{width:min(1120px, 100% - 2rem); margin:0 auto}

/* ---- número-herói ---- */
.viz-hero{display:flex; align-items:baseline; gap:.15em; line-height:.9}
.viz-hero-v{font:700 clamp(4.2rem,3rem + 7vw,9rem)/.9 var(--font-display); letter-spacing:-.05em; color:var(--tinta); font-variant-numeric:proportional-nums}
.viz-hero.acento .viz-hero-v{color:var(--acento)}
.viz-hero-s{font:600 clamp(1.6rem,1.2rem + 2vw,3rem)/1 var(--font-display); color:var(--tinta-3)}
.viz-hero-l{font:600 clamp(1rem,.95rem + .3vw,1.25rem)/1.3 var(--font-display); margin-top:.5rem}
.viz-hero-sub{font:400 .78rem/1.5 var(--font-mono); color:var(--tinta-3); margin-top:.3rem}
.viz-stats{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:1.2rem 2rem; border-top:1px solid var(--fio); padding-top:1rem; margin-top:1.6rem}
.viz-stat b{display:block; font:700 clamp(1.5rem,1.2rem + 1.2vw,2.2rem)/1 var(--font-display); letter-spacing:-.03em}
.viz-stat span{display:block; font:400 .85rem/1.35 var(--font-text); color:var(--tinta-2); margin-top:.3rem}
.viz-stat small{display:block; font:400 .72rem/1.3 var(--font-mono); color:var(--tinta-3); margin-top:.15rem}

/* ---- enxame ---- */
.viz-waffle{width:100%; height:auto; display:block; max-height:52vh}
.viz-dot{transition:opacity .5s ease}
.viz-dot.aquem{fill:var(--tinta-4)} .viz-dot.alem{fill:var(--acento)}
.viz-fronteira{stroke:var(--acento); stroke-width:1.5; stroke-dasharray:3 4}
.viz-vazio{font:400 .85rem var(--font-mono); color:var(--tinta-3)}

/* ---- barras ---- */
.viz-bars{display:grid; gap:.55rem}
.viz-bar{display:grid; grid-template-columns:minmax(120px,26%) 1fr auto; gap:.3rem 1rem; align-items:center; transition:opacity .3s}
.viz-bar.apagada .viz-bar-f{background:var(--tinta-4)} .viz-bar.apagada{opacity:.72}
.viz-bar.destaque .viz-bar-l span{font-weight:600}
.viz-bar-l{font:400 .9rem/1.25 var(--font-text); color:var(--tinta)} .viz-bar-l small{display:block; font:400 .72rem var(--font-mono); color:var(--tinta-3)}
.viz-bar-t{position:relative; height:22px; background:var(--papel-2); border-radius:0 4px 4px 0; display:flex; align-items:center}
.viz-bar-f{height:100%; background:var(--acento); border-radius:0 4px 4px 0; transition:width 1s cubic-bezier(.2,.7,.2,1)}
.viz-bar-v{position:absolute; left:calc(var(--x,0%) + 8px); font:600 .85rem var(--font-display); color:var(--tinta); margin-left:.5rem; white-space:nowrap}
.viz-bar-t .viz-bar-f + .viz-bar-v{position:static; margin-left:.5rem}
.viz-bar-v.sup{color:var(--tinta-3); font-weight:400; font-family:var(--font-mono); font-size:.75rem}
.viz-bar-n{font:400 .72rem var(--font-mono); color:var(--tinta-3); white-space:nowrap}

/* ---- empilhada ---- */
.viz-stack{display:grid; gap:.6rem}
.viz-stack-r{display:grid; grid-template-columns:minmax(120px,26%) 1fr; gap:.3rem 1rem; align-items:center}
.viz-stack-l{font:400 .9rem/1.25 var(--font-text)} .viz-stack-l small{display:block; font:400 .72rem var(--font-mono); color:var(--tinta-3)}
.viz-stack-t{display:flex; height:26px; gap:2px}
.viz-seg{display:flex; align-items:center; justify-content:center; min-width:2px; transition:filter .2s; position:relative}
.viz-seg:first-child{border-radius:4px 0 0 4px} .viz-seg:last-child{border-radius:0 4px 4px 0}
.viz-seg b{font:600 .72rem var(--font-mono); color:#fff; mix-blend-mode:normal}
.viz-seg.foco{outline:2px solid var(--tinta); outline-offset:1px}
.viz-seg:hover{filter:brightness(1.08)}
.viz-leg{display:flex; flex-wrap:wrap; gap:.5rem 1.1rem; margin:.6rem 0 .9rem; font:400 .78rem var(--font-mono); color:var(--tinta-2)}
.viz-leg-i{display:inline-flex; align-items:center; gap:.4rem} .viz-leg i{width:14px; height:10px; border-radius:2px; display:inline-block} .viz-leg i.dot{width:10px; height:10px; border-radius:50%}
.viz-leg-seq{align-items:center; gap:.25rem} .viz-leg-seq i{width:22px; height:10px; border-radius:0} .viz-leg-seq span{margin:0 .4rem}

/* ---- halter ---- */
.viz-dumb{width:100%; height:auto; display:block; overflow:visible}
.viz-grid{stroke:var(--fio); stroke-width:1}
.viz-tick{font:400 10px var(--font-mono); fill:var(--tinta-3)}
.viz-lab{font:400 12px var(--font-text); fill:var(--tinta)} .viz-lab.forte{font-weight:600; font-family:var(--font-display); font-size:12.5px}
.viz-dumb-l{stroke:var(--tinta-4); stroke-width:2; stroke-linecap:round}
.viz-dumb-a{fill:var(--tinta); stroke:var(--papel); stroke-width:2} .viz-dumb-b{fill:var(--acento); stroke:var(--papel); stroke-width:2}
.viz-dumb-r{transition:opacity .3s}

/* ---- mapa de calor ---- */
.viz-heat-wrap{overflow-x:auto; -webkit-overflow-scrolling:touch}
.viz-heat{border-collapse:separate; border-spacing:2px; width:100%; min-width:560px}
.viz-heat th{font:400 .78rem/1.3 var(--font-text); color:var(--tinta-2); text-align:left; padding:.35rem .4rem; vertical-align:bottom}
.viz-heat thead th{text-align:center} .viz-heat thead th small{display:block; font:400 .68rem var(--font-mono); color:var(--tinta-3)}
.viz-heat-c0{width:34%; min-width:200px} .viz-heat-c0 b{font-weight:600; color:var(--tinta); display:block} .viz-heat-c0 small{display:block; font:400 .7rem/1.35 var(--font-mono); color:var(--tinta-3)}
.viz-heat td{height:40px; text-align:center; font:600 .8rem var(--font-mono); border-radius:3px; transition:transform .15s; cursor:default}
.viz-heat td.claro{color:#fff} .viz-heat td.escuro{color:var(--cin-black)}
.viz-heat td.sup{background:repeating-linear-gradient(135deg,var(--papel-2) 0 6px,transparent 6px 12px); color:var(--tinta-3); font-weight:400; font-size:.7rem}
.viz-heat td:hover,.viz-heat td:focus{transform:scale(1.06); outline:2px solid var(--tinta); outline-offset:-1px; z-index:1; position:relative}

/* ---- radar ---- */
.viz-radar{width:100%; max-width:420px; height:auto; display:block; margin:0 auto; overflow:visible}
.viz-radar-g{fill:none; stroke:var(--fio); stroke-width:1}
.viz-radar-m{fill:none; stroke:var(--tinta-3); stroke-width:1.5; stroke-dasharray:4 4}
.viz-radar-v{fill:var(--acento); fill-opacity:.14; stroke:var(--acento); stroke-width:2; stroke-linejoin:round; transition:transform 1s cubic-bezier(.2,.7,.2,1)}
line.viz-radar-v{fill:none}
.viz-radar-d{fill:var(--acento); stroke:var(--papel); stroke-width:2}

/* ---- múltiplos ---- */
.viz-mult{display:grid; grid-template-columns:repeat(var(--cols, auto-fit), minmax(170px,1fr)); gap:1.2rem 1.4rem}
.viz-mult-i{margin:0} .viz-mult-i figcaption{margin-top:.4rem; font:400 .85rem/1.3 var(--font-text)} .viz-mult-i figcaption b{display:block; font-weight:600} .viz-mult-i figcaption small{display:block; font:400 .7rem var(--font-mono); color:var(--tinta-3)}

/* ---- escada ---- */
.viz-escada{display:grid; grid-template-columns:repeat(5,1fr); gap:6px; align-items:end; height:220px; position:relative; padding-bottom:2.2rem}
.viz-deg{display:flex; flex-direction:column; justify-content:flex-end; height:100%; position:relative}
.viz-deg-c{height:var(--h); border-radius:4px 4px 0 0; display:flex; align-items:flex-start; justify-content:center; padding-top:.35rem; transition:height 1s cubic-bezier(.2,.7,.2,1)}
.viz-deg-c b{font:600 .78rem var(--font-mono); color:#fff}
.viz-deg-l{position:absolute; bottom:-1.7rem; left:0; right:0; text-align:center; font:400 .72rem var(--font-mono); color:var(--tinta-2)}
.viz-deg.voce .viz-deg-c{outline:3px solid var(--tinta); outline-offset:2px}
.viz-deg-v{position:absolute; top:-1.6rem; left:0; right:0; text-align:center; font:600 .8rem var(--font-display); color:var(--tinta); font-style:normal}
.viz-deg-v::after{content:"↓"; display:block; line-height:1}
.viz-deg.fronteira::before{content:""; position:absolute; left:-4px; top:-.5rem; bottom:-2.2rem; border-left:1.5px dashed var(--acento)}

/* ---- tabela gêmea ---- */
.viz-tab{margin-top:1rem; font:400 .8rem var(--font-text)} .viz-tab summary{cursor:pointer; color:var(--tinta-2); font-family:var(--font-mono); font-size:.75rem} .viz-tab table{border-collapse:collapse; margin-top:.6rem; width:100%} .viz-tab th,.viz-tab td{text-align:left; padding:.35rem .6rem; border-bottom:1px solid var(--fio); font-variant-numeric:tabular-nums} .viz-tab th{font-weight:600}

/* ---- tooltip ---- */
.viz-tip{position:fixed; z-index:100; pointer-events:none; background:var(--tinta); color:var(--papel); padding:.5rem .7rem; border-radius:6px; font:400 .78rem/1.35 var(--font-text); opacity:0; transform:translateY(4px); transition:opacity .12s, transform .12s; max-width:260px; box-shadow:0 6px 24px rgba(0,0,0,.18)}
.viz-tip.on{opacity:1; transform:none}
.viz-tip-r{display:flex; align-items:baseline; gap:.5rem} .viz-tip-r b{font-weight:700; font-family:var(--font-display); min-width:3ch} .viz-tip-r span{opacity:.8} .viz-tip-k{width:12px; height:3px; border-radius:2px; align-self:center; flex:none}

/* ---- estados honestos ---- */
.estado{border:1px solid var(--fio); border-left:3px solid var(--acento); padding:1rem 1.2rem; background:var(--papel-2); font:400 .95rem/1.5 var(--font-text); max-width:62ch}
.estado.quieto{border-left-color:var(--tinta-4)}
.estado b{font-weight:600}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation:none !important; transition:none !important}
  .rv,.titulo .w i{opacity:1; transform:none}
}
@media (max-width: 720px){
  .viz-mult{grid-template-columns:repeat(auto-fit,minmax(150px,1fr)) !important}
  .viz-bar{grid-template-columns:1fr; gap:.2rem} .viz-bar-n{justify-self:end}
  .viz-stack-r{grid-template-columns:1fr}
  .viz-escada{height:180px}
  .viz-hero-v{font-size:clamp(3.4rem,20vw,5.6rem)}
}
