/* ConduCodice · viz.css — grafiche animate comuni a sito e pannelli (card bento, misuratori, barre, linee, archi) */
:root{
  --viz-accent:#ffc21a; --viz-ink:#14110a; --viz-text:#ededef; --viz-muted:#8b9099; --viz-off:rgba(255,255,255,.09);
  --viz-card:#111216; --viz-card2:#16181d; --viz-line:rgba(255,255,255,.07); --viz-r:22px;
  --viz-display:"Inter Tight","Inter",system-ui,sans-serif; --viz-mono:"JetBrains Mono",ui-monospace,monospace;
  --viz-ease:cubic-bezier(.2,.8,.2,1);
}
/* Griglia bento */
.bento{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px}
.bento>*{grid-column:span 4;min-width:0}
.bento .s3{grid-column:span 3}.bento .s4{grid-column:span 4}.bento .s5{grid-column:span 5}.bento .s6{grid-column:span 6}.bento .s7{grid-column:span 7}.bento .s8{grid-column:span 8}.bento .s12{grid-column:span 12}
.bento .r2{grid-row:span 2}
@media (max-width:980px){.bento>*,.bento .s3,.bento .s4,.bento .s5{grid-column:span 6}.bento .s6,.bento .s7,.bento .s8,.bento .s12{grid-column:span 12}}
@media (max-width:620px){.bento>*,.bento .s3,.bento .s4,.bento .s5,.bento .s6{grid-column:span 12}.bento .r2{grid-row:auto}}

/* Card */
.bc{position:relative;border-radius:var(--viz-r);padding:22px 22px 20px;display:flex;flex-direction:column;gap:12px;min-width:0;
  background:radial-gradient(420px circle at var(--mx,-999px) var(--my,-999px),rgba(255,194,26,.07),transparent 45%),linear-gradient(180deg,var(--viz-card2),var(--viz-card));
  border:1px solid var(--viz-line);box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 24px 48px -32px rgba(0,0,0,.9);color:var(--viz-text);overflow:hidden;
  transition:transform .35s var(--viz-ease),border-color .35s,box-shadow .35s}
