/* ===== Catalog Performance — sistema visivo HUD =====
   Scala spazi: 4 / 8 / 12 / 16 / 24 / 32.  Testo: JetBrains Mono 12.5px.  Titoli e cifre: Orbitron.
   Colori: fondo blu-nero, ciano = struttura e dati, ambra = denaro, verde/rosso = variazioni. */
@font-face{font-family:"JetBrains Mono";src:url(/static/fonts/JetBrainsMono-Regular.woff2) format("woff2");font-weight:400}
@font-face{font-family:"JetBrains Mono";src:url(/static/fonts/JetBrainsMono-Medium.woff2) format("woff2");font-weight:500}
@font-face{font-family:"JetBrains Mono";src:url(/static/fonts/JetBrainsMono-Bold.woff2) format("woff2");font-weight:700}
@font-face{font-family:"Orbitron";src:url(/static/fonts/Orbitron.ttf) format("truetype");font-weight:400 900}
@font-face{font-family:"Rajdhani";src:url(/static/fonts/Rajdhani-Regular.ttf) format("truetype");font-weight:400}
@font-face{font-family:"Rajdhani";src:url(/static/fonts/Rajdhani-Medium.ttf) format("truetype");font-weight:500}
@font-face{font-family:"Rajdhani";src:url(/static/fonts/Rajdhani-SemiBold.ttf) format("truetype");font-weight:600}
:root{
  --bg:#060a10;--pan:#0b121b;--pan2:#0e1722;--linea:#182535;--linea2:#22344a;
  --t1:#e6f0f8;--t2:#9db0c3;--t3:#5f7489;
  --cy:#3ad4ff;--cy2:rgba(58,212,255,.14);--amb:#ffb347;--su:#31e3a3;--giu:#ff5d79;
  --mono:"Rajdhani","Orbitron",sans-serif;--code:"JetBrains Mono",ui-monospace,Menlo,monospace;--disp:"Orbitron","Rajdhani",sans-serif;
  --r:3px;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;
}
*{box-sizing:border-box}html{color-scheme:dark}
body{margin:0;color:var(--t1);font:500 14.5px/1.45 var(--mono);letter-spacing:.01em;-webkit-font-smoothing:antialiased;background:var(--bg) radial-gradient(1400px 700px at 20% -20%,rgba(58,212,255,.09),transparent 60%),radial-gradient(900px 500px at 110% 10%,rgba(255,179,71,.05),transparent 55%);background-attachment:fixed}
body:before{content:"";position:fixed;inset:0;pointer-events:none;background-image:linear-gradient(rgba(58,212,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(58,212,255,.03) 1px,transparent 1px);background-size:48px 48px;mask-image:linear-gradient(#000 0%,transparent 75%)}
a{color:var(--cy);text-decoration:none}a:hover{text-decoration:underline;text-decoration-color:rgba(58,212,255,.5)}
::selection{background:rgba(58,212,255,.3)}

/* ---- testata ---- */
header.top{display:flex;align-items:center;gap:var(--s5);padding:0 var(--s5);height:52px;border-bottom:1px solid var(--linea);background:rgba(6,10,16,.9);backdrop-filter:blur(10px);position:sticky;top:0;z-index:10}
header.top .logo{font-family:var(--disp);font-weight:700;font-size:12px;color:var(--cy);letter-spacing:.2em;white-space:nowrap;display:flex;align-items:center;gap:10px}
header.top .logo i{display:inline-block;width:9px;height:9px;background:var(--cy);transform:rotate(45deg);box-shadow:0 0 12px var(--cy)}
header.top .logo small{font-family:var(--mono);font-weight:600;letter-spacing:.12em;color:var(--t3);font-size:12px}
header.top nav{display:flex;gap:2px;height:100%}
header.top nav a{display:flex;align-items:center;padding:0 12px;color:var(--t3);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;border-bottom:2px solid transparent;font-family:var(--disp);font-weight:500}
header.top nav a.attivo{color:var(--cy);border-bottom-color:var(--cy)}header.top nav a:hover{color:var(--t1);text-decoration:none}
header.top .destra{margin-left:auto;display:flex;gap:var(--s3);align-items:center;color:var(--t3);font-size:13px}
header.top .destra .chipmini{padding:3px 10px;border:1px solid var(--linea2);border-radius:var(--r);color:var(--t2);background:var(--pan);white-space:nowrap}
header.top .destra .chipmini.alert{color:var(--amb);border-color:rgba(255,179,71,.45)}
@media(max-width:1000px){header.top{height:auto;flex-wrap:wrap;padding:8px 12px;gap:8px}header.top nav{flex-wrap:wrap;height:auto}header.top nav a{padding:6px 8px;border-bottom-width:1px}}

main{padding:var(--s5);max-width:1680px;margin:0 auto}
h1{font-family:var(--disp);font-size:14px;margin:0 0 var(--s4);font-weight:600;letter-spacing:.1em;color:var(--t1)}
h1 .muto,h2 .muto{font-family:var(--mono);letter-spacing:.01em;text-transform:none;font-weight:500;font-size:13px;color:var(--t3)}
h2{display:flex;align-items:center;gap:var(--s3);font-family:var(--disp);font-size:10px;margin:var(--s6) 0 var(--s3);color:var(--t2);text-transform:uppercase;letter-spacing:.2em;font-weight:500}
h2:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--linea2),transparent)}
h2 .muto{letter-spacing:0}
.muto{color:var(--t3)}.su{color:var(--su)}.giu{color:var(--giu)}.neutro{color:var(--t3)}.acc{color:var(--amb)}.cy{color:var(--cy)}.ok{color:var(--su)}.errore{color:var(--giu)}

