/* =====================================================================
   AnalystPro — design system unico (26/09/2026), estratto dalla Overview v2.
   Regole: usare solo questi token e le classi ap-*; niente colori o stili sparsi nelle pagine.
   Componenti Jinja in templates/_componenti.html, comportamento in static/ap.js.
   ===================================================================== */

/* ---------- token ---------- */
:root{--ap-line:rgba(255,255,255,.07);
  --ap-bg:#060e20;
  --ap-text:#e8eeff; --ap-text2:#9aa9c9; --ap-text3:#5d6d91;
  /* zone cromatiche */
  --ap-sport:#2ee59d;      /* sport, esito positivo */
  --ap-casino:#ff9f43;     /* casino */
  --ap-primary:#4f8cff;    /* primario, totale, azioni */
  --ap-giocatori:#b69cff;  /* giocatori */
  --ap-rischio:#ff5c7a;    /* rischio, negativo, errore */
  --ap-attenzione:#ffc857; /* attenzione */
  --ap-neutro:#8b93ad;
  --ap-sport-rgb:46,229,157; --ap-casino-rgb:255,159,67; --ap-primary-rgb:79,140,255;
  --ap-giocatori-rgb:182,156,255; --ap-rischio-rgb:255,92,122; --ap-attenzione-rgb:255,200,87;
  /* superfici (vetro senza bordi) */
  --ap-glass:linear-gradient(150deg,rgba(24,36,66,.74),rgba(12,22,46,.58));
  --ap-glass-2:rgba(255,255,255,.045);
  --ap-glass-3:rgba(255,255,255,.08);
  --ap-shadow:0 12px 40px rgba(0,0,0,.38), inset 0 1px 0 rgba(255,255,255,.06);
  --ap-shadow-hover:0 26px 60px rgba(0,0,0,.5);
  /* forma e spazi */
  --ap-r:22px; --ap-r-sm:14px; --ap-r-xs:9px;
  --ap-gap:16px; --ap-pad:20px;
  --ap-side:244px;
  /* movimento */
  --ap-ease:cubic-bezier(.22,1,.36,1); --ap-spring:cubic-bezier(.34,1.56,.64,1);
  --ap-font:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;
  --ap-font-display:Manrope,Inter,system-ui,sans-serif;
  color-scheme:dark;
}

/* alias delle variabili del vecchio layout: gli stili in linea rimasti nelle pagine prendono la palette nuova */
body.ap{--bg:var(--ap-bg);--text:var(--ap-text);--text2:var(--ap-text2);--text3:var(--ap-text3);
  --green:var(--ap-sport);--amber:var(--ap-attenzione);--red:var(--ap-rischio);--blue:var(--ap-primary);--purple:var(--ap-giocatori);--orange:var(--ap-casino);
  --surface:rgba(14,26,56,.6);--surface2:rgba(255,255,255,.045);--surface3:rgba(255,255,255,.07);
  --border:rgba(255,255,255,.055);--border2:rgba(255,255,255,.09);
  --green-dim:rgba(var(--ap-sport-rgb),.1);--amber-dim:rgba(var(--ap-attenzione-rgb),.1);--red-dim:rgba(var(--ap-rischio-rgb),.1);
  --blue-dim:rgba(var(--ap-primary-rgb),.1);--purple-dim:rgba(var(--ap-giocatori-rgb),.1)}

/* ---------- base ---------- */
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body.ap{background:var(--ap-bg);color:var(--ap-text);font-family:var(--ap-font);font-size:14px;line-height:1.45;min-height:100vh;overflow-x:hidden;
  transition:opacity .22s ease,filter .22s ease,transform .22s ease}
body.ap.uscita{opacity:0;filter:blur(6px);transform:scale(.985)}
.ap a{color:inherit;text-decoration:none}
.ap button,.ap input,.ap select,.ap textarea{font-family:inherit}
.ap-num,.ap .num{font-family:var(--ap-font-display);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.ap-display{font-family:var(--ap-font-display);font-variant-numeric:tabular-nums;letter-spacing:-.035em}
.ap-eyebrow{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ap-text3)}
.ap-muted{color:var(--ap-text2)} .ap-dim{color:var(--ap-text3)}
.ap-c-sport{color:var(--ap-sport)} .ap-c-neutro{color:var(--ap-neutro)} .ap-c-casino{color:var(--ap-casino)} .ap-c-primary{color:var(--ap-primary)}
.ap-c-giocatori{color:var(--ap-giocatori)} .ap-c-rischio{color:var(--ap-rischio)} .ap-c-attenzione{color:var(--ap-attenzione)}
.ap-pos{color:var(--ap-sport)} .ap-neg{color:var(--ap-rischio)}

/* sfondo vivo (canvas disegnate da ap.js) */
#ap-aurora{position:fixed;inset:0;width:100vw;height:100vh;z-index:-2;pointer-events:none;opacity:.9}
#ap-particelle{position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.8}

/* ---------- struttura: menu laterale + area principale ---------- */
.ap-side{position:fixed;top:0;bottom:0;left:0;width:var(--ap-side);z-index:40;display:flex;flex-direction:column;
  background:linear-gradient(180deg,rgba(9,17,38,.92),rgba(6,14,32,.92));box-shadow:10px 0 40px rgba(0,0,0,.35);
  transition:transform .35s var(--ap-ease)}