.bc:hover{border-color:rgba(255,255,255,.13);transform:translateY(-2px)}
.bc .bh{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.84rem;color:var(--viz-muted);font-weight:500}
.bc .bh .ic{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;background:rgba(255,255,255,.05);color:var(--viz-text);flex:0 0 auto}
.bc .bh .ic svg{width:16px;height:16px}
.bc .big{font-family:var(--viz-display);font-weight:600;font-size:clamp(2.1rem,3.6vw,3.1rem);line-height:1;letter-spacing:-.045em;font-variant-numeric:tabular-nums;color:var(--viz-text)}
.bc .big small{font-size:.42em;letter-spacing:-.01em;color:var(--viz-muted);font-weight:500;margin-left:.2em}
.bc .sub{font-size:.86rem;color:var(--viz-muted);line-height:1.45}
.bc .foot-row{margin-top:auto;display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:.8rem;color:var(--viz-muted);flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:.35rem;border-radius:99px;padding:.22rem .6rem;font-size:.74rem;font-weight:600;background:rgba(255,255,255,.06);color:var(--viz-text);white-space:nowrap}
.chip.up{background:rgba(58,210,127,.12);color:#5fe39a}.chip.down{background:rgba(255,92,80,.12);color:#ff7a70}.chip.y{background:rgba(255,194,26,.14);color:var(--viz-accent)}
.bc .big small{display:inline}
.chip .dot,.chip span.dot{flex:0 0 auto;padding:0;border:0;margin:0;font-size:0;width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}
.seg-ctl{display:inline-flex;gap:2px;padding:3px;border-radius:99px;background:rgba(255,255,255,.05);font-size:.74rem}
.seg-ctl span{padding:.2rem .6rem;border-radius:99px;color:var(--viz-muted)}.seg-ctl span.on{background:rgba(255,255,255,.1);color:var(--viz-text)}

/* Card accento: piena di giallo, inchiostro scuro */
.bc.accent{background:radial-gradient(120% 90% at 0% 0%,#ffd75e 0%,#ffc21a 45%,#f2ab00 100%);color:var(--viz-ink);border-color:transparent;box-shadow:0 30px 60px -30px rgba(255,180,0,.45),inset 0 1px 0 rgba(255,255,255,.45)}
.bc.accent .bh,.bc.accent .sub,.bc.accent .foot-row,.bc.accent .big small{color:rgba(20,17,10,.68)}
.bc.accent .big{color:var(--viz-ink)}
.bc.accent .bh .ic{background:rgba(20,17,10,.1);color:var(--viz-ink)}
.bc.accent .chip{background:rgba(20,17,10,.1);color:var(--viz-ink)}
.bc.ink{background:linear-gradient(180deg,#1b1d23,#121317)}

/* Misuratore a barre sottili */
.viz-stripes{--viz-on:var(--viz-accent);display:flex;align-items:stretch;gap:3px;height:34px;width:100%}
.viz-stripes.sm{height:18px;gap:2px}
.viz-stripes i{flex:1;border-radius:2px;background:var(--viz-off);transform:scaleY(.55);transform-origin:bottom;transition:transform .5s var(--viz-ease),background .5s}
.viz-stripes.go i{transform:scaleY(1)}
.viz-stripes.go i.on{background:var(--viz-on)}
.bc.accent .viz-stripes{--viz-on:var(--viz-ink);--viz-off:rgba(20,17,10,.14)}

/* Barre a pillola */
.viz-pills{display:flex;align-items:flex-end;gap:8px;height:170px;width:100%}
.viz-pills .pb{flex:1;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;min-width:0;position:relative}
.viz-pills .pb i{display:block;width:100%;max-width:38px;height:0;flex:none;border-radius:99px;background:rgba(255,255,255,.12);transition:height 1s var(--viz-ease)}
/* altezza minima da pillola verticale (mai un pallino o una lineetta), poi proporzionale al valore */
.viz-pills.go .pb i{height:calc(44px + (100% - 84px) * var(--f,0))}
.viz-pills.go .pb.z i{height:6px}
.viz-pills .pb.hi i{background:var(--viz-accent)}
.bc.r2 .viz-pills{flex:1 1 auto;height:auto;min-height:190px}
.viz-pills .pb small{font-size:.68rem;color:var(--viz-muted);font-family:var(--viz-mono);white-space:nowrap}
.viz-pills .pv{font-size:.7rem;font-weight:600;color:var(--viz-text);opacity:0;transform:translateY(6px);transition:opacity .3s,transform .3s;white-space:nowrap}
.viz-pills.go .pv,.viz-pills .pb:hover .pv,.viz-pills .pb.hi .pv{opacity:1;transform:none}.viz-pills .pb:not(.hi) .pv{font-weight:500;opacity:.75}
.bc.accent .viz-pills .pb i{background:rgba(255,253,245,.92);box-shadow:0 8px 18px -10px rgba(80,50,0,.5)}
.bc.accent .viz-pills .pb.hi i{background:var(--viz-ink)}
.bc.accent .viz-pills .pb small,.bc.accent .viz-pills .pv{color:rgba(20,17,10,.7)}
.bc.accent .viz-pills .pb.hi .pv{color:var(--viz-ink)}

/* Linea con area */
.viz-spark{position:relative;height:90px;width:100%;color:var(--viz-accent)}
.viz-spark svg{width:100%;height:100%;display:block;overflow:visible}
.viz-spark .sl{transition:stroke-dashoffset 1.6s var(--viz-ease)}
.viz-spark .sa{opacity:0;transition:opacity 1s .5s}
.viz-spark.go .sl{stroke-dashoffset:0!important}.viz-spark.go .sa{opacity:1}
.viz-spark .sd{position:absolute;width:9px;height:9px;margin:-4.5px 0 0 -4.5px;border-radius:50%;background:currentColor;box-shadow:0 0 0 4px rgba(255,194,26,.18),0 0 14px currentColor;opacity:0;transition:opacity .3s 1.4s}
.viz-spark.go .sd{opacity:1}
.bc.accent .viz-spark{color:var(--viz-ink)}

/* Arco */
.viz-gauge{position:relative;width:100%;max-width:220px;margin:0 auto}
.viz-gauge svg{width:100%;display:block}
.viz-gauge .gt line{stroke:rgba(255,255,255,.18);stroke-width:1.2;stroke-linecap:round}
.viz-gauge .gb,.viz-gauge .gf{fill:none;stroke-width:11;stroke-linecap:round}
.viz-gauge .gb{stroke:var(--viz-off)}
.viz-gauge .gf{stroke:var(--viz-accent);stroke-dashoffset:var(--full);transition:stroke-dashoffset 1.6s var(--viz-ease);filter:drop-shadow(0 0 6px rgba(255,194,26,.35))}
.viz-gauge.go .gf{stroke-dashoffset:var(--off)}
.viz-gauge .gv{position:absolute;inset:0 0 6% 0;display:grid;place-content:center;text-align:center}
.viz-gauge .gv b{font-family:var(--viz-display);font-weight:600;font-size:clamp(1.7rem,3vw,2.3rem);letter-spacing:-.04em;line-height:1}
.viz-gauge .gv small{font-size:.72rem;color:var(--viz-muted);margin-top:4px}

/* Comparsa a cascata */
.js-viz .stagger>*{opacity:0;transform:translateY(18px);transition:opacity .7s var(--viz-ease),transform .7s var(--viz-ease)}
.js-viz .stagger.go>*{opacity:1;transform:none}
.stagger.go>*:nth-child(2){transition-delay:.07s}.stagger.go>*:nth-child(3){transition-delay:.14s}.stagger.go>*:nth-child(4){transition-delay:.21s}.stagger.go>*:nth-child(5){transition-delay:.28s}.stagger.go>*:nth-child(6){transition-delay:.35s}.stagger.go>*:nth-child(7){transition-delay:.42s}.stagger.go>*:nth-child(n+8){transition-delay:.49s}

@media (prefers-reduced-motion:reduce){
  .viz-stripes i,.viz-pills .pb i,.viz-spark .sl,.viz-spark .sa,.viz-spark .sd,.viz-gauge .gf,.stagger>*,.bc{transition:none!important}
}

/* intervalli tipo 4–6: trattino staccato dalle cifre */
.big .rng{display:inline-block;margin:0 .14em;letter-spacing:0;font-weight:400;opacity:.85;transform:translateY(-.03em)}