/* ---- pannelli ---- */
.kpi,.box,.scroll{background:linear-gradient(180deg,var(--pan2),var(--pan));border:1px solid var(--linea);border-radius:var(--r);position:relative}
.kpi:before,.kpi:after,.box:before,.box:after{content:"";position:absolute;width:12px;height:12px;border:1px solid rgba(58,212,255,.6);pointer-events:none}
.kpi:before,.box:before{top:-1px;left:-1px;border-width:1px 0 0 1px}.kpi:after,.box:after{bottom:-1px;right:-1px;border-width:0 1px 1px 0}
.kpi{padding:var(--s4) var(--s4) var(--s3);display:flex;flex-direction:column;min-height:132px}
.kpi .t{font-family:var(--disp);color:var(--cy);font-size:9.5px;text-transform:uppercase;letter-spacing:.2em;font-weight:500;line-height:1.3}
.kpi .d{color:var(--t3);font-size:13px;margin-top:3px;min-height:16px}
.kpi .v{font-family:var(--disp);font-size:30px;font-weight:700;margin:auto 0 var(--s1);color:#f4f9ff;letter-spacing:.02em;line-height:1.05;font-variant-numeric:tabular-nums}
.kpi .v.acc{color:var(--amb)}
.kpi .v small{font-family:var(--mono);font-size:13px;color:var(--t3);font-weight:500;margin-left:8px;letter-spacing:.02em}
.kpi .s{font-size:13px;color:var(--t3);line-height:1.6}.kpi .s b,.kpi .d b{font-family:var(--disp);font-weight:600;color:var(--t2)}
.kpi.hero{border-color:rgba(58,212,255,.5);background:linear-gradient(180deg,rgba(58,212,255,.09),var(--pan) 70%);box-shadow:0 0 0 1px rgba(58,212,255,.08),0 0 40px rgba(58,212,255,.10)}
.kpi.hero .v{font-size:56px;text-shadow:0 0 28px rgba(58,212,255,.45)}
.kpi.hero .d{color:var(--t2)}
.kpi.grafico{padding-bottom:var(--s2)}.kpi.grafico canvas{height:160px!important;width:100%!important;margin-top:var(--s1)}
.hud{display:grid;grid-template-columns:1.8fr 1fr 1fr;gap:var(--s3);margin-bottom:var(--s3)}
.hud2{display:grid;grid-template-columns:2fr 1fr 1fr;gap:var(--s3)}
@media(min-width:1500px){.hud{grid-template-columns:2fr 1fr 1fr}.hud2{grid-template-columns:2fr 1fr 1fr}}
@media(max-width:760px){.hud,.hud2{grid-template-columns:1fr 1fr}.kpi.hero{grid-column:1/-1}.kpi.hero .v{font-size:40px}main{padding:var(--s3)}}

/* ---- variazioni ---- */
.delta{display:inline-block;padding:2px 7px;border-radius:2px;font-weight:600;font-size:10.5px;font-family:var(--disp);letter-spacing:.02em;font-variant-numeric:tabular-nums;line-height:1.3}
.delta.su{background:rgba(49,227,163,.12);color:var(--su)}.delta.giu{background:rgba(255,93,121,.12);color:var(--giu)}.delta.neutro{background:rgba(95,116,137,.15);color:var(--t2)}

/* ---- tabelle ---- */
.scroll{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:14px;white-space:nowrap}
th,td{padding:8px 12px;border-bottom:1px solid var(--linea);text-align:left;vertical-align:middle;height:34px}
th{background:rgba(9,15,23,.98);color:var(--t3);font-weight:500;position:sticky;top:0;font-size:9.5px;text-transform:uppercase;letter-spacing:.14em;font-family:var(--disp);white-space:normal;line-height:1.3;vertical-align:bottom}
th a{color:var(--t3)}th a.attivo{color:var(--cy)}
tbody tr:nth-child(even) td{background:rgba(255,255,255,.012)}
tr:hover td{background:rgba(58,212,255,.05)}
td.n,th.n{text-align:right}td.n{font-family:var(--disp);font-size:11.5px;font-weight:500;letter-spacing:.01em;font-variant-numeric:tabular-nums}
td.n .muto,td .muto{font-family:var(--mono)}
td:first-child{color:var(--t2)}td b{color:var(--t1)}
tr.tot td{border-top:1px solid var(--linea2);background:rgba(255,179,71,.05);font-weight:700}
.spark polyline{fill:none;stroke:var(--cy);stroke-width:1.3}.spark polygon{fill:rgba(58,212,255,.13)}

/* ---- etichette ---- */
.pill{display:inline-block;padding:1px 8px;border:1px solid var(--linea2);border-radius:2px;font-size:10px;color:var(--t2);background:rgba(255,255,255,.02);letter-spacing:.06em;text-transform:uppercase;font-family:var(--disp);font-weight:500}
.pill.ok{color:var(--su);border-color:rgba(49,227,163,.35)}.pill.warn{color:var(--amb);border-color:rgba(255,179,71,.4)}.pill.err{color:var(--giu);border-color:rgba(255,93,121,.4)}
.info{display:inline-block;width:14px;height:14px;line-height:12px;text-align:center;border:1px solid var(--linea2);border-radius:50%;color:var(--t3);font-size:10px;cursor:help;margin-left:4px;vertical-align:middle;font-family:var(--disp)}

/* ---- controlli ---- */
.barra{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s3);align-items:center;margin:0 0 var(--s3)}
form.inline{display:inline}
input,select,button,textarea{font:inherit;font-weight:500;background:var(--pan2);color:var(--t1);border:1px solid var(--linea2);padding:6px 10px;border-radius:var(--r);height:32px}
textarea{height:auto}input[type=file]{padding:4px}input[type=date]{color-scheme:dark}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--cy);box-shadow:0 0 0 2px var(--cy2)}
button,.btn{cursor:pointer;display:inline-flex;align-items:center;gap:6px;background:rgba(58,212,255,.06);color:var(--cy);border:1px solid rgba(58,212,255,.3);font-family:var(--disp);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:0 12px;height:32px;border-radius:var(--r);font-weight:500;white-space:nowrap}
button:hover,.btn:hover{background:rgba(58,212,255,.14);text-decoration:none;box-shadow:0 0 12px rgba(58,212,255,.2)}
button.primario{background:var(--amb);color:#1a1200;border-color:var(--amb);font-weight:700;box-shadow:0 0 16px rgba(255,179,71,.3)}
button.mini,.btn.mini{height:24px;padding:0 8px;font-size:9px}
.btn.on{background:rgba(255,179,71,.12);color:var(--amb);border-color:rgba(255,179,71,.55)}
.gruppo{display:inline-flex;border:1px solid var(--linea2);border-radius:var(--r);overflow:hidden}
.gruppo .btn,.gruppo button{border:0;border-radius:0;border-right:1px solid var(--linea2);height:30px}.gruppo .btn:last-child,.gruppo button:last-child{border-right:0}
label{color:var(--t3);font-size:13px;display:inline-flex;align-items:center;gap:6px}

/* ---- box e sezioni ---- */
.box{padding:var(--s4);margin-bottom:var(--s3)}
.box h2{margin-top:0}
.segnali{border-color:rgba(255,179,71,.35)}
.segnali ul{list-style:none;margin:0;padding:0}.segnali li{display:grid;grid-template-columns:84px 1fr auto auto;gap:var(--s3);align-items:center;padding:8px 0;border-bottom:1px dashed var(--linea)}
.segnali li:last-child{border:0;padding-bottom:0}
.segnali li .delta{text-align:center}
.radar{border-color:rgba(49,227,163,.4)}
.chip{display:inline-flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid rgba(49,227,163,.3);border-radius:var(--r);background:rgba(255,255,255,.015);margin:0 var(--s2) var(--s2) 0;font-size:13.5px;color:var(--t1)}
.chip:hover{text-decoration:none;box-shadow:0 0 12px rgba(49,227,163,.25)}
.chip .mult{font-family:var(--disp);font-weight:700;font-size:13px;color:var(--su);min-width:64px}
.chip .tipo{font-family:var(--disp);font-size:9px;letter-spacing:.14em;text-transform:uppercase;padding:2px 7px;border:1px solid rgba(49,227,163,.4);border-radius:2px;color:var(--su)}
.chip.picco .mult,.chip.picco .tipo{color:var(--amb);border-color:rgba(255,179,71,.4)}
.chip.decollo .mult,.chip.decollo .tipo{color:var(--cy);border-color:rgba(58,212,255,.4)}
.avviso{background:rgba(255,179,71,.07);border:1px solid rgba(255,179,71,.35);padding:var(--s2) var(--s3);margin:var(--s2) 0;color:var(--amb);border-radius:var(--r)}
code,pre{font-family:var(--code);background:var(--pan2);padding:1px 5px;border-radius:2px;font-size:11.5px;color:var(--t2)}
pre{padding:var(--s3);overflow-x:auto}
.due{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3)}@media(max-width:800px){.due{grid-template-columns:1fr}}
.griglia{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--s3);margin-bottom:var(--s3)}
.login{max-width:380px;margin:18vh auto;padding:var(--s6)}
.login input{width:100%;margin:var(--s3) 0}
dl{display:grid;grid-template-columns:max-content 1fr;gap:var(--s1) var(--s4);margin:0}dt{color:var(--t3)}dd{margin:0}
canvas{max-width:100%}
.quota{display:inline-block;height:6px;background:linear-gradient(90deg,var(--cy),rgba(58,212,255,.25));vertical-align:middle;margin-right:8px;border-radius:1px}
.anello{position:relative;width:118px;height:118px;margin:var(--s2) auto 0}
.anello svg{transform:rotate(-90deg)}.anello .c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--disp);font-size:15px;font-weight:700;color:#f4f9ff}
.anello .c small{font-family:var(--mono);font-size:11px;color:var(--t3);font-weight:500}
.legenda{display:flex;flex-direction:column;gap:3px;font-size:13px;margin-top:var(--s2);color:var(--t2)}.legenda span i{display:inline-block;width:8px;height:8px;margin-right:8px;border-radius:1px;vertical-align:middle}
.legenda b{font-family:var(--disp);font-weight:600;color:var(--t1)}
.contratti-form{flex-wrap:nowrap!important;gap:4px!important;margin:0!important}.contratti-form select,.contratti-form input{height:26px;padding:0 6px;font-size:11px}
.nota{color:var(--t3);font-size:13px;margin:var(--s2) 0 0}
.carica{display:grid;grid-template-columns:1fr 280px;gap:var(--s3)}@media(max-width:800px){.carica{grid-template-columns:1fr}}
.carica textarea{width:100%;min-height:96px;resize:vertical}
.carica .campi{display:flex;flex-direction:column;gap:var(--s2)}