.ap-brand{display:flex;align-items:center;gap:10px;padding:18px 18px 10px;font:800 17px var(--ap-font-display);letter-spacing:-.02em}
.ap-brand i{width:30px;height:30px;border-radius:10px;flex-shrink:0;background:conic-gradient(from 210deg,var(--ap-sport),var(--ap-primary),var(--ap-casino),var(--ap-sport));
  box-shadow:0 0 22px rgba(var(--ap-primary-rgb),.55);animation:ap-gira 1.4s var(--ap-spring) .2s both}
@keyframes ap-gira{from{transform:rotate(-180deg) scale(.4)}to{transform:none}}
.ap-brand button{margin-left:auto;background:none;border:0;color:var(--ap-text3);font-size:16px;cursor:pointer;padding:4px 6px;border-radius:8px}
.ap-brand button:hover{color:var(--ap-text);background:var(--ap-glass-2)}
.ap-nav{flex:1;overflow-y:auto;padding:6px 10px 12px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.08) transparent}
.ap-nav-sez{font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ap-text3);padding:14px 10px 6px}
.ap-nav a{position:relative;display:flex;align-items:center;gap:10px;padding:8px 10px;margin:1px 0;border-radius:11px;font-size:13px;color:var(--ap-text2);
  transition:background .25s var(--ap-ease),color .25s var(--ap-ease),transform .25s var(--ap-ease)}
.ap-nav a .ic{width:20px;text-align:center;flex-shrink:0}
.ap-nav a:hover{background:var(--ap-glass-2);color:var(--ap-text);transform:translateX(2px)}
.ap-nav a.attiva{background:linear-gradient(90deg,rgba(var(--ap-primary-rgb),.22),rgba(var(--ap-primary-rgb),.05));color:#fff;font-weight:600;
  box-shadow:inset 0 0 0 1px rgba(var(--ap-primary-rgb),.18),0 6px 20px -8px rgba(var(--ap-primary-rgb),.6)}
