/* =====================================================================
   ENOVA RETE VENDITA — foglio di stile unico
   Stessa famiglia visiva di ENOVA FISCALE e ENOVA APT.
   ===================================================================== */
/* =====================================================================
     ENOVA RETE VENDITA — provvigioni della rete vendita
     Stessa famiglia visiva di ENOVA FISCALE e ENOVA APT:
     blu profondo, blu elettrico, verde acqua. Neutri con dominante blu.
     ===================================================================== */
  :root{
    --bg:#f3f5f9; --surface:#ffffff; --surface-2:#f7f9fc;
    --ink:#1b2530; --ink-soft:#5f6f80; --ink-faint:#8b9aa9;
    --line:#e3e8ef; --line-strong:#c1cad6;
    --brand:#0b2e9e; --brand-2:#1547d6; --brand-bg:#e6ecfa;
    --teal:#0fc0aa; --teal-bg:#e3f7f3;
    --luce:#c2670f; --luce-bg:#fdeede;
    --gas:#0f7ea8;  --gas-bg:#e3f2f9;
    --storno:#c0392b; --storno-bg:#fdecea;
    --penale:#6d28d9; --penale-bg:#efe7fb;
    --ok:#1a7f37; --ok-bg:#e4f5e9;
    --shadow:0 1px 3px rgba(16,32,52,.10), 0 1px 2px rgba(16,32,52,.06);
    --shadow-alta:0 10px 30px rgba(16,32,52,.18);
    --raggio:10px;
    color-scheme:light;
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --bg:#0f141b; --surface:#171e27; --surface-2:#1d2530;
      --ink:#e6ebf2; --ink-soft:#98a6b6; --ink-faint:#7d8b9b;
      --line:#2a3441; --line-strong:#3b4757;
      --brand:#7d9bff; --brand-2:#6f8fff; --brand-bg:#1c2742;
      --teal:#2fd6c1; --teal-bg:#12302c;
      --luce:#f0a05a; --luce-bg:#33220f;
      --gas:#38cdea;  --gas-bg:#102b35;
      --storno:#f0857a; --storno-bg:#3a1d1a;
      --penale:#b995f5; --penale-bg:#2a1c44;
      --ok:#5fcf82; --ok-bg:#14301d;
      --shadow:0 1px 3px rgba(0,0,0,.4); --shadow-alta:0 10px 30px rgba(0,0,0,.5);
      color-scheme:dark;
    }
  }
  :root[data-theme="dark"]{
    --bg:#0f141b; --surface:#171e27; --surface-2:#1d2530;
    --ink:#e6ebf2; --ink-soft:#98a6b6; --ink-faint:#7d8b9b;
    --line:#2a3441; --line-strong:#3b4757;
    --brand:#7d9bff; --brand-2:#6f8fff; --brand-bg:#1c2742;
    --teal:#2fd6c1; --teal-bg:#12302c;
    --luce:#f0a05a; --luce-bg:#33220f;
    --gas:#38cdea;  --gas-bg:#102b35;
    --storno:#f0857a; --storno-bg:#3a1d1a;
    --penale:#b995f5; --penale-bg:#2a1c44;
    --ok:#5fcf82; --ok-bg:#14301d;
    --shadow:0 1px 3px rgba(0,0,0,.4); --shadow-alta:0 10px 30px rgba(0,0,0,.5);
    color-scheme:dark;
  }

  *{box-sizing:border-box}
  body{
    margin:0; background:var(--bg); color:var(--ink);
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
    font-size:15px; line-height:1.5; -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3,h4{margin:0;text-wrap:balance}
  button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
  :focus-visible{outline:2px solid var(--teal);outline-offset:2px}
  .mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums}
  @media (prefers-reduced-motion: reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

  /* ------------------------------------------------ BARRA ALTA E MENU */
  .top{
    background:var(--surface); border-bottom:1px solid var(--line);
    box-shadow:0 1px 4px rgba(11,46,158,.07);
    position:sticky; top:env(safe-area-inset-top,0px); z-index:50;
  }
  .top-in{max-width:1400px;margin:0 auto;padding:0 20px;height:62px;display:flex;align-items:center;gap:18px}
  .marchio img{height:38px;width:auto;display:block}
  .spazio{flex:1}
  .ctx{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
  .ctx label{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-faint)}
  .ctx select{
    background:var(--surface-2);border:1px solid var(--line);border-radius:8px;
    padding:7px 10px;font-size:13.5px;font-weight:600;color:var(--ink);
  }
  .menu{
    background:var(--surface); border-bottom:1px solid var(--line);
    position:sticky; top:calc(62px + env(safe-area-inset-top,0px)); z-index:40;
  }
  nav{max-width:1400px;margin:0 auto;padding:0 20px;display:flex;gap:2px;overflow-x:auto;scrollbar-width:none}
  nav::-webkit-scrollbar{display:none}
  nav button{
    background:none;border:none;padding:13px 15px;font-weight:600;font-size:14px;color:var(--ink-soft);
    cursor:pointer;border-bottom:3px solid transparent;white-space:nowrap;
  }
  nav button:hover{color:var(--brand)}
  nav button[aria-current="true"]{color:var(--brand);border-bottom-color:var(--teal)}

  .wrap{max-width:1400px;margin:0 auto;padding-inline:20px;padding-block:22px 80px}
  .page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-bottom:18px}
  .page-head h2{font-size:21px;font-weight:700;letter-spacing:-.3px}
  .page-head p{margin:4px 0 0;color:var(--ink-soft);font-size:13.5px;max-width:78ch}

  /* --------------------------------------------------------- BLOCCHI */
  .card{background:var(--surface);border:1px solid var(--line);border-radius:var(--raggio);box-shadow:var(--shadow);min-width:0}
  .pad{padding:16px 18px}
  .grid{display:grid;gap:14px}
  .g4{grid-template-columns:repeat(auto-fit,minmax(172px,1fr))}
  .g3{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
  .g2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
  .stack{display:flex;flex-direction:column;gap:14px}
  .row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}

  .kpi{
    background:var(--surface);border:1px solid var(--line);border-radius:var(--raggio);
    padding:15px 16px;box-shadow:var(--shadow);border-left:4px solid var(--brand-2);min-width:0;
  }
  .kpi .lab{font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-soft);font-weight:700;margin-bottom:6px}
  .kpi .val{font-size:28px;font-weight:800;letter-spacing:-1px;line-height:1.1;font-variant-numeric:tabular-nums}
  .kpi .sub{font-size:12px;color:var(--ink-soft);margin-top:4px}
  .kpi.neg{border-left-color:var(--storno)} .kpi.neg .val{color:var(--storno)}
  .kpi.pos{border-left-color:var(--teal)} .kpi.pos .val{color:var(--ok)}

  h3.sec{font-size:15px;font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
  h3.sec .tag{
    font-size:10.5px;letter-spacing:.5px;text-transform:uppercase;font-weight:800;
    color:var(--brand);background:var(--brand-bg);padding:2px 8px;border-radius:20px;
  }

  /* -------------------------------------------------------- TABELLE */
  .tbl-scroll{
    overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);
    border-radius:var(--raggio);background:var(--surface);box-shadow:var(--shadow);
  }
  table{border-collapse:collapse;width:100%;font-size:14px}
  th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:middle}
  thead th{
    background:var(--surface-2);font-size:11.5px;text-transform:uppercase;letter-spacing:.4px;
    color:var(--ink-soft);font-weight:700;position:sticky;top:0;
  }
  tbody tr:last-child td{border-bottom:none}
  tbody tr.click{cursor:pointer}
  tbody tr.click:hover{background:var(--surface-2)}
  td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
  tfoot td{font-weight:800;background:var(--surface-2);border-top:1px solid var(--line-strong)}

  /* ------------------------------------------------------- ETICHETTE */
  .pill{
    display:inline-block;padding:3px 9px;border-radius:20px;font-size:11.5px;font-weight:700;
    text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;line-height:1.4;
  }
  .pill.luce{background:var(--luce-bg);color:var(--luce)}
  .pill.gas{background:var(--gas-bg);color:var(--gas)}
  .pill.ok{background:var(--ok-bg);color:var(--ok)}
  .pill.out{background:var(--storno-bg);color:var(--storno)}
  .pill.pen{background:var(--penale-bg);color:var(--penale)}
  .pill.neutro{background:var(--line);color:var(--ink-soft)}
  .neg{color:var(--storno)} .pos{color:var(--ok)}

  /* -------------------------------------------------------- PULSANTI */
  .btn{
    display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 16px;
    border:1px solid transparent;border-radius:8px;font-weight:600;font-size:14px;cursor:pointer;
    white-space:nowrap;background:var(--brand);color:#fff;transition:filter .15s,transform .06s;
  }
  .btn:hover{filter:brightness(.93)}
  .btn:active{transform:translateY(1px)}
  .btn.ghost{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}
  .btn.ghost:hover{background:var(--surface-2);filter:none}
  .btn.teal{background:var(--teal);color:#052b26}
  .btn:disabled{opacity:.5;cursor:not-allowed;filter:none}

  /* ----------------------------------------------------------- FORM */
  input[type=text],input[type=number],input[type=date],input[type=email],input[type=password],select,textarea{
    background:var(--surface);border:1px solid var(--line-strong);border-radius:8px;
    padding:9px 11px;font-size:14px;max-width:100%;transition:border-color .15s,box-shadow .15s;
  }
  input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand-2);box-shadow:0 0 0 3px rgba(21,71,214,.14)}
  textarea{width:100%;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.5}
  .field{display:flex;flex-direction:column;gap:5px;min-width:0}
  .field label{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-soft)}
  .num-in{width:92px;text-align:right;font-variant-numeric:tabular-nums}
  input[type=file]{font-size:13px;color:var(--ink-soft)}

  /* ----------------------------------------------------------- NOTE */
  .nota{
    background:var(--surface-2);border:1px solid var(--line);border-left:4px solid var(--teal);
    border-radius:var(--raggio);padding:12px 15px;font-size:13.5px;color:var(--ink-soft);
  }
  .nota b{color:var(--ink);font-weight:700}
  .nota.warn{border-left-color:var(--storno)}

  /* -------------------------------------------------------- GRAFICO */
  .bars{display:flex;align-items:flex-end;gap:10px;height:140px;padding-top:6px}
  .barcol{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:6px;min-width:0}
  .barpair{display:flex;align-items:flex-end;gap:3px;width:100%;height:100%;justify-content:center}
  .barpair i{width:38%;border-radius:4px 4px 0 0;display:block;min-height:2px}
  .barpair i.l{background:var(--luce)} .barpair i.g{background:var(--gas)}
  .barcol .lbl{font-size:10.5px;font-weight:700;color:var(--ink-faint);white-space:nowrap;text-transform:uppercase;letter-spacing:.3px}
  .legenda{display:flex;gap:14px;font-size:12px;color:var(--ink-soft);flex-wrap:wrap;font-weight:600}
  .legenda b{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px}

  /* --------------------------------------------------------- SCHEDE */
  .tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:16px;overflow-x:auto;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tabs button{
    background:none;border:none;padding:10px 14px;font-weight:600;font-size:14px;color:var(--ink-soft);
    cursor:pointer;border-bottom:3px solid transparent;white-space:nowrap;
  }
  .tabs button[aria-current="true"]{color:var(--brand);border-bottom-color:var(--teal)}

  /* ------------------------------------------------ SEQUENZA EVENTI */
  .tl{display:flex;flex-direction:column}
  .tl-item{display:grid;grid-template-columns:16px 1fr;gap:12px;font-size:13.5px}
  .tl-rail{display:flex;flex-direction:column;align-items:center}
  .tl-dot{width:10px;height:10px;border-radius:50%;background:var(--teal);margin-top:6px;flex:none}
  .tl-dot.luce{background:var(--luce)} .tl-dot.gas{background:var(--gas)}
  .tl-dot.out{background:var(--storno)} .tl-dot.pen{background:var(--penale)} .tl-dot.inv{background:var(--brand-2)}
  .tl-line{width:2px;flex:1;background:var(--line);min-height:14px}
  .tl-item:last-child .tl-line{display:none}
  .tl-body{padding-bottom:14px}
  .tl-body .d{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-faint)}

  /* ----------------------------------------- LINEA DEL TEMPO VIGENZE */
  .gantt{min-width:780px;display:flex;flex-direction:column;gap:7px}
  .g-row{display:grid;grid-template-columns:210px 1fr;gap:12px;align-items:center}
  .g-lab{font-size:13px;font-weight:600;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .g-track{display:grid;grid-template-columns:repeat(var(--cols),1fr);align-items:center}
  .g-m{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--ink-faint);text-align:center}
  .g-grid{grid-row:1;height:24px;border-radius:6px;background:var(--surface-2);border:1px solid var(--line)}
  .g-bar{
    grid-row:1;height:24px;border-radius:6px;display:flex;align-items:center;justify-content:center;
    overflow:hidden;position:relative;box-shadow:inset 0 0 0 1px rgba(0,0,0,.07);
  }
  .g-bar em{font-style:normal;font-size:10.5px;font-weight:800;color:#fff;white-space:nowrap;letter-spacing:.3px}
  .g-bar.open{border-radius:6px 2px 2px 6px}
  .g-bar.open::after{content:"";position:absolute;right:0;top:0;bottom:0;width:12px;background:linear-gradient(90deg,transparent,var(--surface))}
  .g-bar.cut{border-radius:2px 6px 6px 2px}
  .g-bar.c-brand{background:var(--brand)}
  .g-bar.c-teal{background:var(--teal);box-shadow:inset 0 0 0 1px rgba(0,0,0,.12)}
  .g-bar.c-teal em{color:#052b26}
  .g-bar.c-penale{background:var(--penale)}
  .g-bar.c-luce{background:var(--luce)}
  .g-bar.c-gas{background:var(--gas)}
  .g-bar.c-ink-faint{background:var(--ink-faint)}
  .g-bar.c-ink-soft{background:var(--ink-soft)}

  /* -------------------------------------------------------- FINESTRA */
  dialog{
    border:none;border-radius:14px;padding:0;background:var(--surface);color:var(--ink);
    max-width:660px;width:calc(100% - 32px);box-shadow:var(--shadow-alta);
  }
  dialog::backdrop{background:rgba(7,28,99,.45)}
  .dlg-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line)}
  .dlg-head h3{font-size:16.5px;font-weight:700}
  .dlg-body{padding:16px 18px;max-height:66vh;overflow:auto}
  .x{background:var(--surface-2);border:1px solid var(--line);border-radius:8px;width:30px;height:30px;color:var(--ink-soft);line-height:1;cursor:pointer}

  .toast{
    position:fixed;left:50%;transform:translateX(-50%);bottom:calc(22px + env(safe-area-inset-bottom,0px));
    background:var(--brand);color:#fff;padding:11px 18px;border-radius:9px;font-size:14px;font-weight:600;
    box-shadow:var(--shadow-alta);z-index:60;
  }
  .demo-flag{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-faint)}

  @media (max-width:620px){
    .top-in{height:56px;padding:0 14px;gap:10px}
    .marchio img{height:30px}
    .wrap{padding-inline:14px}
    nav{padding:0 14px}
    .menu{top:calc(56px + env(safe-area-inset-top,0px))}
    .page-head h2{font-size:19px}
    .kpi .val{font-size:23px}
    .ctx label{display:none}
  }