/* ---- blocchi gemelli del cockpit ---- */
.blocco{display:grid;grid-template-columns:200px repeat(3,1fr);gap:var(--s3);margin-bottom:var(--s3)}
.blocco .eti{display:flex;flex-direction:column;justify-content:center;padding:var(--s4);border-right:1px solid var(--linea2)}
.blocco .eti .t{font-family:var(--disp);color:var(--cy);font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:600;line-height:1.5}
.blocco .eti .d{color:var(--t3);font-size:12.5px;margin-top:var(--s2)}
.slot{background:linear-gradient(180deg,var(--pan2),var(--pan));border:1px solid var(--linea);border-radius:var(--r);position:relative;padding:var(--s4) var(--s4) var(--s3);display:flex;flex-direction:column;min-height:136px}
.slot:before,.slot:after{content:"";position:absolute;width:12px;height:12px;border:1px solid rgba(58,212,255,.6);pointer-events:none}
.slot:before{top:-1px;left:-1px;border-width:1px 0 0 1px}.slot:after{bottom:-1px;right:-1px;border-width:0 1px 1px 0}
.slot .t{font-family:var(--disp);color:var(--cy);font-size:9.5px;text-transform:uppercase;letter-spacing:.2em;font-weight:500}
.slot .d{color:var(--t3);font-size:12.5px;margin-top:3px;min-height:16px}
.slot .v{font-family:var(--disp);font-size:34px;font-weight:700;margin:auto 0 var(--s1);color:#f4f9ff;letter-spacing:.02em;line-height:1.05;font-variant-numeric:tabular-nums}
.slot .s{font-size:12.5px;color:var(--t3);line-height:1.6}
.slot.hero{border-color:rgba(58,212,255,.5);background:linear-gradient(180deg,rgba(58,212,255,.09),var(--pan) 70%);box-shadow:0 0 0 1px rgba(58,212,255,.08),0 0 40px rgba(58,212,255,.10)}
.slot.hero .v{font-size:48px;text-shadow:0 0 28px rgba(58,212,255,.45)}
.kpi.grafico.largo{margin-bottom:var(--s3);min-height:0}.kpi.grafico.largo canvas{height:260px!important}
@media(max-width:1000px){.blocco{grid-template-columns:1fr 1fr}.blocco .eti{grid-column:1/-1;border-right:0;border-bottom:1px solid var(--linea2);padding:var(--s2) 0}.slot.hero{grid-column:1/-1}}

.chip .tipo.social{color:#e879f9;border-color:rgba(232,121,249,.45)}

/* ---- torte e legende ---- */
.slot.torta{display:grid;grid-template-columns:auto 1fr;gap:var(--s4);align-items:center;min-height:0}
.slot.torta .t{grid-column:1/-1}
.tortawrap{width:220px;height:220px}.tortawrap.piccola{width:180px;height:180px}
.legtab{font-size:13px}.legtab th,.legtab td{padding:5px 10px;height:auto}.legtab thead th{position:static}
.logo{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:4px;object-fit:contain;background:#fff;vertical-align:middle}
.logo.sigla{font-family:var(--disp);font-weight:700;font-size:11px;color:#06101a;letter-spacing:.05em}
ul.leg{list-style:none;margin:0;padding:0;font-size:13px}ul.leg li{display:grid;grid-template-columns:10px 1fr auto auto;gap:10px;align-items:center;padding:3px 0;border-bottom:1px dashed var(--linea)}
ul.leg li:last-child{border:0}ul.leg li i{width:10px;height:10px;border-radius:2px;display:inline-block}ul.leg li b{font-family:var(--disp);font-size:12px}
.segtab td.perche{white-space:normal;max-width:620px;line-height:1.45}
@media(max-width:1000px){.slot.torta{grid-template-columns:1fr}.tortawrap{margin:0 auto}}