.ap-nav a.attiva::before{content:"";position:absolute;left:-10px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--ap-primary);box-shadow:0 0 12px var(--ap-primary)}
.ap-nav .nuovo{margin-left:auto;font-size:9px;padding:1px 6px;border-radius:8px;background:rgba(var(--ap-primary-rgb),.18);color:#9fc0ff}
.ap-viewas{padding:6px 10px 2px;position:relative}
.ap-viewas input{width:100%;background:var(--ap-glass-2);border:0;border-radius:10px;padding:8px 10px;color:var(--ap-text);font-size:12px;outline:none}
.ap-viewas input:focus{box-shadow:0 0 0 2px rgba(var(--ap-primary-rgb),.4)}
.ap-viewas .dd{display:none;position:absolute;left:10px;right:10px;top:100%;margin-top:4px;max-height:240px;overflow-y:auto;z-index:60;
  background:#0c1834;border-radius:12px;box-shadow:0 18px 40px rgba(0,0,0,.55)}
.ap-viewas .dd div{padding:7px 10px;font-size:12px;color:var(--ap-text2);cursor:pointer}
.ap-viewas .dd div:hover{background:var(--ap-glass-3);color:var(--ap-text)}
.ap-side-foot{padding:12px 14px 16px}
.ap-user{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.ap-user .av{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font:800 13px var(--ap-font-display);
  background:linear-gradient(135deg,var(--ap-primary),var(--ap-giocatori));color:#fff}
.ap-user b{display:block;font-size:13px}.ap-user span{font-size:11px;color:var(--ap-text3)}
.ap-user-az{display:flex;gap:6px}
.ap-user-az a{flex:1;text-align:center;font-size:11px;font-weight:600;padding:7px;border-radius:10px;background:var(--ap-glass-2);color:var(--ap-text2);transition:all .2s}
.ap-user-az a:hover{background:var(--ap-glass-3);color:var(--ap-text)}
.ap-user-az a.esci{color:var(--ap-rischio);background:rgba(var(--ap-rischio-rgb),.08)}
.ap-user-az a.esci:hover{background:rgba(var(--ap-rischio-rgb),.16)}

.ap-main{margin-left:var(--ap-side);min-height:100vh;display:flex;flex-direction:column;transition:margin-left .35s var(--ap-ease)}
body.ap.side-chiuso .ap-side{transform:translateX(-100%)}
body.ap.side-chiuso .ap-main{margin-left:0}
.ap-content{flex:1;width:100%;max-width:none;margin:0;padding:18px clamp(14px,2.2vw,44px) 40px}  /* fluido: tutta la larghezza */
.ap-foot{text-align:center;font-size:10.5px;color:var(--ap-text3);padding:14px 20px 18px}
.ap-foot strong{color:var(--ap-text2)}

/* barra superiore (filtri globali) */
.ap-top{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px clamp(14px,2.6vw,34px);
  background:rgba(6,14,32,.72);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);box-shadow:0 10px 30px rgba(0,0,0,.25)}
.ap-burger{display:none;background:var(--ap-glass-2);border:0;color:var(--ap-text);width:36px;height:36px;border-radius:11px;font-size:17px;cursor:pointer}
.ap-apri-menu{display:none}
body.ap.side-chiuso .ap-apri-menu{display:inline-grid;place-items:center}
.ap-live{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ap-text2);padding:6px 10px;border-radius:99px;background:var(--ap-glass-2)}
.ap-live b{position:relative;width:7px;height:7px;border-radius:50%;background:var(--ap-sport)}
.ap-live b::after{content:"";position:absolute;inset:0;border-radius:50%;background:inherit;animation:ap-anello 2s ease-out infinite}
@keyframes ap-anello{from{transform:scale(1);opacity:.7}to{transform:scale(3.2);opacity:0}}
.ap-filtri{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-left:auto}
.ap-periodo{display:flex;align-items:center;gap:6px;padding:3px 3px 3px 10px;border-radius:12px;background:var(--ap-glass-2)}
.ap-periodo input{background:transparent;border:0;color:var(--ap-text);font:500 12px var(--ap-font);color-scheme:dark;width:118px;outline:none}
.ap-periodo button,.ap-periodo .x{border:0;border-radius:9px;padding:6px 10px;font:600 12px var(--ap-font);cursor:pointer;background:rgba(var(--ap-primary-rgb),.25);color:#cfe0ff}
.ap-periodo .x{background:rgba(var(--ap-attenzione-rgb),.15);color:var(--ap-attenzione)}
.ap-viewas-pill{font-size:11px;color:var(--ap-attenzione);padding:6px 10px;border-radius:99px;background:rgba(var(--ap-attenzione-rgb),.1)}
.ap-viewas-pill a{margin-left:6px;font-weight:700}
.ap-banner{display:flex;justify-content:center;gap:14px;align-items:center;padding:8px 16px;font-size:12px;color:var(--ap-attenzione);
  background:linear-gradient(90deg,rgba(var(--ap-attenzione-rgb),.14),rgba(var(--ap-attenzione-rgb),.05))}
.ap-banner a{font-weight:700;text-decoration:underline}

/* selettore a segmenti con pillola animata */
.ap-seg{position:relative;display:inline-flex;padding:3px;border-radius:12px;background:var(--ap-glass-2);gap:2px}
.ap-seg a,.ap-seg button{position:relative;z-index:1;padding:6px 11px;border-radius:9px;font:500 12px var(--ap-font);color:var(--ap-text2);white-space:nowrap;
  background:none;border:0;cursor:pointer;transition:color .3s var(--ap-ease)}
.ap-seg a:hover,.ap-seg button:hover{color:var(--ap-text)}
.ap-seg .on{color:var(--ap-text)}
.ap-seg .pill{position:absolute;z-index:0;top:3px;bottom:3px;border-radius:9px;background:var(--ap-glass-3);box-shadow:0 2px 12px rgba(0,0,0,.35);
  transition:left .45s var(--ap-spring),width .45s var(--ap-spring),background .3s}

/* intestazione di pagina */
.ap-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:8px 0 18px}
.ap-head h1{font:800 clamp(24px,2.6vw,32px) var(--ap-font-display);letter-spacing:-.03em;line-height:1.1}
.ap-head .sub{font-size:12.5px;color:var(--ap-text2);margin-top:6px}
.ap-head .sub a{color:#9fc0ff}
.ap-head .az{display:flex;gap:8px;flex-wrap:wrap}

/* ---------- card in vetro: ingresso a cascata, hover, tilt ---------- */
.ap-grid{display:grid;gap:var(--ap-gap);perspective:1400px}
.ap-g2{grid-template-columns:repeat(2,minmax(0,1fr))} .ap-g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ap-g4{grid-template-columns:repeat(4,minmax(0,1fr))} .ap-gauto{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
/* griglie bilanciate (ap.js): colonne calcolate perche' le righe abbiano lo stesso numero di riquadri, mai un orfano */
.ap-bil{grid-template-columns:repeat(var(--col,4),minmax(0,1fr))!important}
.ap-card{position:relative;background:var(--ap-glass);border-radius:var(--ap-r);box-shadow:var(--ap-shadow);padding:var(--ap-pad);overflow:hidden;
  opacity:0;transform:translate3d(0,40px,0) rotateX(9deg) scale(.96);
  transition:opacity .85s var(--ap-ease),transform 1.05s var(--ap-spring),box-shadow .45s var(--ap-ease);transition-delay:calc(var(--i,0)*55ms)}
.ap-card.in{opacity:1;transform:none}
.ap-card.pronta{transition:transform .25s ease-out,box-shadow .45s var(--ap-ease);transition-delay:0s}
.ap-card::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .45s var(--ap-ease);
  background:radial-gradient(130% 90% at var(--mx,50%) var(--my,0%),rgba(255,255,255,.1),transparent 55%)}
.ap-card::after{content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;opacity:0;
  background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.08) 45%,transparent 60%);background-size:250% 100%}
.ap-card.in::after{animation:ap-luce 1.6s var(--ap-ease) calc(var(--i,0)*55ms + .35s) 1 both}
@keyframes ap-luce{0%{opacity:1;background-position:120% 0}100%{opacity:0;background-position:-120% 0}}
@media (hover:hover){
  .ap-card.pronta:hover{box-shadow:var(--ap-shadow-hover),0 0 50px -8px var(--glow,rgba(var(--ap-primary-rgb),.45))}
  .ap-card.pronta:hover::before{opacity:1}
}
.ap-card.tabella{padding:0}                    /* card che contiene una tabella: niente tilt (ap.js) */
.ap-card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:16px var(--ap-pad) 12px}
.ap-card-h h2,.ap-card h2{font:700 15px var(--ap-font-display);letter-spacing:-.01em}
.ap-card-h .hint,.ap-card .hint{font-size:11.5px;color:var(--ap-text3);font-weight:400}
.z-sport{--glow:rgba(var(--ap-sport-rgb),.5)} .z-casino{--glow:rgba(var(--ap-casino-rgb),.5)} .z-primary{--glow:rgba(var(--ap-primary-rgb),.55)}
.z-giocatori{--glow:rgba(var(--ap-giocatori-rgb),.5)} .z-rischio{--glow:rgba(var(--ap-rischio-rgb),.5)} .z-attenzione{--glow:rgba(var(--ap-attenzione-rgb),.45)}