/* ------------------------------------------------------------- LOGIN */
#schermata-login{min-height:100vh;display:none;align-items:center;justify-content:center;padding:20px;
  background:radial-gradient(1000px 520px at 82% 6%, rgba(20,190,224,.35), transparent 62%),
             radial-gradient(760px 460px at 8% 96%, rgba(15,192,170,.30), transparent 60%),
             linear-gradient(146deg,#071c63 0%,#0a2a92 52%,#1547d6 100%)}
#schermata-login.attiva{display:flex}
.box-login{background:#fff;color:#1b2530;width:100%;max-width:430px;border-radius:16px;padding:32px 30px 26px;box-shadow:0 20px 50px rgba(4,16,60,.34)}
.box-login .logo-login{text-align:center;margin-bottom:6px}
.box-login .logo-login img{width:250px;max-width:84%;height:auto}
.box-login .sottotitolo{text-align:center;font-size:13px;color:#5f6f80;margin-bottom:22px}
.box-login .campo{margin-bottom:14px}
.box-login label{display:block;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#5f6f80;margin-bottom:5px}
.box-login input{width:100%;padding:10px 12px;border:1px solid #c1cad6;border-radius:8px;background:#fff;color:#1b2530;font-size:14.5px}
.box-login .btn{width:100%;justify-content:center;margin-top:6px;background:#0b2e9e;color:#fff}
.box-login .piede{margin-top:16px;font-size:12.5px;color:#5f6f80;text-align:center}
.avviso{margin-top:12px;padding:10px 12px;border-radius:8px;font-size:13.5px}
.avviso.errore{background:#fdecea;color:#c0392b}
#schermata-app{display:none}
#schermata-app.attiva{display:block}
.utente-info{font-size:12.5px;text-align:right;line-height:1.3;white-space:nowrap}
.utente-info b{display:block;color:var(--brand)}
.utente-info small{color:var(--ink-faint)}
.esci{background:var(--surface-2);color:var(--brand);border:1px solid var(--line);padding:7px 12px;border-radius:8px;cursor:pointer;font-size:13px;font-weight:600}
.caricamento{padding:40px;text-align:center;color:var(--ink-soft);font-size:14px}
.vuoto{padding:26px;text-align:center;color:var(--ink-soft);font-size:13.5px;background:var(--surface);border:1px dashed var(--line-strong);border-radius:var(--raggio)}

/* ------------------------------------------------ SOCIETÀ E MANDATI */
.soc-logo{height:28px;width:auto;max-width:170px;object-fit:contain;background:#fff;padding:3px 8px;border-radius:7px;border:1px solid var(--line);vertical-align:middle}
.soc-logo.piccolo{height:22px;padding:2px 6px;max-width:130px}
.soc-logo.grande{height:44px;padding:6px 12px;max-width:260px}
.soc-sigla{display:inline-flex;align-items:center;justify-content:center;min-width:38px;padding:2px 7px;border-radius:5px;color:#fff;font-size:10.5px;font-weight:900;letter-spacing:.3px}
.per-soc{display:inline-flex;align-items:center;gap:10px;font-size:13px;color:var(--ink-soft);margin-top:6px}
.mandati{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.mandato-btn{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--surface-2);border-radius:10px;padding:7px 10px;cursor:pointer;font-size:12.5px;color:var(--ink-soft);font-weight:600}
.mandato-btn:hover{border-color:var(--teal)}
.soc-card{display:flex;flex-direction:column;gap:8px}
.soc-card .testa{display:flex;align-items:center;justify-content:space-between;gap:10px}
@media (max-width:900px){ .top-in{height:auto;padding-block:8px;flex-wrap:wrap} .menu{top:0;position:relative} .top{position:relative} }

/* correzioni v1.0.0 */
.barcol{height:100%}
.barpair{flex:1;height:auto;min-height:0}
.ctx select{max-width:250px;text-overflow:ellipsis}
.ctx{flex-wrap:nowrap}
@media (max-width:1180px){ .ctx{flex-wrap:wrap} }

/* =====================================================================
   v1.1.0 — VESTE GRAFICA DELLA FAMIGLIA ENOVA (come ENOVA APT e FISCALE)
   filigrana azzurra sfumata negli angoli, intestazione con linea
   blu → acqua, menu a pillole con icona, schede senza bordo con ombre
   morbide, angoli 14-16px, pulsanti sfumati, titoli blu.
   ===================================================================== */
:root {
  --raggio: 14px;
  --shadow: 0 6px 18px rgba(11,46,158,.10), 0 1px 3px rgba(11,46,158,.06);
  --shadow-alta: 0 16px 36px rgba(11,46,158,.18);
  --line: #e3e9f4; --sfondo: #edf2fb; --bordo-attivo: #c9d6f7;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) { --shadow: 0 6px 18px rgba(0,0,0,.45), 0 1px 3px rgba(0,0,0,.3); --shadow-alta: 0 16px 36px rgba(0,0,0,.6); --line: #2a3441; --sfondo: #0f141b; --bordo-attivo: #34497f; }
}
:root[data-theme="dark"] { --shadow: 0 6px 18px rgba(0,0,0,.45), 0 1px 3px rgba(0,0,0,.3); --shadow-alta: 0 16px 36px rgba(0,0,0,.6); --line: #2a3441; --sfondo: #0f141b; --bordo-attivo: #34497f; }

/* La filigrana: azzurro chiarissimo sfumato verso gli angoli (acqua in alto a destra, blu in basso a sinistra) */
body { background: #eef3fc; letter-spacing: -.005em; }
body::before { content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background:
    radial-gradient(1100px 640px at 102% -8%, rgba(21,71,214,.42), rgba(20,190,224,.22) 40%, transparent 66%),
    radial-gradient(1000px 620px at -8% 106%, rgba(11,46,158,.46), rgba(21,71,214,.18) 45%, transparent 66%),
    radial-gradient(700px 420px at 55% 50%, rgba(15,192,170,.06), transparent 65%),
    linear-gradient(180deg, #e9effb 0%, #f0f4fd 55%, #ecf2fc 100%); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) body { background: #0d1420; } :root:not([data-theme="light"]) body::before { background: radial-gradient(1100px 640px at 102% -8%, rgba(21,71,214,.30), rgba(20,190,224,.10) 40%, transparent 66%), radial-gradient(1000px 620px at -8% 106%, rgba(11,46,158,.42), rgba(21,71,214,.14) 45%, transparent 66%), linear-gradient(180deg, #0c1220, #0f1523); } }
:root[data-theme="dark"] body { background: #0d1420; }
:root[data-theme="dark"] body::before { background: radial-gradient(1100px 640px at 102% -8%, rgba(21,71,214,.30), rgba(20,190,224,.10) 40%, transparent 66%), radial-gradient(1000px 620px at -8% 106%, rgba(11,46,158,.42), rgba(21,71,214,.14) 45%, transparent 66%), linear-gradient(180deg, #0c1220, #0f1523); }
#schermata-login { position: relative; z-index: 0; }
.box-login .btn { background: linear-gradient(135deg, #0b2e9e, #1547d6); border: none; box-shadow: 0 4px 12px rgba(11,46,158,.22); }

/* Intestazione bianca con la linea sfumata blu → acqua */
.top { position: sticky; top: env(safe-area-inset-top, 0px); z-index: 50; background: var(--surface); border-bottom: none;
  box-shadow: 0 1px 0 var(--line), 0 4px 16px rgba(11,46,158,.06); }
.top::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 3px;
  background: linear-gradient(90deg, #0b2e9e, #0fc0aa 60%, #14bee0); pointer-events: none; }
.top-in { height: 64px; flex-wrap: nowrap; padding-block: 0; max-width: none; padding-inline: 20px; }
.marchio img { height: 38px; }
.barra-brand { display: flex; align-items: center; gap: 8px; margin-left: 14px; }
.brand-chip { display: inline-flex; align-items: center; background: #fff; border-radius: 6px; padding: 3px 8px; box-shadow: 0 1px 3px rgba(0,0,0,.18); }
.brand-chip img { height: 22px; width: auto; display: block; }
.utente-info b { color: var(--brand); }
.pill-btn, .esci { border-radius: 999px; background: var(--surface-2); border: 1px solid var(--line); color: var(--brand);
  padding: 7px 14px; font-size: 13px; font-weight: 600; cursor: pointer; }
.pill-btn:hover, .esci:hover { background: var(--sfondo); }

/* Menu: pillole chiare con l'icona in un riquadro, voce attiva sottolineata in acqua */
.menu { position: sticky; top: calc(64px + env(safe-area-inset-top, 0px)); z-index: 40; background: transparent; border-bottom: none;
  display: flex; gap: 8px; padding: 10px 14px; overflow: visible; max-width: none; margin: 0; }
.menu button {
  flex: 1 1 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
  padding: 7px 4px; font-size: 12.5px; font-weight: 600; line-height: 1.15; text-align: center;
  border: 1px solid var(--line); border-radius: 12px; background: var(--surface); color: var(--ink-soft);
  white-space: normal; min-height: 60px; position: relative; box-shadow: var(--shadow); cursor: pointer;
  transition: box-shadow .15s, transform .06s, border-color .15s; border-bottom-width: 1px; }
.menu button .mi { width: 30px; height: 30px; border-radius: 9px; background: var(--sfondo); display: grid; place-items: center; font-size: 16px; line-height: 1; }
.menu button:hover { color: var(--brand); border-color: var(--bordo-attivo); }
.menu button[aria-current="true"] { background: var(--surface); color: var(--brand); border-color: var(--bordo-attivo);
  box-shadow: inset 0 -3px 0 var(--teal), var(--shadow); }
.menu button[aria-current="true"] .mi { background: var(--brand-bg); }
nav.menu { scrollbar-width: auto; }

/* Barra del contesto (periodo · agenzia · società) come scheda bianca */
.barra-contesto { display: flex; gap: 14px; align-items: flex-end; flex-wrap: wrap; background: var(--surface);
  border-radius: 16px; box-shadow: var(--shadow); padding: 12px 16px; margin-bottom: 18px; }
.campo-ctx { display: flex; flex-direction: column; gap: 5px; min-width: 150px; }
.campo-ctx.largo { flex: 1 1 320px; }
.campo-ctx label { font-size: 12px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase; color: var(--ink-soft); }
.campo-ctx select { width: 100%; max-width: none; border-radius: 10px; border-color: var(--line); background: var(--sfondo); font-weight: 600; padding: 9px 11px; }
.ctx-logo { margin-left: auto; display: flex; align-items: center; min-height: 44px; }
.wrap { padding-block: 8px 90px; }

/* Titoli di pagina: blu e più grandi */
.page-head h2 { font-size: 24px; letter-spacing: -.02em; color: var(--brand); font-weight: 700; }
.page-head p { font-size: 13.5px; }

/* Schede: senza bordo, angoli morbidi, pallino acqua nel titolo */
.card { border: none; border-radius: 16px; box-shadow: var(--shadow); }
h3.sec { position: relative; padding-left: 16px; }
h3.sec::before { content: ""; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 8px; height: 8px; border-radius: 50%; background: var(--teal); }
h3.sec .tag { border-radius: 999px; }

/* KPI: numero grande, barra colorata a sinistra */
.kpi { border: none; border-left: none; border-radius: 16px; padding: 16px 18px; position: relative; overflow: hidden; box-shadow: var(--shadow); }
.kpi::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 5px; background: var(--brand-2); }
.kpi.neg::before { background: var(--storno); } .kpi.pos::before { background: var(--teal); }
.kpi .lab { font-size: 11px; letter-spacing: .6px; }
.kpi .val { font-size: 32px; letter-spacing: -.03em; margin: 2px 0; }
.kpi .sub { font-size: 12.5px; }

/* Pulsanti sfumati */
.btn { border-radius: 10px; background: linear-gradient(135deg, #0b2e9e, #1547d6); border: none; box-shadow: 0 4px 12px rgba(11,46,158,.22); }
.btn:hover { box-shadow: 0 6px 16px rgba(11,46,158,.3); transform: translateY(-1px); filter: none; }
.btn.teal { background: linear-gradient(135deg, #0fc0aa, #14bee0); color: #052b26; box-shadow: 0 4px 12px rgba(15,192,170,.25); }
.btn.ghost { background: var(--surface); border: 1px solid var(--line); color: var(--ink); box-shadow: var(--shadow); }
.btn.ghost:hover { background: var(--surface-2); }
.btn:disabled { transform: none; }

/* Campi */
input[type=text], input[type=number], input[type=date], input[type=email], select, textarea { border-radius: 10px; border-color: var(--line); background: var(--sfondo); }
input:focus, select:focus, textarea:focus { background: var(--surface); border-color: var(--teal); box-shadow: 0 0 0 3px rgba(15,192,170,.18); }
.box-login input { background: #fff; }

/* Tabelle, note, linguette, vuoti */
.tbl-scroll { border: none; border-radius: 16px; box-shadow: var(--shadow); }
.nota { border: none; border-left: 4px solid var(--teal); border-radius: 14px; background: var(--surface); box-shadow: var(--shadow); }
.nota.warn { border-left-color: var(--storno); }
.tabs { background: var(--surface); border-radius: 12px; padding: 4px; box-shadow: var(--shadow); gap: 2px; display: inline-flex; flex-wrap: wrap; border-bottom: none; }
.tabs button { border: none; border-radius: 9px; padding: 9px 14px; border-bottom: none; }
.tabs button[aria-current="true"] { background: var(--brand-bg); color: var(--brand); border-bottom: none; }
.vuoto { border: none; border-radius: 16px; box-shadow: var(--shadow); padding: 28px 16px; }
.vuoto::before { content: "◌"; display: block; font-size: 28px; color: var(--teal); margin-bottom: 6px; }
.pill { border-radius: 999px; font-size: 10.5px; letter-spacing: .4px; }
dialog { border-radius: 20px; }
dialog::backdrop { background: rgba(16,32,52,.55); backdrop-filter: blur(2px); }
.mandato-btn, .soc-card { border-radius: 14px; }

/* Telefono: intestazione su una riga, menu a pillole in griglia, contesto in colonna */
@media (max-width: 900px) {
  .menu { flex-wrap: wrap; }
  .menu button { flex: 1 1 calc(20% - 8px); }
}
@media (max-width: 720px) {
  .top { position: sticky; }
  .top-in { height: 54px; padding: 0 10px; gap: 6px; }
  .marchio { flex: 1 1 auto; min-width: 0; max-width: 44%; }
  .marchio img { height: auto; max-height: 30px; max-width: 100%; object-fit: contain; }
  .barra-brand, .utente-info { display: none; }
  #btn-password { font-size: 0; padding: 7px 9px; }
  #btn-password::before { content: "🔑"; font-size: 15px; }
  .menu { top: calc(54px + env(safe-area-inset-top, 0px)); display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; padding: 6px 8px; }
  .menu button { min-height: 46px; padding: 4px 2px 5px; gap: 2px; font-size: 10px; line-height: 1.1; border-radius: 10px; }
  .menu button .mi { width: 24px; height: 24px; font-size: 14px; border-radius: 7px; }
  .barra-contesto { flex-direction: column; align-items: stretch; }
  .ctx-logo { margin-left: 0; }
  .page-head h2 { font-size: 21px; }
  .kpi .val { font-size: 26px; }
  input, select, textarea { font-size: 16px !important; }
}
/* v1.1.0 — correzioni */
[hidden] { display: none !important; }
@media (max-width: 720px) {
  .campo-ctx, .campo-ctx.largo { flex: none; min-width: 0; }
  .barra-contesto { gap: 10px; padding: 12px; }
}

/* v1.1.1 — numeri come in ENOVA FISCALE: stesso carattere del testo (niente
   caratteri da macchina da scrivere), cifre incolonnate e un po' di peso */
.mono { font-family: inherit !important; font-variant-numeric: tabular-nums; font-weight: 600; letter-spacing: -.01em; }
td.num, th.num { font-family: inherit; font-variant-numeric: tabular-nums; }
td.num { font-weight: 600; }
tfoot td.num { font-weight: 800; }
.kpi .val { font-variant-numeric: tabular-nums; font-weight: 800; }
.soc-card .mono, .card .mono b { font-weight: 700; }
textarea { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }

/* ===================== v1.2.0 · lettura AI dei documenti ===================== */
.ai-box{border:2px dashed color-mix(in srgb,var(--teal) 55%,transparent);border-radius:14px;padding:16px 18px;
  background:linear-gradient(135deg,var(--teal-bg),var(--brand-bg));display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.ai-box .ai-ico{font-size:28px;line-height:1}
.ai-box .ai-t{flex:1;min-width:220px;font-size:13.5px;color:var(--ink-soft)}
.ai-box .ai-t b{color:var(--ink);font-size:15px;display:block;margin-bottom:2px}
.ai-box input[type=file]{max-width:100%}
.ai-attesa{display:flex;gap:12px;align-items:center;font-size:14px;color:var(--ink-soft);padding:6px 0}
.ai-attesa .giro{width:22px;height:22px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--teal);animation:giro 0.9s linear infinite;flex:none}
@keyframes giro{to{transform:rotate(360deg)}}
.ai-proposta{border:1px solid color-mix(in srgb,var(--teal) 45%,transparent)}
.ai-proposta .ai-riass{font-size:13.5px;line-height:1.5;color:var(--ink);background:var(--surface-2);border-radius:10px;padding:10px 14px;margin-bottom:12px;white-space:pre-line}
.ai-avv{margin:0 0 12px;padding-left:18px;font-size:13px;color:var(--storno)}
.ai-avv li{margin:3px 0}
td.cambiato,.cambiato{background:#fff4d6 !important}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) td.cambiato,:root:not([data-theme="light"]) .cambiato{background:#3a3212 !important}}
.ai-prima{display:block;font-size:11px;color:var(--ink-faint);margin-top:3px;white-space:nowrap}
.ai-file{display:flex;gap:10px;align-items:center;padding:7px 0;border-bottom:1px dashed var(--line);font-size:13.3px}
.ai-file .nome{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-file .giro{width:14px;height:14px;border-width:2px}
.ai-sintesi{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:12px 0}
.ai-sintesi .card{padding:12px 14px;box-shadow:none;background:var(--surface-2)}
.ai-sintesi .card h4{font-size:11.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-soft);margin:0 0 6px}
.badge-ai{display:inline-block;font-size:10.5px;font-weight:800;letter-spacing:.3px;padding:1px 6px;border-radius:6px;background:var(--teal-bg);color:var(--teal);margin-left:6px;vertical-align:middle}

/* ===================== v1.2.1 · trascina e rilascia ===================== */
[data-drop]{transition:box-shadow .15s, background .15s, border-color .15s}
[data-drop].trascina{box-shadow:0 0 0 3px var(--teal), var(--shadow-alta) !important;border-color:var(--teal) !important}
.ai-box.trascina{background:linear-gradient(135deg,color-mix(in srgb,var(--teal) 25%,var(--surface)),var(--brand-bg))}
.ai-box.trascina .ai-ico{transform:scale(1.2)}
.ai-box .ai-ico{transition:transform .15s}

/* ===================== v1.3.0 · notifiche e società degli utenti ===================== */
.campanella{position:relative;font-size:15px;padding:7px 11px}
.badge-n{position:absolute;top:-5px;right:-6px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#e5484d;color:#fff;
  font-size:10.5px;font-weight:800;line-height:18px;text-align:center;box-shadow:0 0 0 2px var(--surface)}
.notifica{padding:11px 14px;border-radius:12px;background:var(--surface-2);margin-bottom:8px;border-left:4px solid transparent}
.notifica.nuova{border-left-color:var(--teal);background:var(--teal-bg)}
.notifica .n-tit{font-weight:700;font-size:14.5px}
.notifica .n-txt{font-size:13.5px;margin-top:3px;white-space:pre-line}
.notifica .n-meta{font-size:11.5px;color:var(--ink-faint);margin-top:5px}
label.scelta{display:inline-flex;gap:7px;align-items:center;font-size:13.5px;font-weight:500;text-transform:none;letter-spacing:0;color:var(--ink);cursor:pointer}
.soc-scelta{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px}
.soc-voce{display:flex;gap:8px;align-items:center;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);
  font-size:13px;font-weight:500;text-transform:none;letter-spacing:0;color:var(--ink);cursor:pointer}
.soc-voce:has(input:checked){border-color:var(--teal);background:var(--teal-bg)}
.soc-voce .soc-logo.piccolo{height:20px}
#dlgBody .field > label{display:block}
.field label.soc-voce,.field label.scelta,label.soc-voce span{text-transform:none;letter-spacing:0;font-size:13px;font-weight:500;color:var(--ink)}
.field label.scelta{font-size:13.5px}

/* ===================== v1.4.0 · vigenze al giorno, archivio, penali ===================== */
.g-track.g-linea{display:block;position:relative;height:26px;border-radius:6px;background-color:var(--surface-2);border:1px solid var(--line);
  background-image:linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:calc(100% / var(--cols)) 100%}
.g-linea .g-bar{position:absolute;top:1px;height:22px;min-width:3px;cursor:pointer;justify-content:flex-start;padding-left:7px}
.g-linea .g-bar:hover{filter:brightness(1.08);z-index:2}
.g-linea .g-bar + .g-bar{box-shadow:inset 2px 0 0 rgba(255,255,255,.85)}
.g-oggi{position:absolute;top:-4px;bottom:-4px;width:2px;background:#e5484d;border-radius:2px;z-index:3;pointer-events:none}
tr.click[data-doc]{cursor:pointer}
.doc-pdf{display:inline-flex;gap:6px;align-items:center;font-size:12px;color:var(--brand);font-weight:600}
.doc-pdf span{text-decoration:underline;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vigenza{display:inline-flex;gap:8px;align-items:center;padding:6px 12px;border-radius:999px;background:var(--brand-bg);color:var(--brand);font-weight:700;font-size:13.5px}
.vigenza.indeterminato{background:var(--ok-bg);color:var(--ok)}
.g-linea .g-bar.rinnovo{background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.38) 0 6px,transparent 6px 12px);opacity:.72}
.legenda b.leg-rinnovo{background:repeating-linear-gradient(135deg,var(--brand) 0 3px,var(--brand-bg) 3px 6px)}
.vig-box{background:var(--surface-2);border-radius:12px;padding:10px 14px}
.vig-modi{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;margin-top:8px}
.vig-modi select{padding:4px 8px;font-size:13px}