/* zona (titolo di sezione con punto colorato) */
.ap-zona{display:flex;align-items:baseline;gap:12px;margin:28px 0 12px;flex-wrap:wrap}
.ap-zona h2{font:800 20px var(--ap-font-display);letter-spacing:-.02em}
.ap-zona .dot{position:relative;width:10px;height:10px;border-radius:50%;background:currentColor;box-shadow:0 0 16px currentColor}
.ap-zona .dot::after{content:"";position:absolute;inset:0;border-radius:50%;background:inherit;animation:ap-anello 3s ease-out infinite}

/* ---------- KPI ---------- */
.ap-kpi{padding:18px 18px 12px;min-height:140px;display:flex;flex-direction:column}
.ap-kpi .lbl{font-size:12px;color:var(--ap-text2);font-weight:500}
.ap-kpi .val{font:800 clamp(22px,2.2vw,31px) var(--ap-font-display);font-variant-numeric:tabular-nums;letter-spacing:-.035em;margin:8px 0 2px;line-height:1.05}
.ap-kpi .foot{font-size:11.5px;color:var(--ap-text3);display:flex;justify-content:space-between;gap:8px;align-items:center}
.ap-kpi .spark{height:42px;margin-top:auto;padding-top:8px}
.z-sport .val{color:#b9ffe2} .z-casino .val{color:#ffd9b0} .z-primary .val{color:#cfe0ff}
.z-giocatori .val{color:#e2d8ff} .z-rischio .val{color:#ffc2cd} .z-attenzione .val{color:#ffe7ad}
.ap-chip{font:600 11px var(--ap-font);padding:2px 7px;border-radius:99px;white-space:nowrap;opacity:0;transform:translateY(6px);transition:all .6s var(--ap-spring) 1.3s}
.in .ap-chip.vis{opacity:1;transform:none}
.ap-chip.up{background:rgba(var(--ap-sport-rgb),.14);color:var(--ap-sport)} .ap-chip.down{background:rgba(var(--ap-rischio-rgb),.14);color:var(--ap-rischio)}
.ap-chip.flat{background:var(--ap-glass-3);color:var(--ap-text2)}
svg.ap-sl{width:100%;height:100%;overflow:visible;display:block}
svg.ap-sl path.l{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* contatore a rulli */
.ap-odo{display:inline-flex;align-items:flex-end;line-height:1}
.ap-odo .c{display:inline-block;height:1em;overflow:hidden;position:relative}
.ap-odo .c span{display:flex;flex-direction:column;transition:transform var(--d,1.8s) cubic-bezier(.15,.9,.1,1);will-change:transform}
.ap-odo .c span b{height:1em;line-height:1;font-weight:inherit;display:block;text-align:center}
.ap-odo.moto .c span{filter:blur(.6px)}
.ap-flash{animation:ap-flash .9s var(--ap-ease)}
@keyframes ap-flash{0%{text-shadow:0 0 0 transparent}35%{text-shadow:0 0 28px currentColor,0 0 60px rgba(255,255,255,.25)}100%{text-shadow:0 0 0 transparent}}

/* ---------- griglia categorie ---------- */
.ap-cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:10px}
.ap-cat{position:relative;display:block;padding:12px 14px;border-radius:var(--ap-r-sm);background:var(--ap-glass);box-shadow:var(--ap-shadow);
  transition:transform .35s var(--ap-spring),box-shadow .35s var(--ap-ease),background .3s}
.ap-cat b{display:block;font:800 26px var(--ap-font-display);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.ap-cat .ap-cat-lbl{display:block;font-size:10.5px;color:var(--ap-text3);text-transform:uppercase;letter-spacing:.06em;margin-top:2px}
.ap-cat:hover{transform:translateY(-3px) scale(1.02);box-shadow:var(--ap-shadow-hover),0 0 30px -8px var(--cc,rgba(255,255,255,.2))}
.ap-cat.on{background:linear-gradient(150deg,rgba(var(--ap-primary-rgb),.22),rgba(12,22,46,.6));box-shadow:inset 0 0 0 1.5px var(--cc,var(--ap-primary)),0 10px 30px -10px var(--cc,var(--ap-primary))}
.ap-cat.on .ap-cat-lbl{color:var(--ap-text)}
.ap-cats.compatta .ap-cat{background:var(--ap-glass-2);box-shadow:none;padding:10px}
.ap-cats.compatta .ap-cat b{font-size:22px}

/* ---------- badge ---------- */
.ap-badge{display:inline-flex;align-items:center;gap:6px;font:600 11px var(--ap-font);padding:3px 9px;border-radius:99px;white-space:nowrap;
  color:var(--bc,var(--ap-text2));background:color-mix(in srgb,var(--bc,#8b93ad) 16%,transparent)}
.ap-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}
.ap-badge.semplice::before{display:none}

/* pillola Health Score (stessi colori della griglia Health) */
.ap-hp{display:inline-block;min-width:34px;text-align:center;padding:2px 8px;border-radius:99px;font:800 11.5px var(--ap-font-display);font-variant-numeric:tabular-nums}
.ap-hp.ottimo{color:var(--ap-sport);background:rgba(var(--ap-sport-rgb),.14)} .ap-hp.buono{color:var(--ap-primary);background:rgba(var(--ap-primary-rgb),.14)}
.ap-hp.attenzione{color:var(--ap-attenzione);background:rgba(var(--ap-attenzione-rgb),.14)} .ap-hp.critico{color:var(--ap-rischio);background:rgba(var(--ap-rischio-rgb),.14)}
.ap-hp.grave{color:var(--ap-neutro);background:rgba(139,147,173,.16)}

/* ---------- tabelle ---------- */
.ap-table-wrap{overflow:auto;max-height:min(72vh,900px);scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.1) transparent}
.ap-table{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}
.ap-table thead th{position:sticky;top:0;z-index:2;text-align:left;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ap-text3);
  padding:11px 12px;background:rgba(10,19,42,.96);white-space:nowrap}
.ap-table thead th:first-child{padding-left:var(--ap-pad)} .ap-table thead th:last-child{padding-right:var(--ap-pad)}
.ap-table th[data-ordina]{cursor:pointer;user-select:none}
.ap-table th[data-ordina]::after{content:" ↕";opacity:.3;font-size:10px}
.ap-table th[data-ordina]:hover{color:var(--ap-text)}
.ap-table th[data-dir="asc"]::after{content:" ↑";opacity:1;color:var(--ap-primary)}
.ap-table th[data-dir="desc"]::after{content:" ↓";opacity:1;color:var(--ap-primary)}
.ap-table tbody td{padding:9px 12px;border-top:1px solid rgba(255,255,255,.035);vertical-align:middle}
.ap-table tbody td:first-child{padding-left:var(--ap-pad)} .ap-table tbody td:last-child{padding-right:var(--ap-pad)}
.ap-table tbody tr{transition:background .15s}
.ap-table tbody tr:hover{background:linear-gradient(90deg,rgba(var(--ap-primary-rgb),.1),rgba(var(--ap-primary-rgb),.03))}
.ap-table tbody tr:hover td:first-child{box-shadow:inset 3px 0 0 var(--ap-primary)}
.ap-table .num{text-align:right;white-space:nowrap}
.ap-table .cod{font-family:var(--ap-font-display);font-weight:700;color:var(--ap-text);white-space:nowrap}
.ap-table .piccolo{font-size:11.5px;color:var(--ap-text2)}
.ap-table tfoot td{position:sticky;bottom:0;padding:11px 12px;background:rgba(14,26,56,.97);font-weight:700;border-top:1px solid rgba(255,255,255,.08)}
.ap-table tfoot td:first-child{padding-left:var(--ap-pad)} .ap-table tfoot td:last-child{padding-right:var(--ap-pad)}
/* tabelle lunghe: colonne fisse sugli schermi larghi (molto piu' veloce); sotto i 1100px larghezze automatiche e scorrimento orizzontale */
@media (min-width:1100px){
  .ap-table.fissa{table-layout:fixed}
  .ap-table.fissa td{overflow:hidden;text-overflow:ellipsis}
  .ap-table.fissa td.piccolo{white-space:normal}
  .ap-table.fissa td.num,.ap-table.fissa td:has(.ap-btn),.ap-table.fissa td:has(.ap-badge){overflow:visible;text-overflow:clip}
}
@media (max-width:1099px){ .ap-table.fissa{min-width:980px} .ap-table.fissa col{width:auto!important} }
.ap-table .ap-badge::before{box-shadow:none}           /* niente alone nelle tabelle lunghe: resta veloce */
.ap-cerca{background:var(--ap-glass-2);border:0;border-radius:11px;padding:8px 12px;color:var(--ap-text);font-size:12.5px;outline:none;min-width:200px}
.ap-cerca:focus{box-shadow:0 0 0 2px rgba(var(--ap-primary-rgb),.4)}

.ap-table tr.ap-cliccabile{cursor:pointer}
.ap-table td.b{font-weight:700} .ap-table .cod .sub{font-size:10px;font-weight:500}
.ap-badge.b-att{--bc:var(--ap-sport)} .ap-badge.b-ina{--bc:var(--ap-neutro)}

/* ---------- pulsanti ---------- */
.ap-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;cursor:pointer;font:600 12.5px var(--ap-font);padding:9px 15px;border-radius:12px;
  color:var(--ap-text);background:var(--ap-glass-3);transition:transform .25s var(--ap-spring),box-shadow .3s var(--ap-ease),background .25s;white-space:nowrap}
.ap-btn:hover{transform:translateY(-2px);background:rgba(255,255,255,.12)}
.ap-btn:active{transform:translateY(0) scale(.98)}
.ap-btn.primario{background:linear-gradient(135deg,var(--ap-primary),#3b6fe0);color:#fff;box-shadow:0 8px 24px -8px rgba(var(--ap-primary-rgb),.8)}
.ap-btn.primario:hover{box-shadow:0 12px 30px -8px rgba(var(--ap-primary-rgb),.95)}
.ap-btn.ai{background:linear-gradient(135deg,rgba(var(--ap-giocatori-rgb),.3),rgba(var(--ap-primary-rgb),.25));color:#ece5ff;box-shadow:0 8px 24px -10px rgba(var(--ap-giocatori-rgb),.8)}
.ap-btn.pericolo{background:rgba(var(--ap-rischio-rgb),.14);color:var(--ap-rischio)}
.ap-btn.piccolo{padding:5px 11px;font-size:11px;border-radius:9px}
.ap .ap-link{color:#9fc0ff;font-size:12px;font-weight:600}
.ap .ap-link:hover{color:#cfe0ff}

/* barre orizzontali */
.ap-bar-mini{height:8px;border-radius:99px;background:var(--ap-glass-2);overflow:hidden;min-width:60px}
.ap-bar-mini i{display:block;height:100%;border-radius:inherit}
.ap-barra{height:8px;border-radius:99px;background:var(--ap-glass-2);overflow:hidden}
.ap-barra i{display:block;height:100%;width:0;border-radius:inherit;transition:width 1.8s var(--ap-ease)}

/* riquadro informativo orizzontale con accento colorato; mini-scheda; statistica centrata */
.ap-riquadro{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px var(--ap-pad);font-size:12.5px;box-shadow:var(--ap-shadow),inset 3px 0 0 var(--rc,var(--ap-primary))}
.ap-mini{border-radius:12px;padding:9px 12px;background:var(--ap-glass-2);box-shadow:inset 3px 0 0 var(--rc,var(--ap-primary))}
.ap-stat{text-align:center;padding:8px}
.ap-stat b{display:block;font:800 24px var(--ap-font-display);font-variant-numeric:tabular-nums;letter-spacing:-.03em}
.ap-stat span{display:block;font-size:11px;color:var(--ap-text3);margin-top:3px;line-height:1.35}

/* ---------- moduli ---------- */
.ap-input,.ap-select,.ap textarea.ap-input{background:var(--ap-glass-2);border:0;border-radius:10px;padding:8px 11px;color:var(--ap-text);font:500 12.5px var(--ap-font);
  outline:none;color-scheme:dark;transition:box-shadow .2s,background .2s;min-width:0}
.ap-input:focus,.ap-select:focus{box-shadow:0 0 0 2px rgba(var(--ap-primary-rgb),.45);background:var(--ap-glass-3)}
.ap-input.mini{padding:3px 7px;border-radius:7px;font-size:11.5px;width:70px}
.ap-select option{background:#0c1834;color:var(--ap-text)}
.ap-campo{display:flex;flex-direction:column;gap:5px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ap-text3)}
.ap-campo .ap-input,.ap-campo .ap-select{text-transform:none;letter-spacing:0;font-weight:500}
.ap-form{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));align-items:end}
.ap-riga-az{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:14px}
.ap-toggle{position:relative;display:block;cursor:pointer;padding:13px 40px 13px 14px;border-radius:var(--ap-r-sm);background:var(--ap-glass-2);
  opacity:.62;transition:opacity .25s,background .25s,box-shadow .25s,transform .25s var(--ap-spring)}
.ap-toggle:hover{opacity:.9;transform:translateY(-2px)}
.ap-toggle.on{opacity:1;background:linear-gradient(150deg,rgba(var(--tc,var(--ap-primary-rgb)),.16),rgba(var(--tc,var(--ap-primary-rgb)),.05));
  box-shadow:inset 0 0 0 1px rgba(var(--tc,var(--ap-primary-rgb)),.35)}
.ap-toggle input[type=checkbox]{position:absolute;top:13px;right:13px;width:17px;height:17px;accent-color:rgb(var(--tc,var(--ap-primary-rgb)));cursor:pointer}
.ap-toggle b{display:block;font-size:12.5px;margin-bottom:4px}
.ap-toggle span{display:block;font-size:11.5px;color:var(--ap-text2);line-height:1.55}
.ap-toggle.stella{--tc:var(--ap-giocatori-rgb)} .ap-toggle.stella b{color:var(--ap-giocatori)}
.ap-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px;vertical-align:middle;background:var(--dc,var(--ap-neutro));box-shadow:0 0 8px var(--dc,transparent)}
.ap-dot.red{--dc:var(--ap-rischio)} .ap-dot.amber{--dc:var(--ap-attenzione)} .ap-dot.green{--dc:var(--ap-sport)}
.ap-riepilogo{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 18px;border-radius:var(--ap-r-sm);margin:14px 0;
  background:linear-gradient(90deg,rgba(var(--ap-giocatori-rgb),.12),rgba(var(--ap-giocatori-rgb),.03));font-size:12.5px;color:var(--ap-text2)}
.ap-riepilogo b{font:800 16px var(--ap-font-display);color:var(--ap-giocatori)}
.ap-tabs{display:flex;gap:4px;flex-wrap:wrap;margin:6px 0 14px}
.ap-tabs button,.ap-tabs a{border:0;cursor:pointer;background:var(--ap-glass-2);color:var(--ap-text2);font:600 12.5px var(--ap-font);padding:9px 14px;border-radius:12px;
  display:inline-flex;gap:8px;align-items:center;transition:all .25s var(--ap-ease)}
.ap-tabs button:hover,.ap-tabs a:hover{color:var(--ap-text);background:var(--ap-glass-3)}
.ap-tabs .on{background:linear-gradient(135deg,rgba(var(--ap-primary-rgb),.3),rgba(var(--ap-primary-rgb),.12));color:#fff;box-shadow:0 8px 20px -10px rgba(var(--ap-primary-rgb),.9)}
.ap-tabs .n{font-size:10.5px;padding:1px 7px;border-radius:99px;background:rgba(255,255,255,.1)}

/* ---------- avvisi, stato vuoto, paginazione ---------- */
.ap-avviso{display:flex;gap:10px;align-items:flex-start;padding:12px 16px;border-radius:var(--ap-r-sm);font-size:12.5px;line-height:1.55;color:var(--ap-text2);
  background:linear-gradient(90deg,rgba(var(--ac,var(--ap-primary-rgb)),.14),rgba(var(--ac,var(--ap-primary-rgb)),.04));box-shadow:inset 3px 0 0 rgb(var(--ac,var(--ap-primary-rgb)))}
.ap-avviso.attenzione{--ac:var(--ap-attenzione-rgb)} .ap-avviso.rischio{--ac:var(--ap-rischio-rgb)} .ap-avviso.ok{--ac:var(--ap-sport-rgb)} .ap-avviso.giocatori{--ac:var(--ap-giocatori-rgb)}
.ap-vuoto{text-align:center;padding:42px 20px;color:var(--ap-text3)}
.ap-vuoto .ic{font-size:30px;margin-bottom:8px;opacity:.8}
.ap-vuoto b{display:block;color:var(--ap-text2);font-size:14px;margin-bottom:4px}
.ap-pag{display:flex;gap:6px;justify-content:center;align-items:center;padding:14px}
.ap-pag a,.ap-pag span{min-width:34px;text-align:center;padding:6px 10px;border-radius:10px;font-size:12px;background:var(--ap-glass-2);color:var(--ap-text2)}
.ap-pag a:hover{background:var(--ap-glass-3);color:var(--ap-text)}
.ap-pag .on{background:rgba(var(--ap-primary-rgb),.3);color:#fff}

/* ---------- modale (Analisi AI) ---------- */
.ap-modale{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;padding:16px;background:rgba(3,7,18,.7);backdrop-filter:blur(6px)}
.ap-modale.aperta{display:flex}
.ap-modale .box{width:680px;max-width:100%;max-height:86vh;overflow-y:auto;border-radius:var(--ap-r);padding:24px 26px;background:linear-gradient(160deg,#0f1a3a,#0a1228);
  box-shadow:0 30px 80px rgba(0,0,0,.6),0 0 60px -20px rgba(var(--ap-giocatori-rgb),.6);animation:ap-modale .45s var(--ap-spring)}
@keyframes ap-modale{from{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:none}}
.ap-modale .testa{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.ap-modale .testa b{font:700 15px var(--ap-font-display);color:#ddd2ff}
.ap-modale .testa span{display:block;font-size:11px;color:var(--ap-text3)}
.ap-modale .chiudi{margin-left:auto;background:var(--ap-glass-2);border:0;color:var(--ap-text2);width:32px;height:32px;border-radius:10px;cursor:pointer;font-size:15px}
.ap-ai-testo{font-size:13px;line-height:1.7;color:var(--ap-text2);min-height:60px}
.ap-ai-testo strong{color:var(--ap-text)} .ap-ai-testo ul{padding-left:18px}

/* ---------- popup "Alert PVR" ---------- */
.ap-popup{position:fixed;right:20px;bottom:20px;z-index:90;max-width:330px;display:none;padding:14px 16px;border-radius:18px;
  background:linear-gradient(150deg,rgba(60,16,34,.92),rgba(24,12,30,.92));box-shadow:0 20px 50px rgba(0,0,0,.5),0 0 40px -10px rgba(var(--ap-rischio-rgb),.7);
  animation:ap-modale .6s var(--ap-spring)}
.ap-popup.vis{display:block}
.ap-popup .t{display:flex;align-items:center;gap:8px;font:700 14px var(--ap-font-display);margin-bottom:8px}
.ap-popup .t i{width:9px;height:9px;border-radius:50%;background:var(--ap-rischio);box-shadow:0 0 12px var(--ap-rischio)}
.ap-popup .t button{margin-left:auto;background:none;border:0;color:var(--ap-text3);font-size:17px;cursor:pointer}
.ap-popup .ch{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.ap-popup .ch span{font-size:11px;padding:3px 8px;border-radius:99px;background:rgba(255,255,255,.08);color:var(--ap-text)}

/* ---------- mobile ---------- */
.ap-velo{display:none}
@media (max-width:900px){
  .ap-side{transform:translateX(-100%)}
  body.ap.side-aperto .ap-side{transform:none}
  body.ap.side-aperto .ap-velo{display:block;position:fixed;inset:0;z-index:35;background:rgba(0,0,0,.5)}
  .ap-main{margin-left:0!important}
  .ap-burger{display:inline-grid;place-items:center}
  .ap-apri-menu{display:none!important}
  .ap-g3,.ap-g4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:640px){
  .ap-filtri{margin-left:0;width:100%}.ap-periodo input{width:104px}
  .ap-g2,.ap-g3,.ap-g4{grid-template-columns:1fr}
  .ap-card{border-radius:18px;transform:translate3d(0,26px,0) scale(.97)}
  .ap-cat b{font-size:21px}
  .ap-kpi .val{font-size:21px}.ap-kpi .foot{flex-direction:column;align-items:flex-start;gap:4px}
  .ap-table{font-size:12px}
}

/* modalita' leggera (ap.js, automatica sui dispositivi lenti): niente animazioni continue */
.leggero .ap-live b::after,.leggero .ap-zona .dot::after{animation:none!important;opacity:0}
.leggero .ap-pulsa{animation-iteration-count:3!important}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .ap-card{opacity:1;transform:none}.ap-chip{opacity:1;transform:none}#ap-particelle{display:none}
}

/* ---- Guida (help): schede funzione, riquadri definizione, glossario ---- */
.ap-guida{font-size:13px;line-height:1.7;color:var(--ap-text2)}
.ap-guida strong:not([class]){color:var(--ap-text)}
.ap-guida .g-testa b a{font:inherit;color:inherit;text-decoration:none}
.ap-guida .g-testa b a:hover{color:var(--ap-primary)}
.ap-guida .g-testa b a::after{content:' →';opacity:.45;font-weight:500}
.ap-guida .g-par{margin-top:12px}
.ap-guida .g-griglia{margin-top:12px}
.ap-guida .g-box{background:rgba(255,255,255,.035);border-radius:14px;padding:14px 16px}
.ap-guida .g-testa{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.ap-guida .g-ic{font-size:26px;width:46px;height:46px;display:grid;place-items:center;border-radius:14px;background:rgba(var(--ap-primary-rgb),.12)}
.ap-guida .g-testa b{display:block;font:700 15px var(--ap-font-display);color:var(--ap-text)}
.ap-guida .g-testa span{font-size:11.5px;color:var(--ap-text3)}
.ap-guida .g-desc{margin-bottom:12px}
.ap-guida .g-box .g-desc{margin:0;font-size:12px}
.ap-guida .g-funz{border-top:1px solid var(--ap-line);padding-top:12px}
.ap-guida .g-lbl{font-size:10px;font-weight:700;color:var(--ap-text3);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}
.ap-guida .g-lista{display:flex;flex-direction:column;gap:5px;font-size:12px}
.ap-guida .g-tit{font-weight:700;margin-bottom:5px;color:var(--ap-text)}

/* ---- Pagine di accesso senza menu (login, 2FA, errori: templates/accesso.html) ---- */
body.ap-accesso{display:flex;align-items:center;justify-content:center;padding:24px 16px}
.ap-accesso-box{width:400px;max-width:100%;text-align:center;padding:36px 32px}
.ap-accesso-box.larga{width:460px}
.ap-accesso-box .ap-form{text-align:left}
.ap-accesso-logo{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:24px}
.ap-accesso-logo .ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font-size:20px;
  background:linear-gradient(135deg,var(--ap-sport),var(--ap-primary) 55%,var(--ap-giocatori));box-shadow:0 8px 24px -8px rgba(var(--ap-primary-rgb),.7)}
.ap-accesso-logo b{font:800 20px var(--ap-font-display);letter-spacing:-.02em}
.ap-accesso-logo i{font-style:normal;color:var(--ap-primary)}
.ap-accesso-ic{font-size:40px;margin:4px 0 10px}
.ap-accesso-tit{font:700 18px var(--ap-font-display);margin:0 0 8px}
.ap-accesso-sub{font-size:13px;color:var(--ap-text2);line-height:1.6;margin:0 0 22px}
.ap-accesso-sub strong{color:var(--ap-text)}
.ap-accesso-btn{width:100%;justify-content:center;padding:12px;font-size:14px;margin-top:4px}
.ap-accesso-piede{margin-top:20px;font-size:11px;color:var(--ap-text3);line-height:1.9}
.ap-accesso-qr{background:#fff;border-radius:14px;padding:14px;display:inline-block;margin-bottom:20px}
.ap-accesso-qr img{display:block}
.ap-accesso-segreto{font-family:ui-monospace,monospace;font-size:11.5px;color:var(--ap-text2);background:rgba(0,0,0,.25);border-radius:10px;padding:9px 12px;margin-bottom:18px;word-break:break-all}
.ap .ap-input.ap-otp{text-align:center;letter-spacing:.3em;font:700 26px ui-monospace,monospace;padding:12px}
/* Passi numerati (2FA, installazione app) */
.ap-passi{list-style:none;counter-reset:passo;margin:0 0 20px;padding:14px 16px;text-align:left;background:rgba(255,255,255,.035);border-radius:14px;display:flex;flex-direction:column;gap:10px}
.ap-passi li{counter-increment:passo;display:flex;gap:12px;align-items:flex-start;font-size:13px;color:var(--ap-text2);line-height:1.5}
.ap-passi li::before{content:counter(passo);flex:0 0 22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700;color:var(--ap-primary);background:rgba(var(--ap-primary-rgb),.15)}
.ap-passi li.ok::before{content:'✓';color:var(--ap-sport);background:rgba(var(--ap-sport-rgb),.15)}
.ap-passi strong{color:var(--ap-text)}
.ap-guida .ap-passi{margin:0}
.ap-errore-codice{font:800 72px/1 var(--ap-font-display);letter-spacing:-.04em;margin:0 0 10px;
  background:linear-gradient(135deg,var(--ap-primary),var(--ap-giocatori));-webkit-background-clip:text;background-clip:text;color:transparent}
