
:root{--bg:#f4f6f9;--panel:#fff;--text:#172033;--muted:#697386;--line:#e2e7ef;--blue:#2563eb;--nav:#101827;--ok:#15845d;--warn:#b67a16;--bad:#b83b4b;--purple:#7450a7}
*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial;background:var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.topbar{height:58px;background:var(--nav);color:white;display:flex;align-items:center;gap:20px;padding:0 18px;position:sticky;top:0;z-index:50}.brand{font-weight:850;font-size:18px}.brand span{color:#8fb4ff}.topbar nav{display:flex;height:100%}.topbar nav a{display:flex;align-items:center;padding:0 12px;color:#c7d0df;border-bottom:3px solid transparent}.topbar nav a.active,.topbar nav a:hover{color:white;border-bottom-color:#72a0ff}.grow{flex:1}.username{font-size:13px;color:#c7d0df}.page{max-width:1400px;margin:auto;padding:22px}.widepage{max-width:none}.narrow{max-width:980px}.pagehead{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:14px}.pagehead h1{margin:0;font-size:25px}.pagehead p{margin:4px 0 0;color:var(--muted)}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 5px 18px rgba(25,38,60,.05)}.btn{border:1px solid var(--line);background:#eef1f6;color:#263247;padding:8px 11px;border-radius:8px;font-weight:700;cursor:pointer}.btn.primary{background:var(--blue);color:white;border-color:var(--blue)}.btn.ghost{background:transparent;color:white;border-color:#39465d}.btn.danger{background:#fff0f1;color:#a82f3d}.btn.sm{padding:6px 8px;font-size:12px}.wide{width:100%}.monthbar{padding:9px 10px;display:flex;gap:14px;align-items:center;margin-bottom:10px}.monthbar.compact{width:max-content}.yearnav{display:flex;align-items:center;gap:8px}.monthtabs{display:flex;gap:3px;overflow:auto;flex:1}.monthtabs a{padding:7px 9px;border-radius:7px;color:#5e687a;font-size:13px;font-weight:750}.monthtabs a.sel{background:#172033;color:white}.ownerfilter select,.monthbar select,.monthbar input{border:1px solid var(--line);padding:7px 9px;border-radius:8px;background:white}.monthnote{font-size:13px;color:#5e687a;margin:8px 2px 10px}.aiok{color:var(--ok);font-weight:750;margin-left:8px}.aiwarn{color:var(--warn);font-weight:750;margin-left:8px}.aierr{color:var(--bad);font-weight:750;margin-left:8px}.sheetwrap{overflow:auto;max-height:calc(100vh - 210px)}.sheet{border-collapse:separate;border-spacing:0;min-width:1500px;width:100%}.sheet th,.sheet td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:8px 8px;background:white;vertical-align:middle}.sheet thead th{position:sticky;top:0;z-index:10;background:#f8fafc;color:#566174;font-size:11px;text-transform:uppercase;letter-spacing:.02em;min-width:130px}.sheet thead th.taskhead{height:74px;text-align:center}.taskhead div{font-weight:800;line-height:1.25}.taskhead small{display:block;margin-top:5px;font-size:10px;color:#8a94a6}.sticky{position:sticky!important;z-index:12!important}.c1{left:0;min-width:230px!important;width:230px}.c2{left:230px;min-width:130px!important;width:130px}.c3{left:360px;min-width:92px!important;width:92px}.sheet tbody .sticky{z-index:5!important}.sheet thead .sticky{z-index:20!important}.clientcell a{font-weight:800;color:#183a7a}.clientcell small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.ownercell{font-size:12px}.taskcell{text-align:center;min-width:132px}.taskcell.na{background:#f4f5f7}.na-mark{color:#aab1bd}.statusselect{width:112px;border:0;border-radius:999px;padding:6px 7px;font-weight:800;font-size:11px;text-align:center;cursor:pointer}.st-da-fare{background:#fff0d5;color:#875700}.st-fatto{background:#def5ea;color:#08744b}.st-inviato{background:#e1eaff;color:#2d56a8}.st-in-attesa-documenti{background:#efe4fb;color:#7041a3}.tag{display:inline-flex;padding:4px 7px;border-radius:999px;font-size:11px;font-weight:800}.tag.verman{background:#fff0e1;color:#9a5b16}.tag.internal{background:#e5f5ed;color:#0c714a}.sources{margin-top:12px;padding:12px 15px}.sources summary{cursor:pointer;font-weight:800}.sourcegrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px}.sourcegrid>div{padding:9px;background:#f8fafc;border-radius:8px}.sourcegrid small{color:var(--muted)}.tablecard{overflow:auto}.tablecard table{width:100%;border-collapse:collapse}.tablecard th,.tablecard td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left;font-size:13px}.tablecard th{background:#f8fafc;color:#687386;font-size:11px;text-transform:uppercase}.block{display:block;color:var(--muted);margin-top:3px}.formcard{padding:18px}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.field{margin-bottom:12px}.field label{display:block;font-size:12px;color:#5d6779;font-weight:800;margin-bottom:5px}.field input,.field select,.field textarea,.inline input,.inline select{width:100%;border:1px solid #d7dde7;border-radius:8px;padding:9px;background:white}.field textarea{min-height:90px}.checks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:10px 0 8px}.checks label{border:1px solid var(--line);padding:10px;border-radius:8px;font-size:13px;font-weight:700}.hint{font-size:12px;color:var(--muted);background:#f5f8ff;border:1px solid #dfe9ff;border-radius:8px;padding:9px;margin:8px 0 16px}.sectionline{display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px solid var(--line);padding-top:14px}.sectionline h3{margin:0}.sectionline p{margin:3px 0;color:var(--muted);font-size:12px}.personrow{display:grid;grid-template-columns:1fr 150px 42px;gap:7px;margin-bottom:7px}.personrow input,.personrow select{border:1px solid #d7dde7;border-radius:8px;padding:8px}.actions{display:flex;justify-content:flex-end;gap:8px;border-top:1px solid var(--line);padding-top:14px}.grid2{display:grid;grid-template-columns:1fr 2fr;gap:14px}.inline{display:flex;gap:6px;align-items:center}.metricgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:14px 0}.metric{padding:15px}.metricname{font-weight:850}.metricnums{display:flex;align-items:baseline;gap:7px;margin-top:10px}.metricnums b{font-size:24px}.metricnums span,.metricsub{font-size:11px;color:var(--muted)}.progress{height:7px;background:#edf0f5;border-radius:999px;overflow:hidden;margin:8px 0}.progress i{display:block;height:100%;background:#2f68e5}.loginbody{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#0f1728,#203b7f)}.loginbox{width:min(420px,92vw);background:white;border-radius:16px;padding:24px;box-shadow:0 30px 80px rgba(0,0,0,.3)}.loginlogo{font-size:27px;font-weight:900}.loginlogo span{color:var(--blue)}.loginbox p,.loginbox small{color:var(--muted)}.loginbox label{display:block;margin-top:10px;font-size:12px;font-weight:800}.loginbox input{width:100%;padding:10px;border:1px solid #d7dde7;border-radius:8px;margin:5px 0 8px}.flashwrap{max-width:1000px;margin:10px auto 0}.flash{padding:10px 12px;border-radius:8px;margin:7px 0;font-size:13px}.flash.ok{background:#e3f5eb;color:#086d47}.flash.error{background:#fff0f1;color:#a82f3d}.oktext{color:var(--ok)}.errtext{color:var(--bad)}.empty{text-align:center;color:var(--muted);padding:35px!important}
@media(max-width:1000px){.metricgrid{grid-template-columns:1fr 1fr}.grid2{grid-template-columns:1fr}.checks{grid-template-columns:1fr 1fr}.sourcegrid{grid-template-columns:1fr}.topbar nav a{padding:0 7px;font-size:12px}.username{display:none}}

.tasktoggle{
  width:110px;border:1px solid transparent;border-radius:8px;padding:8px 7px;
  font-weight:900;font-size:11px;letter-spacing:.02em;cursor:pointer;transition:.12s ease;
}
.tasktoggle.todo{background:#fde8e8;color:#a43c3c;border-color:#f6caca}
.tasktoggle.todo:hover{background:#fbdede}
.tasktoggle.done{background:#dff4e8;color:#13704b;border-color:#c4e8d4}
.tasktoggle.done:hover{background:#d3efdf}


.deadline-zone{margin:8px 0 12px}
.deadline-zone-title{font-size:13px;font-weight:950;letter-spacing:.065em;color:#b4232f;text-transform:uppercase;margin:0 2px 7px}
.deadline-zone-title.pending{background:#fff1f2;border:2px solid #e54855;border-radius:9px;padding:10px 12px;color:#b4232f}
.deadline-list{display:grid;gap:6px}
.deadline-item{background:#fff;border:2px solid #e54855;border-radius:10px;overflow:hidden;box-shadow:0 3px 10px rgba(184,59,75,.08)}
.deadline-item summary{list-style:none;cursor:pointer;padding:10px 12px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.deadline-item summary::-webkit-details-marker{display:none}
.deadline-date{color:#b4232f;font-size:14px;font-weight:1000;letter-spacing:.035em;white-space:nowrap}
.deadline-title{font-size:13px;font-weight:950;color:#7f1d1d;flex:1;text-transform:uppercase}
.deadline-click{font-size:10px;font-weight:900;color:#b4232f;border:1px solid #efb1b8;border-radius:999px;padding:4px 7px;white-space:nowrap}
.deadline-item[open] .deadline-click{background:#b4232f;color:#fff;border-color:#b4232f}
.deadline-detail{border-top:1px solid #f2c5ca;background:#fff7f7;padding:10px 12px;font-size:12px;color:#5d2730}
.deadline-description{font-weight:650;margin:5px 0}


/* ===== MONITOR LAYOUT: una sola scrollbar verticale ===== */
html, body {height: 100%;}
.monitor-body{height:100vh;overflow:hidden;}
.monitorpage{
  height:calc(100vh - 58px);
  padding:14px 22px 18px;
  display:flex;
  flex-direction:column;
  gap:8px;
  overflow:hidden;
}
.monitorpage .pagehead{margin-bottom:0}
.monitorpage .pagehead h1{font-size:22px}
.monitorpage .pagehead p{font-size:13px}
.monitorpage .monthbar{margin-bottom:0;padding:8px 10px}
.monitorpage .monthnote{margin:0 2px 6px}

/* La pagina non scorre più: scorre solo la griglia */
.monitorpage .sheetwrap{
  flex:1;
  min-height:0;
  max-height:none;
  overflow:auto;
}

/* Tabella più compatta e più simile a Excel */
.monitorpage .sheet{min-width:1520px}
.monitorpage .sheet th,
.monitorpage .sheet td{padding:7px 8px}
.monitorpage .sheet thead th{font-size:10.5px}
.monitorpage .sheet thead th.taskhead{height:62px}
.monitorpage .taskhead div{line-height:1.2}
.monitorpage .clientcell a{font-size:13px}
.monitorpage .clientcell small{font-size:10.5px}
.monitorpage .ownercell{font-size:12px}
.monitorpage .taskcell{min-width:120px}
.monitorpage .tasktoggle{width:96px;padding:7px 6px;font-size:10.5px}

/* Prime colonne sticky più “foglio di lavoro” */
.monitorpage .c1{min-width:198px!important;width:198px}
.monitorpage .c2{left:198px;min-width:112px!important;width:112px}
.monitorpage .c3{left:310px;min-width:88px!important;width:88px}

/* Scadenze molto visibili ma più compatte */
.monitorpage .deadline-zone{margin:0 0 2px}
.monitorpage .deadline-zone-title{
  margin:0;
  font-size:14px;
  font-weight:1000;
  letter-spacing:.08em;
}
.monitorpage .deadline-list{display:flex;flex-direction:column;gap:5px}
.monitorpage .deadline-item{
  border-radius:9px;
  box-shadow:none;
}
.monitorpage .deadline-item summary{
  padding:8px 10px;
  gap:10px;
  min-height:38px;
}
.monitorpage .deadline-date{
  font-size:13px;
  font-weight:1000;
}
.monitorpage .deadline-title{
  font-size:12px;
  font-weight:950;
  line-height:1.2;
}
.monitorpage .deadline-click{
  font-size:10px;
  padding:4px 8px;
}
.monitorpage .deadline-detail{
  padding:9px 10px;
  font-size:12px;
}

/* Evita seconda barra orizzontale della pagina */
.monitor-body .flashwrap{max-width:none;padding:0 22px}
.monitor-body{overflow:hidden}


/* ===== v14: scroll verticale SOLO del browser ===== */
.monitor-body{
  height:auto !important;
  min-height:100vh;
  overflow-y:auto !important;
  overflow-x:hidden;
}
.monitorpage{
  height:auto !important;
  min-height:calc(100vh - 58px);
  display:block !important;
  overflow:visible !important;
}
.monitorpage .pagehead{margin-bottom:14px}
.monitorpage .monthbar{margin-bottom:10px}
.monitorpage .deadline-zone{margin:8px 0 10px}
.monitorpage .monthnote{margin:8px 2px 10px}

/* Nessuna scrollbar verticale interna alla tabella */
.monitorpage .sheetwrap{
  display:block;
  max-height:none !important;
  height:auto !important;
  min-height:0 !important;
  overflow-y:visible !important;
  overflow-x:auto;
}

/* Con lo scroll del browser, l'intestazione resta visibile sotto la topbar */
.monitorpage .sheet thead th{
  top:58px;
}


/* ===== v15: niente cliente tagliato + niente 2025 ===== */
/* Lo scroll verticale è SOLO quello del browser.
   L'header non viene più traslato verso il basso sopra la prima riga. */
.monitorpage .sheet thead th{
  position:relative !important;
  top:auto !important;
}

/* Le prime 3 colonne restano bloccate solo orizzontalmente. */
.monitorpage .sheet thead th.sticky{
  position:sticky !important;
  top:auto !important;
}
.monitorpage .sheet tbody td.sticky{
  position:sticky !important;
}

/* Nessuno spazio fantasma sopra l'intestazione della tabella. */
.monitorpage .sheetwrap{
  padding-top:0 !important;
}
.monitorpage .sheet{
  margin-top:0 !important;
}


/* ===== v16: INPS per singolo socio + evidenza cliente al passaggio mouse ===== */
.inps-details{position:relative;min-width:108px}
.inps-details summary{list-style:none}
.inps-details summary::-webkit-details-marker{display:none}
.inps-summary{
  width:108px;
  margin:auto;
  border:1px solid transparent;
  border-radius:8px;
  padding:7px 6px;
  font-weight:900;
  font-size:10.5px;
  letter-spacing:.01em;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:5px;
}
.inps-summary.todo{background:#fde8e8;color:#a43c3c;border-color:#f6caca}
.inps-summary.todo:hover{background:#fbdede}
.inps-summary.done{background:#dff4e8;color:#13704b;border-color:#c4e8d4}
.inps-caret{font-size:10px}
.inps-details[open] .inps-caret{transform:rotate(180deg)}
.inps-subject-list{
  margin:7px auto 2px;
  width:245px;
  max-width:245px;
  border:1px solid var(--line);
  border-radius:9px;
  background:#fff;
  box-shadow:0 10px 24px rgba(23,32,51,.12);
  overflow:hidden;
}
.inps-subject-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:8px;
  border-bottom:1px solid var(--line);
}
.inps-subject-row:last-child{border-bottom:0}
.inps-subject-name{text-align:left;min-width:0}
.inps-subject-name b{display:block;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.inps-subject-name small{display:block;color:var(--muted);font-size:9.5px;margin-top:2px}
.inps-subject-row .tasktoggle{width:78px;min-width:78px;padding:6px 4px}

/* Evidenzia il nome cliente quando si passa sopra un pulsante rosso DA FARE. */
.sheet tbody tr.task-hover-row .clientcell{
  background:#fff3b0 !important;
  box-shadow:inset 4px 0 #f59e0b, 4px 0 12px rgba(245,158,11,.18);
}
.sheet tbody tr.task-hover-row .clientcell a{
  color:#8a3b00;
  text-decoration:underline;
  text-decoration-thickness:2px;
  text-underline-offset:2px;
}


/* ===== v16b: periodo liquidazione IVA per cliente ===== */
.vat-period-label{
  margin:0 auto 5px;
  width:max-content;
  max-width:112px;
  padding:2px 6px;
  border-radius:999px;
  background:#eef2ff;
  color:#3b4a7a;
  font-size:9px;
  font-weight:900;
  letter-spacing:.035em;
  text-transform:uppercase;
  white-space:nowrap;
}


/* ===== v17 UNIFICATO: browser scroll + header fisso + IVA compatta ===== */
/* Nessun contenitore verticale interno: lo scroll verticale (e, se serve,
   quello orizzontale) è quello del browser. In questo modo l'header della
   matrice può restare sticky mentre si scorre la pagina. */
.monitor-body{
  height:auto !important;
  min-height:100vh;
  overflow-y:auto !important;
  overflow-x:auto !important;
}
.monitorpage{
  height:auto !important;
  min-height:calc(100vh - 58px);
  overflow:visible !important;
}
.monitorpage .sheetwrap{
  overflow:visible !important;
  max-height:none !important;
  height:auto !important;
}
.monitorpage .sheet{
  margin-top:0 !important;
}

/* Riga Cliente / Resp. / Gestione / attività sempre visibile scendendo. */
.monitorpage .sheet thead th{
  position:sticky !important;
  top:58px !important;
  z-index:30 !important;
  box-shadow:0 1px 0 var(--line), 0 4px 10px rgba(23,32,51,.06);
}
.monitorpage .sheet thead th.sticky{
  position:sticky !important;
  top:58px !important;
  z-index:40 !important;
}
.monitorpage .sheet tbody td.sticky{
  position:sticky !important;
  z-index:6 !important;
}

/* Dettaglio acquisti/vendite e corrispettivi dentro Liquidazione IVA. */
.vat-cell{display:flex;flex-direction:column;align-items:center;gap:4px}
.vat-details{width:100%;margin-top:1px}
.vat-details summary{
  list-style:none;
  cursor:pointer;
  width:max-content;
  margin:0 auto;
  padding:3px 6px;
  border-radius:999px;
  font-size:9px;
  font-weight:900;
  color:#46536a;
  background:#f1f4f8;
  border:1px solid #dfe4ec;
}
.vat-details summary::-webkit-details-marker{display:none}
.vat-details[open] summary{background:#e7edf7;color:#263b63}
.vat-subtask-list{
  width:260px;
  margin:6px auto 0;
  border:1px solid var(--line);
  border-radius:9px;
  background:white;
  box-shadow:0 10px 24px rgba(23,32,51,.13);
  overflow:hidden;
}
.vat-subtask-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:8px;
  border-bottom:1px solid var(--line);
  text-align:left;
}
.vat-subtask-row:last-child{border-bottom:0}
.vat-subtask-row>span{font-size:10.5px;font-weight:750;line-height:1.2}
.vat-subtask-toggle{width:82px!important;min-width:82px;padding:6px 4px!important;font-size:9px!important}

/* Il badge periodo vale sia per Liquidazione IVA sia per LIPE. */
.vat-period-label{max-width:150px}


/* ===== v20: semplicità + filtro SOLO DA FARE ===== */
.monitor-actions{display:flex;align-items:center;gap:8px}
.todo-filter-hidden{display:none!important}

/* LIPE: la testata contiene già il trimestre, quindi la cella resta compatta. */
.taskcell .vat-period-label{font-size:9px}


/* ===== v21: liquidazione IVA esplicita per periodicità ===== */
.vat-mode-label{
  font-size:10px;
  font-weight:950;
  color:#4b5567;
  letter-spacing:.045em;
  margin-bottom:2px;
}
.vat-period-label{
  font-weight:900;
  color:#183a7a;
}


/* ===== v22: Task + Calendario ===== */
.taskpage,.calendarpage{max-width:1500px}
.task-toolbar{display:flex;justify-content:space-between;margin-bottom:10px}
.task-filters{display:flex;gap:6px}
.quick-task-form{
  padding:10px;
  display:grid;
  grid-template-columns:2.2fr 160px 1.5fr 1fr 1.5fr auto;
  gap:7px;
  margin-bottom:12px;
}
.quick-task-form input,.quick-task-form select,
.calendar-quick-form input,.calendar-quick-form select{
  border:1px solid #d7dde7;border-radius:8px;padding:9px;background:white;min-width:0
}
.task-list{overflow:hidden}
.task-row{
  display:grid;grid-template-columns:90px 62px 1fr 38px;
  gap:9px;align-items:center;padding:9px 11px;border-bottom:1px solid var(--line)
}
.task-row:last-child{border-bottom:0}
.task-row.task-overdue{background:#fff1f2}
.task-row.task-today{background:#fff8e7}
.task-check{
  border:1px solid transparent;border-radius:8px;padding:7px 6px;
  font-weight:900;font-size:10.5px;cursor:pointer
}
.task-check.todo{background:#fde8e8;color:#a43c3c;border-color:#f6caca}
.task-check.done{background:#dff4e8;color:#13704b;border-color:#c4e8d4}
.task-date{font-weight:900;font-size:12px}
.task-main b{display:block}
.task-main small{display:block;color:var(--muted);margin-top:2px}

.calendar-head{align-items:center}
.calendar-nav{display:flex;align-items:center;gap:10px}
.calendar-nav b{min-width:170px;text-align:center;text-transform:uppercase}
.calendar-legend{display:flex;gap:7px;margin:0 0 9px}
.cal-legend{font-size:10px;font-weight:900;border-radius:999px;padding:5px 8px}
.cal-legend.fiscal{background:#ffe1e4;color:#a62331}
.cal-legend.task{background:#fff0cc;color:#8a5b00}
.cal-legend.event{background:#e4edff;color:#244f9c}

.calendar-grid{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  overflow:hidden;
}
.calendar-weekday{
  background:#f1f4f8;padding:8px;text-align:center;
  font-size:10px;font-weight:900;color:#687386;border-right:1px solid var(--line)
}
.calendar-day{
  min-height:145px;padding:7px;border-right:1px solid var(--line);
  border-top:1px solid var(--line);background:#fff;min-width:0
}
.calendar-day:nth-child(7n){border-right:0}
.calendar-day.empty-day{background:#f7f8fa}
.calendar-today{box-shadow:inset 0 0 0 2px #2563eb}
.calendar-day-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px}
.calendar-day-head>b{font-size:12px}
.cal-add{
  width:23px;height:23px;border-radius:6px;background:#eef2f8;
  display:grid;place-items:center;font-weight:900;color:#334155
}
.cal-item{border-radius:7px;padding:5px 6px;margin:4px 0;font-size:10px;line-height:1.2;overflow:hidden}
.cal-item b{display:block;white-space:normal}
.cal-item small{display:block;margin-top:2px;opacity:.82}
.cal-fiscal{background:#ffe4e6;color:#941f2d;border-left:3px solid #d73344}
.cal-task{background:#fff0cc;color:#795000;border-left:3px solid #d69a1e}
.cal-event{background:#e7efff;color:#23498d;border-left:3px solid #4779d9}
.cal-done{opacity:.5;text-decoration:line-through}
.cal-event-line{display:flex;justify-content:space-between;gap:4px;align-items:flex-start}
.cal-event-line form{margin:0}
.cal-delete{border:0;background:transparent;color:inherit;cursor:pointer;font-weight:900;padding:0 2px}
.calendar-quick-form{
  margin-top:12px;padding:12px;display:grid;
  grid-template-columns:1.8fr 150px 120px 1.4fr 1fr 1.4fr auto;
  gap:7px;align-items:end
}
.calendar-quick-form h3{grid-column:1/-1;margin:0 0 3px}

@media(max-width:1100px){
  .quick-task-form,.calendar-quick-form{grid-template-columns:1fr 1fr}
  .calendar-quick-form h3{grid-column:1/-1}
  .calendar-grid{min-width:980px}
  .calendarpage{overflow-x:auto}
}


/* ===== v25: workflow paghe Inserito -> Prenotato/Inviato ===== */
.tasktoggle.locked{
  background:#eef1f5;
  color:#8a94a6;
  border-color:#dce1e8;
  cursor:not-allowed;
  opacity:.85;
}
.tasktoggle.locked:hover{background:#eef1f5}


/* ===== v26: monitor tutto in una pagina, nessuno scroll orizzontale ===== */
.monitor-body{
  overflow-x:hidden !important;
}
.monitorpage{
  width:100%;
  max-width:none;
  padding-left:12px;
  padding-right:12px;
  overflow-x:hidden !important;
}
.monitorpage .sheetwrap{
  width:100%;
  overflow:visible !important;
}
.monitorpage .sheet{
  width:100% !important;
  min-width:0 !important;
  max-width:100% !important;
  table-layout:fixed !important;
  border-collapse:separate;
}
.monitorpage .sheet th,
.monitorpage .sheet td{
  min-width:0 !important;
  width:auto !important;
  max-width:none !important;
  padding:6px 4px !important;
  text-align:center;
  vertical-align:middle;
  overflow-wrap:anywhere;
  word-break:normal;
}
.monitorpage .sheet thead th{
  height:82px;
  font-size:9.5px;
  line-height:1.15;
  white-space:normal !important;
}
.monitorpage .sheet tbody td{
  height:72px;
}
.monitorpage .sheet .c1{
  left:auto !important;
  min-width:0 !important;
  width:auto !important;
  max-width:none !important;
}
.monitorpage .sheet tbody td.c1{
  text-align:left;
}
.monitorpage .sheet tbody td.sticky{
  position:relative !important;
  left:auto !important;
}
.monitorpage .sheet thead th.sticky{
  left:auto !important;
}
.monitorpage .taskcell{
  min-width:0 !important;
}
.monitorpage .tasktoggle,
.monitorpage .inps-summary{
  width:92% !important;
  min-width:0 !important;
  max-width:112px;
  padding:7px 3px !important;
  white-space:normal;
  line-height:1.05;
}
.monitorpage .vat-period-label{
  max-width:100%;
  white-space:normal;
  line-height:1.05;
}
.client-management{
  margin-top:5px;
}
.client-management .tag{
  font-size:8.5px;
  padding:3px 5px;
  white-space:normal;
  text-align:center;
}
.monitorpage .clientcell a{
  display:block;
  font-size:11px;
  line-height:1.12;
}
.monitorpage .clientcell small{
  font-size:9px;
  line-height:1.1;
}

/* Le vecchie classi delle colonne Resp./Gestione non devono più riservare spazio. */
.monitorpage .c2,.monitorpage .c3{
  left:auto !important;
  min-width:0 !important;
  width:auto !important;
}

/* Nessuna scrollbar orizzontale neppure sul body. */
html,body{
  max-width:100%;
  overflow-x:hidden;
}


/* ===== v27: sezione amministratore FINANZIARI annuale ===== */
.financial-admin-section{
  margin:18px 0 20px;
}
.financial-section-head{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:16px;
  margin-bottom:10px;
}
.financial-section-head h2{
  margin:0;
  font-size:20px;
}
.financial-section-head p{
  margin:4px 0 0;
  color:var(--muted);
  font-size:12px;
  max-width:900px;
}
.financial-year-form{
  display:flex;
  flex-direction:column;
  gap:4px;
  min-width:210px;
}
.financial-year-form label{
  font-size:10px;
  font-weight:900;
  color:var(--muted);
  text-transform:uppercase;
}
.financial-year-form input{
  width:110px;
  border:1px solid var(--line);
  border-radius:8px;
  padding:7px 8px;
  background:#fff;
}
.financial-employee-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.financial-employee-card{
  padding:13px;
}
.financial-card-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:12px;
}
.financial-employee-name{
  font-weight:900;
  font-size:15px;
}
.financial-client-count{
  margin-top:2px;
  color:var(--muted);
  font-size:11px;
}
.financial-big-pct{
  font-size:27px;
  line-height:1;
  font-weight:950;
}
.financial-progress{
  margin:10px 0 5px;
}
.financial-summary{
  color:var(--muted);
  font-size:11px;
  margin-bottom:9px;
}
.financial-summary b{
  color:var(--text);
}
.financial-month-grid{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:5px;
}
.financial-month-cell{
  min-width:0;
  min-height:54px;
  padding:6px 4px;
  border:1px solid var(--line);
  border-radius:7px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  background:#fff;
}
.financial-month-cell span{
  font-size:9px;
  font-weight:950;
}
.financial-month-cell b{
  margin-top:2px;
  font-size:11px;
}
.financial-month-cell small{
  margin-top:1px;
  font-size:8px;
}
.financial-month-cell.complete{
  background:#dff4e8;
  border-color:#c4e8d4;
  color:#13704b;
}
.financial-month-cell.partial{
  background:#fff1cf;
  border-color:#efd893;
  color:#7d5900;
}
.financial-month-cell.todo{
  background:#fde8e8;
  border-color:#f6caca;
  color:#a43c3c;
}
.financial-month-cell.future{
  background:#f3f5f8;
  color:#9aa3b1;
}
a.financial-month-cell:hover{
  box-shadow:0 3px 10px rgba(25,38,60,.10);
  transform:translateY(-1px);
}

@media(max-width:1050px){
  .financial-employee-grid{grid-template-columns:1fr}
  .financial-section-head{align-items:flex-start;flex-direction:column}
}


/* ===== v29: intestazioni Monitor fisse con scroll del browser ===== */
/* Nessuno scroll verticale interno: si continua a usare SOLO lo scroll del browser.
   Quando si scende, la riga Cliente + attività resta visibile sotto la topbar. */
.monitorpage .sheet thead th,
.monitorpage .sheet thead th.sticky{
  position:sticky !important;
  top:58px !important;
  z-index:35 !important;
  background:#f8fafc !important;
  box-shadow:0 2px 0 rgba(23,32,51,.08);
}

/* La cella Cliente dell'intestazione ha lo stesso comportamento delle altre. */
.monitorpage .sheet thead .c1{
  position:sticky !important;
  top:58px !important;
  left:auto !important;
  z-index:36 !important;
}

/* Il corpo continua a scorrere normalmente con il browser. */
.monitorpage .sheet tbody td,
.monitorpage .sheet tbody td.sticky{
  position:relative !important;
  top:auto !important;
}


/* ===== v30: scadenze compatte a riquadri orizzontali ===== */
.monitorpage .deadline-zone{
  margin:10px 0 8px;
}
.deadline-zone-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin:0 2px 7px;
}
.monitorpage .deadline-zone-title{
  margin:0;
  color:#27364f;
  font-size:13px;
  font-weight:900;
  letter-spacing:.015em;
  text-transform:none;
}
.deadline-count{
  color:#7b8799;
  font-size:10px;
  font-weight:800;
  background:#edf1f6;
  border:1px solid #e0e6ee;
  border-radius:999px;
  padding:4px 8px;
}
.monitorpage .deadline-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(245px,1fr));
  gap:8px;
}
.monitorpage .deadline-item{
  min-width:0;
  border:1px solid #dce4ee;
  border-radius:11px;
  background:#fbfcfe;
  box-shadow:0 2px 7px rgba(31,45,68,.045);
  overflow:hidden;
  transition:border-color .14s ease,box-shadow .14s ease,transform .14s ease;
}
.monitorpage .deadline-item:hover{
  border-color:#bdc9d8;
  box-shadow:0 5px 14px rgba(31,45,68,.07);
  transform:translateY(-1px);
}
.monitorpage .deadline-item summary{
  min-height:64px;
  padding:9px 10px;
  display:grid;
  grid-template-columns:auto minmax(0,1fr) 22px;
  gap:9px;
  align-items:center;
  list-style:none;
  cursor:pointer;
}
.monitorpage .deadline-item summary::-webkit-details-marker{display:none}
.deadline-datebox{
  min-width:88px;
  padding:7px 8px;
  border-radius:8px;
  background:#eef3f8;
  border:1px solid #e0e8f1;
  text-align:center;
}
.monitorpage .deadline-date{
  color:#314968;
  font-size:11px;
  font-weight:950;
  letter-spacing:.01em;
  white-space:nowrap;
}
.deadline-copy{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:3px;
}
.monitorpage .deadline-title{
  color:#26364d;
  font-size:11px;
  line-height:1.18;
  font-weight:900;
  text-transform:none;
  overflow-wrap:anywhere;
}
.deadline-period{
  width:max-content;
  max-width:100%;
  color:#66758a;
  background:#f0f3f7;
  border-radius:999px;
  padding:2px 6px;
  font-size:8.5px;
  font-weight:850;
  text-transform:uppercase;
  white-space:nowrap;
}
.monitorpage .deadline-click{
  width:22px;
  height:22px;
  padding:0;
  display:grid;
  place-items:center;
  border:0;
  border-radius:7px;
  background:#edf2f7;
  color:#566981;
  font-size:13px;
  font-weight:950;
}
.monitorpage .deadline-item[open] .deadline-click{
  background:#dfe7f0;
  color:#314968;
  transform:rotate(180deg);
}
.monitorpage .deadline-detail{
  border-top:1px solid #e7ecf2;
  background:#f8fafc;
  padding:8px 10px 9px;
  color:#4d5d72;
  font-size:10.5px;
}
.monitorpage .deadline-description{
  margin:0;
  font-weight:600;
  line-height:1.35;
}
.deadline-meta{
  margin-top:6px;
  color:#7a8798;
  font-size:9px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.025em;
}

/* Accenti morbidi per riconoscere le categorie senza effetto "allarme". */
.deadline-code-payroll-f24{border-top:3px solid #7489ad !important}
.deadline-code-vat-monthly-f24,
.deadline-code-vat-quarterly-f24,
.deadline-code-vat-advance{border-top:3px solid #5e8ea8 !important}
.deadline-code-inps-fixed-art-com{border-top:3px solid #b49a68 !important}
.deadline-code-lipe{border-top:3px solid #6d9b8e !important}

/* Stato non verificato: neutro, non rosso aggressivo. */
.monitorpage .deadline-zone-title.pending{
  background:#f5f7fa;
  border:1px dashed #c9d2de;
  border-radius:9px;
  padding:9px 11px;
  color:#66758a;
  text-transform:none;
}

@media(max-width:1050px){
  .monitorpage .deadline-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media(max-width:700px){
  .monitorpage .deadline-grid{
    grid-template-columns:1fr;
  }
}


/* ===== v31: Calendario in un'unica schermata ===== */
.calendar-body{
  height:100vh;
  overflow:hidden;
}
.calendar-one-screen{
  height:calc(100vh - 58px);
  max-width:none;
  padding:10px 14px 12px;
  display:flex;
  flex-direction:column;
  gap:7px;
  overflow:hidden;
}
.calendar-topline{
  min-height:38px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
}
.calendar-title-block{
  display:flex;
  align-items:center;
  gap:14px;
  min-width:0;
}
.calendar-title-block h1{
  margin:0;
  font-size:21px;
  line-height:1;
}
.calendar-one-screen .calendar-legend{
  margin:0;
  display:flex;
  align-items:center;
  gap:5px;
}
.calendar-one-screen .cal-legend{
  padding:3px 6px;
  font-size:8.5px;
}
.calendar-one-screen .calendar-nav{
  flex:none;
}
.calendar-one-screen .calendar-nav b{
  min-width:150px;
  font-size:12px;
}

.calendar-quickbar{
  flex:none;
  display:grid;
  grid-template-columns:minmax(180px,2.1fr) 138px 105px minmax(150px,1.4fr) minmax(120px,1fr) minmax(120px,1.2fr) auto;
  gap:6px;
  padding:7px;
  align-items:center;
}
.calendar-quickbar input,
.calendar-quickbar select{
  width:100%;
  min-width:0;
  height:34px;
  border:1px solid #d7dde7;
  border-radius:7px;
  padding:6px 8px;
  background:#fff;
  font-size:11px;
}
.calendar-quickbar .btn{
  height:34px;
  padding:6px 10px;
  font-size:10px;
}

.calendar-grid-fit{
  flex:1;
  min-height:0;
  width:100%;
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  overflow:hidden;
}
.calendar-one-screen .calendar-weekday{
  min-height:0;
  height:auto;
  padding:6px 5px;
  font-size:9px;
}
.calendar-one-screen .calendar-day{
  min-height:0 !important;
  height:auto !important;
  padding:4px 5px;
  overflow:hidden;
}
.calendar-one-screen .calendar-day-head{
  height:20px;
  margin-bottom:2px;
}
.calendar-one-screen .calendar-day-head>b{
  font-size:10px;
}
.calendar-one-screen .cal-add{
  width:18px;
  height:18px;
  border:0;
  font-size:11px;
  cursor:pointer;
}
.calendar-day-items{
  height:calc(100% - 22px);
  overflow:hidden;
}
.calendar-one-screen .cal-item{
  margin:2px 0;
  padding:3px 4px;
  border-radius:5px;
  font-size:8.5px;
  line-height:1.08;
}
.calendar-one-screen .cal-item b{
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.calendar-one-screen .cal-item small{
  margin-top:1px;
  font-size:7.5px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.calendar-one-screen .calendar-today{
  box-shadow:inset 0 0 0 2px #4f75b8;
}

@media(max-width:1100px){
  .calendar-body{overflow:auto}
  .calendar-one-screen{
    height:auto;
    min-height:calc(100vh - 58px);
    overflow:visible;
  }
  .calendar-quickbar{
    grid-template-columns:1fr 1fr 1fr;
  }
  .calendar-grid-fit{
    min-width:920px;
    min-height:650px;
  }
}


/* ===== v32: header Monitor realmente sticky ===== */
/* Sticky sull'intero THEAD è più affidabile in Chromium rispetto al singolo TH
   con la tabella responsive/table-layout fixed. */
.monitorpage .sheet thead{
  position:sticky !important;
  top:58px !important;
  z-index:44 !important;
}
.monitorpage .sheet thead th,
.monitorpage .sheet thead th.sticky,
.monitorpage .sheet thead .c1{
  position:relative !important;
  top:auto !important;
  z-index:auto !important;
  background:#f8fafc !important;
}
.monitorpage .sheet thead{
  box-shadow:0 3px 8px rgba(23,32,51,.10);
}

/* PAYROLL_SENT è sempre indipendente: nessuno stato bloccato. */
.payroll-sent-toggle:disabled{
  pointer-events:auto;
}


/* =====================================================================
   v33 — MOBILE 100% + intestazione Monitor realmente fissa
   ===================================================================== */

/* IMPORTANTISSIMO PER LO STICKY:
   overflow:hidden sugli antenati crea un contenitore di scorrimento e impedisce
   agli header della tabella di restare ancorati alla viewport. Usiamo clip,
   che taglia l'eventuale eccedenza orizzontale SENZA creare scroll container. */
html,body{
  max-width:100%;
  overflow-x:clip !important;
}
.monitor-body{
  height:auto !important;
  min-height:100vh;
  overflow-x:clip !important;
  overflow-y:visible !important;
}
.monitorpage{
  height:auto !important;
  min-height:calc(100vh - 58px);
  overflow:visible !important;
}
.monitorpage .sheetwrap{
  overflow:visible !important;
  max-height:none !important;
}

/* DESKTOP: la riga Cliente + Finanziari + F24 + Liquidazione + VerMan + LIPE
   rimane sempre fissa sotto la topbar mentre si scorre col browser. */
.monitorpage .sheet thead{
  position:static !important;
  box-shadow:none !important;
}
.monitorpage .sheet thead th,
.monitorpage .sheet thead th.sticky,
.monitorpage .sheet thead .c1{
  position:sticky !important;
  top:58px !important;
  z-index:80 !important;
  background:#f8fafc !important;
  box-shadow:0 2px 0 rgba(23,32,51,.10),0 5px 10px rgba(23,32,51,.04);
}

/* ---------- Navigazione mobile ---------- */
.nav-toggle,.mobile-nav-footer{display:none}

@media(max-width:900px){
  body{font-size:14px}
  .topbar{
    height:56px;
    padding:0 12px;
    gap:10px;
  }
  .brand{font-size:16px;white-space:nowrap}
  .desktop-session{display:none!important}
  .nav-toggle{
    display:flex;
    margin-left:auto;
    width:42px;
    height:42px;
    border:0;
    border-radius:9px;
    background:#1d293d;
    flex-direction:column;
    justify-content:center;
    align-items:center;
    gap:4px;
    cursor:pointer;
  }
  .nav-toggle span{
    display:block;
    width:19px;
    height:2px;
    border-radius:999px;
    background:#fff;
    transition:.15s ease;
  }
  .nav-toggle.open span:nth-child(1){transform:translateY(6px) rotate(45deg)}
  .nav-toggle.open span:nth-child(2){opacity:0}
  .nav-toggle.open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

  .topbar nav{
    display:none;
    position:fixed;
    top:56px;
    left:0;
    right:0;
    bottom:0;
    z-index:100;
    height:auto;
    background:#101827;
    padding:10px 12px calc(16px + env(safe-area-inset-bottom));
    overflow-y:auto;
    flex-direction:column;
    box-shadow:0 12px 30px rgba(0,0,0,.25);
  }
  .topbar nav.mobile-open{display:flex}
  .topbar nav a{
    min-height:48px;
    padding:0 12px;
    border-bottom:0;
    border-radius:8px;
    font-size:15px;
  }
  .topbar nav a.active{
    background:#1c2b44;
    border-bottom:0;
  }
  .mobile-nav-footer{
    display:flex;
    margin-top:auto;
    border-top:1px solid #2a374c;
    padding:14px 5px 0;
    align-items:center;
    justify-content:space-between;
    color:#c7d0df;
  }
  .mobile-nav-footer a{
    min-height:auto!important;
    padding:7px 10px!important;
    background:#1c2b44;
    color:#fff!important;
  }
  .mobile-nav-open{overflow:hidden!important}

  /* Pagine */
  .page,.widepage,.narrow,.taskpage,.calendarpage{
    width:100%;
    max-width:none;
    padding:12px 10px calc(18px + env(safe-area-inset-bottom));
  }
  .pagehead{
    gap:10px;
    margin-bottom:10px;
    align-items:stretch;
    flex-direction:column;
  }
  .pagehead h1{font-size:21px}
  .pagehead p{font-size:12px}
  .pagehead>.btn,.monitor-actions .btn{min-height:42px}
  .monitor-actions{display:flex;gap:6px;flex-wrap:wrap}
  .monitor-actions>*{flex:1 1 160px;text-align:center}

  /* Mesi: niente scrollbar orizzontale, i mesi vanno su più righe */
  .monthbar{
    width:100%!important;
    padding:8px;
    gap:7px;
    flex-wrap:wrap;
    align-items:stretch;
  }
  .yearnav{width:100%;justify-content:space-between}
  .monthtabs{
    width:100%;
    flex:auto;
    overflow:visible;
    flex-wrap:wrap;
    gap:3px;
  }
  .monthtabs a{
    flex:1 0 calc(16.666% - 3px);
    text-align:center;
    padding:7px 3px;
    font-size:11px;
  }
  .ownerfilter{width:100%}
  .ownerfilter select{width:100%}

  /* Scadenze */
  .monitorpage .deadline-grid{grid-template-columns:1fr}
  .monitorpage .deadline-item summary{
    grid-template-columns:86px minmax(0,1fr) 22px;
    min-height:58px;
  }
  .deadline-zone-head{align-items:center}
  .monthnote{font-size:11px;line-height:1.35}
  .monthnote .aiok,.monthnote .aiwarn,.monthnote .aierr{
    display:block;
    margin:4px 0 0;
  }

  /* MONITOR MOBILE:
     niente mini-tabella illeggibile. Ogni cliente diventa una scheda verticale.
     Ogni attività porta con sé la propria etichetta. */
  .monitorpage .sheetwrap{
    background:transparent;
    border:0;
    box-shadow:none;
    overflow:visible!important;
  }
  .monitorpage .sheet,
  .monitorpage .sheet tbody{
    display:block;
    width:100%!important;
    min-width:0!important;
  }
  .monitorpage .sheet thead{display:none!important}
  .monitorpage .sheet tbody tr{
    display:block;
    width:100%;
    margin:0 0 10px;
    border:1px solid var(--line);
    border-radius:12px;
    overflow:hidden;
    background:#fff;
    box-shadow:0 3px 12px rgba(25,38,60,.05);
  }
  .monitorpage .sheet tbody td,
  .monitorpage .sheet tbody td.sticky{
    position:relative!important;
    display:grid;
    grid-template-columns:minmax(120px,42%) minmax(0,58%);
    align-items:center;
    min-height:52px!important;
    height:auto!important;
    width:100%!important;
    max-width:none!important;
    padding:8px 9px!important;
    border-right:0!important;
    border-bottom:1px solid var(--line)!important;
    text-align:right!important;
    background:#fff;
  }
  .monitorpage .sheet tbody td:last-child{border-bottom:0!important}
  .monitorpage .sheet tbody td.taskcell::before{
    content:attr(data-label);
    padding-right:8px;
    color:#657186;
    font-size:9px;
    line-height:1.18;
    font-weight:900;
    text-transform:uppercase;
    text-align:left;
  }
  .monitorpage .sheet tbody td.clientcell{
    display:block;
    min-height:auto!important;
    padding:11px!important;
    text-align:left!important;
    background:#f8fafc!important;
  }
  .monitorpage .clientcell a{font-size:14px}
  .monitorpage .clientcell small{font-size:10px}
  .client-management{margin-top:6px}
  .monitorpage .tasktoggle,
  .monitorpage .inps-summary{
    width:100%!important;
    max-width:none;
    min-height:38px;
    margin:0!important;
  }
  .monitorpage .taskcell.na::after{
    content:"—";
    color:#aab1bd;
  }
  .monitorpage .taskcell.na .na-mark{display:none}
  .monitorpage .vat-cell{width:100%}
  .inps-details{width:100%;min-width:0}
  .inps-summary{width:100%!important}
  .inps-subject-list{
    width:100%!important;
    max-width:none!important;
    box-shadow:none;
  }
  .inps-subject-row{padding:7px}

  /* Form cliente / dipendenti / admin */
  .formgrid,.grid2{grid-template-columns:1fr!important}
  .checks{grid-template-columns:1fr!important}
  .personrow{
    grid-template-columns:minmax(0,1fr) 120px 42px;
  }
  .actions{
    flex-direction:column-reverse;
    align-items:stretch;
  }
  .actions .btn{width:100%;text-align:center}
  .formcard{padding:12px}
  .inline{flex-wrap:wrap}
  .inline input,.inline select{min-width:0;flex:1 1 140px}

  /* Tabelle standard -> schede */
  .tablecard{overflow:visible}
  table.mobile-stack-table,
  table.mobile-stack-table tbody,
  table.mobile-stack-table tr,
  table.mobile-stack-table td{
    display:block;
    width:100%;
  }
  table.mobile-stack-table thead{display:none}
  table.mobile-stack-table tr{
    margin:0 0 9px;
    border:1px solid var(--line);
    border-radius:10px;
    overflow:hidden;
    background:#fff;
  }
  table.mobile-stack-table td{
    display:grid;
    grid-template-columns:36% minmax(0,64%);
    gap:8px;
    align-items:center;
    padding:9px 10px!important;
    border-bottom:1px solid var(--line)!important;
    text-align:right!important;
    overflow-wrap:anywhere;
  }
  table.mobile-stack-table td:last-child{border-bottom:0!important}
  table.mobile-stack-table td::before{
    content:attr(data-label);
    text-align:left;
    color:#6b778a;
    font-size:10px;
    font-weight:900;
    text-transform:uppercase;
  }
  table.mobile-stack-table td[data-label=""]{
    display:block;
    text-align:right!important;
  }
  table.mobile-stack-table td[data-label=""]::before{display:none}

  /* Metriche amministratore */
  .metricgrid{grid-template-columns:1fr!important}
  .financial-section-head{gap:10px}
  .financial-year-form{width:100%;min-width:0}
  .financial-year-form .inline{width:100%}
  .financial-year-form input{flex:1}
  .financial-month-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .financial-month-cell{min-height:52px}
  .financial-big-pct{font-size:24px}

  /* Task */
  .task-toolbar,.task-filters{width:100%}
  .task-filters{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}
  .task-filters .btn{text-align:center;padding:8px 4px}
  .quick-task-form{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:7px;
    padding:10px;
  }
  .quick-task-form input,.quick-task-form select,.quick-task-form .btn{
    width:100%;
    min-height:42px;
  }
  .task-row{
    grid-template-columns:88px 1fr 38px;
    gap:7px;
    padding:9px;
  }
  .task-date{font-size:11px}
  .task-main{grid-column:1/-1;grid-row:2}
  .task-main b{font-size:13px}
  .task-main small{font-size:10px;line-height:1.3}

  /* Calendario mobile = agenda verticale leggibile, nessun trascinamento orizzontale */
  .calendar-body{
    height:auto!important;
    overflow:auto!important;
  }
  .calendar-one-screen{
    height:auto!important;
    min-height:calc(100vh - 56px);
    overflow:visible!important;
    padding:10px;
  }
  .calendar-topline{
    flex-direction:column;
    align-items:stretch;
    gap:8px;
  }
  .calendar-title-block{
    justify-content:space-between;
    align-items:flex-start;
    gap:8px;
  }
  .calendar-title-block h1{font-size:20px}
  .calendar-one-screen .calendar-nav{
    width:100%;
    justify-content:space-between;
  }
  .calendar-one-screen .calendar-nav b{min-width:0;flex:1}
  .calendar-quickbar{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:6px;
    padding:9px;
  }
  .calendar-quickbar input,
  .calendar-quickbar select,
  .calendar-quickbar .btn{
    width:100%;
    min-height:42px;
    height:auto;
  }
  .calendar-grid-fit{display:none!important}
  .calendar-mobile-agenda{
    display:block;
  }
  .mobile-day-card{
    margin:0 0 8px;
    padding:8px;
    border:1px solid var(--line);
    border-radius:10px;
    background:#fff;
  }
  .mobile-day-card.calendar-today{
    box-shadow:inset 0 0 0 2px #4f75b8;
  }
  .mobile-day-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    min-height:30px;
    margin-bottom:3px;
  }
  .mobile-day-head b{font-size:12px}
  .mobile-day-head span{
    margin-left:6px;
    padding:2px 5px;
    border-radius:999px;
    background:#e8effc;
    color:#315a9e;
    font-size:8px;
    font-weight:900;
  }
  .mobile-day-items .cal-item{
    margin:4px 0;
    padding:7px;
    font-size:10px;
  }
  .mobile-day-empty{
    color:#a1a8b4;
    font-size:10px;
    padding:4px 0;
  }

  /* Login e touch */
  .loginbox{padding:18px}
  .btn,button,input,select,textarea{touch-action:manipulation}
  .btn{min-height:40px}
}

@media(min-width:901px){
  .calendar-mobile-agenda{display:none}
}


/* ===== v34: polish operativo ===== */
.dashboard-user{
  font-weight:650;
  color:#758196;
  font-size:.62em;
}

/* Il giallo esiste SOLO mentre il mouse è fisicamente sopra una cella DA FARE.
   Appena il bottone diventa FATTO, :has(.todo) non è più vero e sparisce subito. */
.sheet tbody tr.task-hover-row .clientcell{
  background:inherit !important;
  box-shadow:none !important;
}
.sheet tbody tr.task-hover-row .clientcell a{
  color:#183a7a !important;
  text-decoration:none !important;
}
@media(hover:hover) and (pointer:fine){
  .sheet tbody tr:has(.taskcell:hover .tasktoggle.todo) .clientcell,
  .sheet tbody tr:has(.taskcell:hover .inps-summary.todo) .clientcell{
    background:#fff3b0 !important;
    box-shadow:inset 4px 0 #f59e0b,4px 0 12px rgba(245,158,11,.16) !important;
  }
  .sheet tbody tr:has(.taskcell:hover .tasktoggle.todo) .clientcell a,
  .sheet tbody tr:has(.taskcell:hover .inps-summary.todo) .clientcell a{
    color:#8a3b00 !important;
    text-decoration:underline !important;
    text-decoration-thickness:2px !important;
    text-underline-offset:2px !important;
  }
}

/* Calendario: priorità IMPEGNI -> TASK -> SCADENZE, massimo 3 visibili per giorno. */
.calendar-top-actions{
  display:flex;
  align-items:center;
  gap:8px;
}
.calendar-new-btn{white-space:nowrap}
.calendar-more{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:20px;
  margin-top:2px;
  border:1px dashed #c4ccd7;
  border-radius:6px;
  background:#f5f7fa;
  color:#637086;
  font-size:9px;
  font-weight:950;
  cursor:default;
}

/* Composer rapido appuntamenti */
.event-composer-backdrop{
  display:none;
  position:fixed;
  inset:0;
  z-index:500;
  background:rgba(15,23,40,.42);
  backdrop-filter:blur(3px);
  padding:20px;
  align-items:center;
  justify-content:center;
}
.event-composer-backdrop.open{display:flex}
.composer-open{overflow:hidden!important}
.event-composer-card{
  width:min(520px,100%);
  background:#fff;
  border:1px solid #dfe5ed;
  border-radius:16px;
  box-shadow:0 24px 70px rgba(15,23,40,.28);
  padding:15px;
  display:grid;
  gap:9px;
}
.event-composer-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
}
.event-composer-head h3{margin:0;font-size:18px}
.event-composer-head small{color:var(--muted)}
.event-composer-close{
  width:34px;height:34px;border:0;border-radius:9px;
  background:#eef2f6;color:#566174;font-size:20px;cursor:pointer
}
.event-composer-card input,.event-composer-card select{
  width:100%;
  height:42px;
  border:1px solid #d7dde7;
  border-radius:9px;
  padding:8px 10px;
  background:#fff;
}
.time-quick-row{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:4px;
}
.time-quick-row button{
  border:1px solid #dce3ec;
  background:#f5f7fa;
  border-radius:7px;
  padding:7px 2px;
  color:#4c5c72;
  font-size:10px;
  font-weight:850;
  cursor:pointer;
}
.time-quick-row button:hover,.time-quick-row button.selected{
  background:#e4edff;
  border-color:#b9cdf2;
  color:#244f9c;
}
.event-save-btn{min-height:42px}

/* Admin: numero ditte immediatamente leggibile */
.portfolio-admin-section{margin:16px 0 20px}
.portfolio-section-head h2{margin:0;font-size:20px}
.portfolio-section-head p{margin:4px 0 10px;color:var(--muted);font-size:12px}
.portfolio-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
}
.portfolio-card{padding:12px}
.portfolio-card-top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
}
.portfolio-name{font-weight:900;font-size:14px}
.portfolio-card-top small{color:var(--muted);font-size:10px}
.portfolio-total{font-size:28px;line-height:1;font-weight:950}
.portfolio-stats{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:6px;
  margin-top:10px;
}
.portfolio-stats>div{
  background:#f6f8fb;
  border:1px solid #e7ebf1;
  border-radius:8px;
  padding:7px;
  text-align:center;
}
.portfolio-stats span{display:block;font-size:8.5px;font-weight:900;color:#697588}
.portfolio-stats b{display:block;margin:2px 0;font-size:18px}
.portfolio-stats small{display:block;font-size:8.5px;color:#9a641d;min-height:10px}

@media(max-width:900px){
  .dashboard-user{display:block;margin-top:4px;font-size:.58em}
  .calendar-top-actions{width:100%;flex-direction:column}
  .calendar-new-btn{width:100%;min-height:42px}
  .calendar-top-actions .calendar-nav{width:100%}
  .event-composer-backdrop{
    align-items:flex-end;
    padding:0;
  }
  .event-composer-card{
    width:100%;
    max-height:92vh;
    overflow-y:auto;
    border-radius:18px 18px 0 0;
    padding:14px 12px calc(14px + env(safe-area-inset-bottom));
  }
  .time-quick-row{grid-template-columns:repeat(4,1fr)}
  .portfolio-grid{grid-template-columns:1fr}
}


/* ===== v36: mobile senza hamburger — navigazione sempre visibile ===== */
.nav-toggle,.mobile-nav-footer{display:none!important}

@media(max-width:900px){
  .mobile-hide-session{display:none!important}

  /* La topbar rimane minimale: logo + Esci. */
  .topbar{
    height:54px;
    padding:0 10px;
  }
  .brand{
    font-size:15px;
    flex:1;
  }
  .mobile-logout{
    display:inline-flex!important;
    min-height:34px!important;
    height:34px;
    padding:5px 9px!important;
    font-size:10px;
  }

  /* Il menu principale diventa una barra fissa in basso:
     nessun hamburger, un tocco per raggiungere ogni sezione. */
  .topbar nav,
  .topbar nav.mobile-open{
    display:grid!important;
    position:fixed!important;
    left:0!important;
    right:0!important;
    bottom:0!important;
    top:auto!important;
    z-index:150!important;
    height:64px!important;
    padding:0 4px calc(env(safe-area-inset-bottom) / 2)!important;
    grid-auto-flow:column;
    grid-auto-columns:1fr;
    gap:2px;
    background:#101827;
    border-top:1px solid #27344a;
    box-shadow:0 -5px 18px rgba(15,23,40,.18);
    overflow:visible!important;
  }
  .topbar nav a{
    min-width:0!important;
    min-height:54px!important;
    height:54px;
    padding:5px 2px!important;
    border:0!important;
    border-radius:8px!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    text-align:center;
    color:#c7d0df;
    font-size:9.5px!important;
    line-height:1.05;
    font-weight:750;
    white-space:normal;
  }
  .topbar nav a.active{
    background:#23334e!important;
    color:#fff!important;
  }

  /* Spazio per la barra inferiore: nessun contenuto resta coperto. */
  body{
    padding-bottom:calc(66px + env(safe-area-inset-bottom));
  }
  .calendar-body{
    padding-bottom:calc(66px + env(safe-area-inset-bottom));
  }
  .page,.widepage,.narrow,.taskpage,.calendarpage{
    padding-bottom:calc(82px + env(safe-area-inset-bottom))!important;
  }

  /* Disattiva completamente la vecchia logica da menu overlay. */
  .mobile-nav-open{
    overflow:auto!important;
  }
}


/* ===== v37: gestione operativa cliente ===== */
.operational-management-grid{
  margin-bottom:2px;
}
.field-help{
  display:block;
  margin-top:4px;
  color:var(--muted);
  font-size:10px;
  line-height:1.3;
}
.operational-summary{
  display:flex;
  gap:7px;
  flex-wrap:wrap;
  margin:-2px 0 14px;
}
.operational-summary span{
  padding:4px 7px;
  border-radius:999px;
  background:#f3f6fa;
  border:1px solid #e2e8f0;
  color:#697588;
  font-size:9px;
  font-weight:800;
}
.client-ops-badges{
  display:flex;
  gap:3px;
  flex-wrap:wrap;
  margin-top:4px;
}
.client-ops-badges span{
  padding:2px 4px;
  border-radius:5px;
  background:#eef2f7;
  color:#66758a;
  font-size:7.5px;
  line-height:1.15;
  font-weight:900;
}

@media(max-width:900px){
  .operational-management-grid{
    grid-template-columns:1fr!important;
  }
  .operational-summary{
    display:grid;
    grid-template-columns:1fr;
  }
  .client-ops-badges span{
    font-size:8px;
  }
}


/* ===== v38: Particolarità cliente ===== */
.client-peculiarities-section{
  margin:14px 0 4px;
}
.peculiarities-textarea{
  min-height:94px!important;
  resize:vertical;
  line-height:1.4;
}
.peculiarities-hint{
  margin-top:-4px;
  margin-bottom:14px;
}

@media(max-width:900px){
  .peculiarities-textarea{
    min-height:110px!important;
  }
}


/* ===== v39: scheda cliente semplificata in 3 blocchi ===== */
.compact-client-form{
  padding:14px;
}
.client-form-section{
  padding:0 0 14px;
  margin:0 0 14px;
  border-bottom:1px solid var(--line);
}
.client-form-section:last-of-type{
  border-bottom:0;
  margin-bottom:8px;
  padding-bottom:4px;
}
.client-form-section-head{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:12px;
  margin:0 0 10px;
}
.client-form-section-head h3{
  margin:0;
  font-size:15px;
}
.client-form-section-head small{
  color:var(--muted);
  font-size:10px;
}
.compact-checks{
  margin:2px 0 7px;
}
.compact-checks label{
  padding:8px 9px;
  font-size:11.5px;
}
.client-form-compact-hint{
  display:flex;
  gap:8px 14px;
  flex-wrap:wrap;
  padding:7px 9px;
  border-radius:8px;
  background:#f6f8fb;
  color:#697588;
  font-size:9.5px;
  line-height:1.3;
}
.client-subsection-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin:0 0 8px;
}
.client-subsection-row b{
  display:block;
  font-size:12px;
}
.client-subsection-row small{
  display:block;
  margin-top:2px;
  color:var(--muted);
  font-size:9.5px;
}
.peculiarities-field{
  margin-top:10px;
}
.extra-notes-details{
  margin-top:8px;
  border:1px solid var(--line);
  border-radius:8px;
  background:#fafbfd;
}
.extra-notes-details summary{
  cursor:pointer;
  padding:8px 10px;
  color:#66758a;
  font-size:10px;
  font-weight:850;
}
.extra-notes-details .field{
  padding:0 10px 9px;
  margin:0;
}
.extra-notes-details textarea{
  min-height:70px;
}
.compact-client-actions{
  padding-top:2px;
  border-top:0;
}

@media(max-width:900px){
  .compact-client-form{
    padding:11px;
  }
  .client-form-section-head{
    align-items:flex-start;
    flex-direction:column;
    gap:2px;
  }
  .compact-checks{
    grid-template-columns:1fr 1fr!important;
  }
  .client-form-compact-hint{
    display:grid;
    grid-template-columns:1fr;
  }
}
@media(max-width:520px){
  .compact-checks{
    grid-template-columns:1fr!important;
  }
}


/* =====================================================================
   v43 — MOBILE FAST: home 4 pulsanti grandi + nav primaria grande
   ===================================================================== */
.mobile-primary-nav{display:none}

@media(max-width:900px){
  /* Desktop nav completamente nascosta su telefono. */
  .desktop-main-nav{display:none!important}

  /* Barra inferiore SOLO con le 4 funzioni usate ogni giorno.
     Admin e Dipendenti restano nella Home, quindi niente etichette minuscole. */
  .mobile-primary-nav{
    display:grid!important;
    position:fixed!important;
    left:8px!important;
    right:8px!important;
    bottom:calc(8px + env(safe-area-inset-bottom))!important;
    top:auto!important;
    z-index:180!important;
    height:74px!important;
    padding:5px!important;
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    gap:5px!important;
    background:#101827!important;
    border:1px solid #26344c!important;
    border-radius:18px!important;
    box-shadow:0 12px 30px rgba(15,23,40,.28)!important;
    overflow:visible!important;
  }
  .mobile-primary-nav a{
    min-width:0!important;
    min-height:62px!important;
    height:62px!important;
    padding:5px 2px!important;
    border:0!important;
    border-radius:13px!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:center!important;
    justify-content:center!important;
    gap:3px!important;
    color:#cbd5e4!important;
    background:transparent!important;
    font-size:11px!important;
    line-height:1!important;
    font-weight:800!important;
    white-space:nowrap!important;
  }
  .mobile-primary-nav a.active{
    background:#263b60!important;
    color:#fff!important;
  }
  .mobile-nav-icon{
    display:block;
    height:25px;
    font-size:22px;
    line-height:24px;
    font-weight:900;
  }

  body{
    padding-bottom:calc(94px + env(safe-area-inset-bottom))!important;
  }
  .page,.widepage,.narrow,.taskpage,.calendarpage{
    padding-bottom:calc(106px + env(safe-area-inset-bottom))!important;
  }

  /* Il logo è anche il pulsante Home: grande area touch, nessun pulsante extra. */
  .brand{
    display:flex;
    align-items:center;
    min-height:44px;
    padding-right:8px;
  }

  /* MONITOR: su telefono non mostriamo righe non applicabili.
     La scheda cliente contiene solo ciò su cui si può realmente agire. */
  .monitorpage .sheet tbody td.taskcell.na{
    display:none!important;
  }
  .monitorpage .sheet tbody td.taskcell{
    grid-template-columns:minmax(135px,44%) minmax(0,56%);
    min-height:58px!important;
  }
  .monitorpage .tasktoggle,
  .monitorpage .inps-summary{
    min-height:44px!important;
    font-size:11px!important;
  }

  /* CALENDARIO: i giorni vuoti non occupano una card enorme.
     Rimangono selezionabili con il + ma si scorre il mese molto più rapidamente. */
  .mobile-day-card.is-empty{
    min-height:54px;
    padding:7px 9px;
  }
  .mobile-day-card.is-empty .mobile-day-head{
    min-height:38px;
    margin:0;
  }
  .mobile-day-card.is-empty .mobile-day-empty{
    display:none;
  }
  .mobile-day-card.has-items{
    padding:9px;
  }

  /* Pulsanti chiave almeno 44px: più facili da usare con il pollice. */
  .calendar-new-btn,
  .task-filters .btn,
  .quick-task-form .btn,
  .pagehead>.btn,
  .monitor-actions .btn{
    min-height:48px!important;
    border-radius:11px!important;
  }
}

/* HOME MOBILE */
.mobile-home-page{
  display:none;
}
@media(max-width:900px){
  .mobile-home-body{
    background:#f3f6fa;
  }
  .mobile-home-page{
    display:block;
    width:100%;
    min-height:calc(100vh - 54px);
    padding:18px 14px calc(112px + env(safe-area-inset-bottom));
  }
  .mobile-home-hero{
    padding:4px 2px 14px;
  }
  .mobile-home-hero small{
    color:#718096;
    font-size:11px;
    font-weight:850;
    text-transform:uppercase;
    letter-spacing:.07em;
  }
  .mobile-home-hero h1{
    margin:3px 0 1px;
    font-size:29px;
    line-height:1.05;
    letter-spacing:-.025em;
  }
  .mobile-home-hero p{
    margin:5px 0 0;
    color:#718096;
    font-size:14px;
  }

  .mobile-launch-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
  }
  .mobile-launch-card{
    position:relative;
    min-height:148px;
    padding:15px;
    border:1px solid #dce4ee;
    border-radius:18px;
    background:#fff;
    box-shadow:0 5px 18px rgba(25,38,60,.06);
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    justify-content:space-between;
    gap:10px;
    -webkit-tap-highlight-color:transparent;
  }
  .mobile-launch-card:active{
    transform:scale(.985);
  }
  .launch-icon{
    width:48px;
    height:48px;
    border-radius:14px;
    display:grid;
    place-items:center;
    font-size:27px;
    font-weight:950;
  }
  .launch-monitor .launch-icon{background:#e7eefc;color:#244f9c}
  .launch-task .launch-icon{background:#e6f5ed;color:#12704b}
  .launch-calendar .launch-icon{background:#f3eafc;color:#6f45a0}
  .launch-clients .launch-icon{background:#fff2df;color:#946019}

  .mobile-launch-card b{
    display:block;
    font-size:18px;
    line-height:1.05;
  }
  .mobile-launch-card small{
    display:block;
    margin-top:4px;
    color:#748094;
    font-size:11px;
    line-height:1.2;
  }
  .launch-arrow{
    position:absolute;
    right:13px;
    top:15px;
    color:#9aa5b5;
    font-size:26px;
    line-height:1;
  }

  .mobile-studio-tools{
    margin-top:18px;
  }
  .mobile-home-section-title{
    margin:0 2px 8px;
    color:#68768a;
    font-size:11px;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.055em;
  }
  .mobile-studio-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:9px;
  }
  .mobile-studio-grid a{
    min-height:64px;
    padding:11px;
    border:1px solid #dce4ee;
    border-radius:14px;
    background:#fff;
    display:flex;
    align-items:center;
    gap:9px;
    font-size:12px;
    font-weight:850;
  }
  .mobile-studio-grid a span{
    width:34px;
    height:34px;
    border-radius:10px;
    background:#eef2f7;
    display:grid;
    place-items:center;
    font-size:17px;
  }
}


/* ===== v44: PWA / installazione su iPhone e Android ===== */
.pwa-install-card{
  margin-top:14px;
  padding:12px;
  border:1px solid #dce4ee;
  border-radius:16px;
  background:#fff;
  box-shadow:0 5px 18px rgba(25,38,60,.05);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.pwa-install-copy{
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
}
.pwa-install-icon{
  flex:none;
  width:42px;
  height:42px;
  border-radius:12px;
  display:grid;
  place-items:center;
  background:#e7eefc;
  color:#244f9c;
  font-size:22px;
  font-weight:900;
}
.pwa-install-copy b{
  display:block;
  font-size:12px;
}
.pwa-install-copy small{
  display:block;
  margin-top:2px;
  color:#748094;
  font-size:9.5px;
  line-height:1.25;
}
.pwa-install-card .btn{
  min-height:42px;
  flex:none;
  font-size:10px;
}

/* Quando aperta dalla Home Screen, niente effetto "pagina Safari". */
@media(display-mode:standalone){
  body{
    overscroll-behavior-y:none;
    -webkit-user-select:none;
    user-select:none;
  }
  input,textarea{
    -webkit-user-select:text;
    user-select:text;
  }
}
@media(max-width:520px){
  .pwa-install-card{
    align-items:stretch;
    flex-direction:column;
  }
  .pwa-install-card .btn{
    width:100%;
  }
}


/* ===== v45: fix doppia navigazione desktop/mobile ===== */
/* `.topbar nav` del CSS storico è più specifico di `.mobile-primary-nav`.
   Per questo il menu mobile compariva anche su desktop.
   Qui separiamo in modo definitivo i due menu. */
.topbar .mobile-primary-nav{
  display:none !important;
}

@media(min-width:901px){
  .topbar .desktop-main-nav{
    display:flex !important;
  }
  .topbar .mobile-primary-nav{
    display:none !important;
  }
}

@media(max-width:900px){
  .topbar .desktop-main-nav{
    display:none !important;
  }
  .topbar .mobile-primary-nav{
    display:grid !important;
  }
}


/* ===== v46: fix installazione PWA iPhone ===== */
.pwa-install-sheet[hidden]{display:none!important}
.pwa-install-sheet{
  position:fixed;
  inset:0;
  z-index:800;
}
.pwa-install-sheet-backdrop{
  position:absolute;
  inset:0;
  background:rgba(11,18,31,.52);
  backdrop-filter:blur(2px);
}
.pwa-install-sheet-card{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  padding:16px 14px calc(16px + env(safe-area-inset-bottom));
  border-radius:22px 22px 0 0;
  background:#fff;
  box-shadow:0 -16px 45px rgba(11,18,31,.28);
}
.pwa-install-sheet-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
  margin-bottom:14px;
}
.pwa-install-sheet-head b{
  display:block;
  font-size:19px;
}
.pwa-install-sheet-head small{
  display:block;
  margin-top:3px;
  color:#748094;
  font-size:11px;
}
.pwa-install-sheet-head>button{
  width:38px;
  height:38px;
  border:0;
  border-radius:10px;
  background:#eef2f7;
  color:#4b596d;
  font-size:23px;
}
.pwa-install-steps{
  display:grid;
  gap:8px;
}
.pwa-install-steps>div{
  display:grid;
  grid-template-columns:36px 1fr;
  align-items:center;
  gap:10px;
  min-height:58px;
  padding:9px;
  border:1px solid #e1e6ee;
  border-radius:12px;
  background:#f8fafc;
}
.pwa-install-steps span{
  width:34px;
  height:34px;
  border-radius:10px;
  display:grid;
  place-items:center;
  background:#e7eefc;
  color:#244f9c;
  font-weight:950;
}
.pwa-install-steps p{
  margin:0;
  color:#344256;
  font-size:13px;
  line-height:1.3;
}
.pwa-open-safari{
  padding:12px;
  border:1px solid #e1e6ee;
  border-radius:12px;
  background:#f8fafc;
}
.pwa-open-safari b{
  font-size:14px;
}
.pwa-open-safari p{
  margin:5px 0 12px;
  color:#6e7b8e;
  font-size:12px;
  line-height:1.35;
}
.pwa-open-safari .btn,
.pwa-sheet-close-btn{
  width:100%;
  min-height:46px!important;
}
.pwa-sheet-close-btn{
  margin-top:10px;
}
.pwa-sheet-open{
  overflow:hidden!important;
}


/* =====================================================================
   v48 — MOBILE APP LARGE
   Testo grande, touch target grandi, meno elementi, schermate dedicate.
   ===================================================================== */
.mobile-monitor-title,
.mobile-dashboard-label,
.mobile-monitor-monthnav,
.mobile-monthnote,
.mobile-client-search,
.mobile-client-list,
.mobile-new-task-btn,
.mobile-calendar-agenda-head{
  display:none;
}

.mobile-nav-svg{
  width:31px;
  height:31px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.9;
  stroke-linecap:round;
  stroke-linejoin:round;
}

@media(max-width:900px){
  html{font-size:17px}
  body{
    font-size:17px!important;
    line-height:1.35;
  }

  /* SAFE AREA: niente più logo sotto orologio/Dynamic Island */
  .topbar{
    height:calc(64px + env(safe-area-inset-top))!important;
    min-height:calc(64px + env(safe-area-inset-top))!important;
    padding:env(safe-area-inset-top) 16px 0!important;
    align-items:center!important;
  }
  .brand{
    min-height:56px!important;
    font-size:21px!important;
    line-height:1!important;
  }
  .mobile-logout{display:none!important}
  .username{display:none!important}

  /* NAV: quattro soli pulsanti, grandi davvero */
  .topbar .mobile-primary-nav{
    left:10px!important;
    right:10px!important;
    bottom:calc(9px + env(safe-area-inset-bottom))!important;
    height:84px!important;
    padding:6px!important;
    gap:5px!important;
    border-radius:20px!important;
  }
  .topbar .mobile-primary-nav a{
    height:70px!important;
    min-height:70px!important;
    border-radius:15px!important;
    gap:5px!important;
    font-size:14px!important;
    font-weight:850!important;
  }
  .topbar .mobile-primary-nav a.active{
    background:#294066!important;
  }

  body{
    padding-bottom:calc(110px + env(safe-area-inset-bottom))!important;
  }
  .page,.widepage,.narrow,.taskpage,.calendarpage{
    padding:16px 14px calc(122px + env(safe-area-inset-bottom))!important;
  }

  .pagehead{
    gap:12px!important;
    margin-bottom:14px!important;
  }
  .pagehead h1{
    font-size:30px!important;
    line-height:1.05!important;
    letter-spacing:-.025em;
  }
  .pagehead p{
    font-size:16px!important;
    line-height:1.35!important;
  }
  .btn{
    min-height:54px!important;
    padding:12px 16px!important;
    border-radius:13px!important;
    font-size:16px!important;
    font-weight:850!important;
  }

  /* ---------------- HOME ---------------- */
  .mobile-home-page{
    padding:22px 16px calc(130px + env(safe-area-inset-bottom))!important;
  }
  .mobile-home-hero small{font-size:13px!important}
  .mobile-home-hero h1{font-size:34px!important}
  .mobile-home-hero p{font-size:17px!important}
  .mobile-launch-grid{
    gap:12px!important;
  }
  .mobile-launch-card{
    min-height:176px!important;
    padding:18px!important;
    border-radius:20px!important;
  }
  .launch-icon{
    width:58px!important;
    height:58px!important;
    font-size:31px!important;
  }
  .mobile-launch-card b{font-size:23px!important}
  .mobile-launch-card small{font-size:14px!important;line-height:1.25!important}
  .launch-arrow{font-size:32px!important}
  .mobile-studio-grid a{
    min-height:78px!important;
    font-size:16px!important;
  }
  .mobile-home-section-title{font-size:13px!important}
  .mobile-home-logout{
    margin-top:18px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:14px 4px;
    color:#718096;
    font-size:14px;
  }
  .mobile-home-logout a{
    min-height:46px;
    display:flex;
    align-items:center;
    padding:0 14px;
    border-radius:11px;
    background:#e9edf3;
    color:#334155;
    font-weight:800;
  }

  /* ---------------- TASK ---------------- */
  .taskpage .pagehead p{display:none}
  .task-filters{
    grid-template-columns:repeat(3,1fr)!important;
    gap:8px!important;
  }
  .task-filters .btn{
    min-height:62px!important;
    font-size:18px!important;
  }

  /* desktop form nascosto solo su mobile */
  .taskpage>.quick-task-form{
    display:none!important;
  }
  .mobile-new-task-btn{
    display:flex!important;
    width:100%!important;
    min-height:68px!important;
    align-items:center;
    justify-content:center;
    margin:0 0 14px;
    font-size:20px!important;
    border-radius:16px!important;
  }

  .task-composer-backdrop{
    display:none;
    position:fixed;
    inset:0;
    z-index:700;
    background:rgba(10,17,30,.52);
    backdrop-filter:blur(4px);
    align-items:flex-end;
  }
  .task-composer-backdrop.open{display:flex}
  .task-composer-card{
    width:100%!important;
    max-width:none!important;
    max-height:94dvh;
    overflow-y:auto;
    margin:0!important;
    padding:18px 16px calc(20px + env(safe-area-inset-bottom))!important;
    border-radius:24px 24px 0 0!important;
    border:0!important;
    display:block!important;
  }
  .task-composer-head{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:12px;
    margin-bottom:20px;
  }
  .task-composer-head h3{
    margin:0;
    font-size:29px;
    line-height:1.05;
  }
  .task-composer-head small{
    display:block;
    margin-top:4px;
    font-size:15px;
    color:#718096;
  }
  .task-composer-close{
    width:52px;
    height:52px;
    flex:none;
    border:0;
    border-radius:14px;
    background:#edf1f6;
    font-size:30px;
    line-height:1;
  }
  .task-mobile-label{
    display:block;
    margin:16px 0 7px;
    color:#46546a;
    font-size:15px;
    font-weight:900;
  }
  .task-mobile-label span{
    color:#8a95a7;
    font-weight:650;
  }
  .task-composer-card input,
  .task-composer-card select{
    width:100%;
    min-height:60px!important;
    padding:13px 14px!important;
    border:1px solid #d7dde7!important;
    border-radius:14px!important;
    background:#fff!important;
    font-size:18px!important;
  }
  .task-date-quick{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:8px;
    margin-bottom:9px;
  }
  .task-date-quick button{
    min-height:54px;
    border:1px solid #d8e0eb;
    border-radius:13px;
    background:#f4f7fb;
    color:#334155;
    font-size:14px;
    font-weight:900;
  }
  .task-date-quick button.selected{
    background:#e1eaff;
    border-color:#9bb8f5;
    color:#2553ad;
  }
  .task-save-mobile{
    width:100%!important;
    min-height:66px!important;
    margin-top:20px!important;
    font-size:20px!important;
  }
  .task-list{
    border-radius:16px!important;
  }
  .task-list .empty{
    padding:46px 20px!important;
    font-size:17px!important;
  }
  .task-row{
    padding:14px!important;
    gap:10px!important;
  }
  .task-check{
    min-height:48px!important;
    min-width:96px!important;
    font-size:14px!important;
  }
  .task-date{font-size:14px!important}
  .task-main b{font-size:18px!important}
  .task-main small{font-size:14px!important;line-height:1.35!important}

  /* ---------------- CLIENTI ---------------- */
  .clients-page .pagehead p{display:none}
  .mobile-client-search{
    display:flex;
    position:sticky;
    top:calc(64px + env(safe-area-inset-top));
    z-index:32;
    align-items:center;
    gap:10px;
    margin:0 0 12px;
    padding:10px 13px;
    border:1px solid #dce4ee;
    border-radius:15px;
    background:#fff;
    box-shadow:0 5px 14px rgba(25,38,60,.05);
  }
  .mobile-client-search svg{
    width:24px;
    height:24px;
    flex:none;
    fill:none;
    stroke:#6c788a;
    stroke-width:2;
    stroke-linecap:round;
  }
  .mobile-client-search input{
    width:100%;
    min-width:0;
    border:0;
    outline:0;
    background:transparent;
    font-size:18px;
  }
  .desktop-client-table{display:none!important}
  .mobile-client-list{
    display:grid;
    gap:10px;
  }
  .mobile-client-card{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    min-height:118px;
    padding:15px;
    border:1px solid #dce4ee;
    border-radius:17px;
    background:#fff;
    box-shadow:0 4px 14px rgba(25,38,60,.045);
  }
  .mobile-client-card-main{min-width:0}
  .mobile-client-name{
    font-size:20px;
    line-height:1.15;
    font-weight:900;
    color:#183a7a;
  }
  .mobile-client-meta{
    margin-top:6px;
    color:#66758a;
    font-size:15px;
  }
  .mobile-client-submeta{
    display:flex;
    align-items:center;
    gap:8px;
    flex-wrap:wrap;
    margin-top:8px;
    color:#7b8799;
    font-size:13px;
  }
  .mobile-client-submeta .tag{
    padding:5px 8px!important;
    font-size:12px!important;
  }
  .mobile-client-edit,
  .mobile-client-visible{
    flex:none;
    min-height:50px;
    min-width:104px;
    padding:0 12px;
    border-radius:12px;
    display:flex;
    align-items:center;
    justify-content:center;
    background:#edf1f6;
    color:#263247;
    font-size:14px;
    font-weight:900;
  }
  .mobile-client-visible{
    color:#6f7c8f;
    font-size:12px;
  }

  /* ---------------- MONITOR ---------------- */
  .desktop-monitor-title,
  .desktop-monitor-help,
  .monitorpage>.monthbar,
  .monitorpage>.monthnote{
    display:none!important;
  }
  .mobile-monitor-title,
  .mobile-dashboard-label,
  .mobile-monitor-monthnav,
  .mobile-monthnote{
    display:block;
  }
  .mobile-monitor-title{
    font-size:30px;
  }
  .mobile-dashboard-label{
    margin-top:5px;
    color:#718096;
    font-size:16px;
    font-weight:750;
  }
  .monitor-actions{
    width:100%;
    display:grid!important;
    grid-template-columns:1.15fr .85fr!important;
    gap:8px!important;
  }
  .monitor-actions .btn{
    min-height:60px!important;
    font-size:15px!important;
  }
  .mobile-monitor-monthnav{
    display:grid;
    grid-template-columns:58px minmax(0,1fr) 58px;
    align-items:stretch;
    gap:8px;
    margin-bottom:12px;
  }
  .mobile-monitor-monthnav>a{
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:76px;
    border:1px solid #dce4ee;
    border-radius:15px;
    background:#fff;
    font-size:38px;
    font-weight:500;
  }
  .mobile-month-center{
    min-height:76px;
    padding:10px 12px;
    border:1px solid #dce4ee;
    border-radius:15px;
    background:#fff;
    text-align:center;
  }
  .mobile-month-center>b{
    display:block;
    font-size:21px;
    text-transform:uppercase;
  }
  .mobile-month-center form{margin-top:6px}
  .mobile-month-center select{
    width:100%;
    min-height:38px;
    border:0;
    background:#f2f5f9;
    border-radius:9px;
    padding:6px 8px;
    font-size:14px;
  }
  .mobile-monthnote{
    margin:10px 1px 12px;
    color:#66758a;
    font-size:14px;
    line-height:1.35;
  }
  .mobile-monthnote b{
    display:block;
    margin-top:3px;
    color:#118457;
    font-size:14px;
  }
  .deadline-zone-head{margin-top:3px}
  .deadline-zone-title{font-size:19px!important}
  .deadline-count{font-size:13px!important}
  .deadline-item summary{
    min-height:76px!important;
    grid-template-columns:108px minmax(0,1fr) 34px!important;
    padding:10px!important;
  }
  .deadline-date{font-size:16px!important}
  .deadline-title{font-size:16px!important;line-height:1.18!important}
  .deadline-period{font-size:12px!important}
  .monitorpage .sheet tbody tr{
    border-radius:18px!important;
    margin-bottom:12px!important;
  }
  .monitorpage .clientcell{
    padding:15px!important;
  }
  .monitorpage .clientcell>a{
    font-size:21px!important;
    line-height:1.12!important;
  }
  .monitorpage .clientcell small{
    font-size:15px!important;
  }
  .monitorpage .client-management .tag{
    margin-top:5px;
    padding:5px 8px!important;
    font-size:12px!important;
  }
  .monitorpage .sheet tbody td.taskcell{
    grid-template-columns:minmax(150px,47%) minmax(0,53%)!important;
    min-height:68px!important;
    padding:10px 12px!important;
  }
  .monitorpage .sheet tbody td.taskcell::before{
    font-size:13px!important;
    line-height:1.2!important;
  }
  .monitorpage .tasktoggle,
  .monitorpage .inps-summary{
    min-height:52px!important;
    font-size:15px!important;
    border-radius:12px!important;
  }
  .monitorpage .vat-mode-label,
  .monitorpage .vat-period-label{
    font-size:12px!important;
  }

  /* ---------------- CALENDARIO ---------------- */
  .calendar-title-block h1{font-size:30px!important}
  .calendar-legend{gap:6px!important}
  .calendar-one-screen .cal-legend{
    padding:6px 8px!important;
    font-size:11px!important;
  }
  .calendar-new-btn{
    min-height:64px!important;
    font-size:19px!important;
  }
  .calendar-nav a{
    min-width:58px!important;
    min-height:58px!important;
    font-size:24px!important;
  }
  .calendar-nav b{font-size:18px!important}
  .mobile-calendar-agenda-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    margin:12px 1px 8px;
  }
  .mobile-calendar-agenda-head b{
    display:block;
    font-size:18px;
  }
  .mobile-calendar-agenda-head small{
    display:block;
    margin-top:2px;
    color:#7b8798;
    font-size:13px;
  }
  .mobile-calendar-toggle-all{
    min-height:48px;
    padding:0 12px;
    border:1px solid #dce4ee;
    border-radius:12px;
    background:#fff;
    color:#334155;
    font-size:12px;
    font-weight:900;
  }
  .calendar-mobile-agenda:not(.show-all-days) .mobile-day-card[data-relevant="0"]{
    display:none!important;
  }
  .mobile-day-card{
    padding:13px!important;
    border-radius:16px!important;
  }
  .mobile-day-head{
    min-height:46px!important;
  }
  .mobile-day-head b{font-size:18px!important}
  .mobile-day-head .cal-add{
    width:46px!important;
    height:46px!important;
    border-radius:12px!important;
    font-size:25px!important;
  }
  .mobile-day-items .cal-item{
    padding:10px!important;
    font-size:15px!important;
    line-height:1.25!important;
  }
  .mobile-day-items .cal-item small{
    font-size:13px!important;
  }

  /* IMPEGNO: pannello quasi full-screen */
  .event-composer-backdrop{
    align-items:flex-end!important;
  }
  .event-composer-card{
    max-height:94dvh!important;
    border-radius:24px 24px 0 0!important;
    padding:18px 16px calc(20px + env(safe-area-inset-bottom))!important;
  }
  .event-composer-head h3{font-size:29px!important}
  .event-composer-head small{font-size:15px!important}
  .event-composer-close{
    width:52px!important;
    height:52px!important;
    font-size:30px!important;
  }
  .event-composer-card input,
  .event-composer-card select{
    min-height:60px!important;
    font-size:18px!important;
    border-radius:14px!important;
  }
  .time-quick-row{
    grid-template-columns:repeat(4,1fr)!important;
    gap:8px!important;
  }
  .time-quick-row button{
    min-height:50px!important;
    font-size:14px!important;
    border-radius:12px!important;
  }
  .event-save-btn{
    min-height:66px!important;
    font-size:20px!important;
  }

  /* PWA install */
  .pwa-install-copy b{font-size:15px!important}
  .pwa-install-copy small{font-size:13px!important}
  .pwa-install-card .btn{font-size:14px!important}
}

@media(max-width:430px){
  .mobile-launch-card{
    min-height:164px!important;
  }
  .mobile-launch-card b{font-size:21px!important}
  .topbar .mobile-primary-nav a{font-size:13px!important}
  .mobile-nav-svg{width:29px;height:29px}
}


/* =====================================================================
   v49 — MOBILE DAILY WORKFLOW
   Header compatto, Monitor orientato al lavoro, filtri Calendario veri.
   ===================================================================== */
.mobile-monitor-tools{display:none}
.deadline-zone-head-right{
  display:flex;
  align-items:center;
  gap:8px;
}
.mobile-deadline-chevron{display:none}

.calendar-legend button{
  border:0;
  cursor:pointer;
  font:inherit;
}
.calendar-filter-hidden{
  display:none!important;
}

@media(max-width:900px){
  /* HEADER più compatto: safe-area iOS + 42px reali di app bar. */
  .topbar{
    height:calc(42px + env(safe-area-inset-top))!important;
    min-height:calc(42px + env(safe-area-inset-top))!important;
    padding:env(safe-area-inset-top) 14px 0!important;
  }
  .brand{
    min-height:42px!important;
    font-size:19px!important;
    letter-spacing:-.02em;
  }

  /* Il contenuto non deve mai finire sotto la tab bar. */
  body{
    padding-bottom:calc(128px + env(safe-area-inset-bottom))!important;
  }
  .page,.widepage,.narrow,.taskpage,.calendarpage{
    padding-top:14px!important;
    padding-bottom:calc(142px + env(safe-area-inset-bottom))!important;
  }

  /* MONITOR: mostra solo l'azione quotidiana; + Cliente resta in Clienti. */
  .monitor-actions{
    display:block!important;
  }
  .monitor-actions #todoOnlyBtn{
    width:100%!important;
    min-height:62px!important;
    font-size:17px!important;
  }
  .monitor-add-client{
    display:none!important;
  }

  .mobile-monitor-tools{
    display:block;
    margin:0 0 12px;
  }
  .mobile-monitor-search{
    min-height:58px;
    display:flex;
    align-items:center;
    gap:10px;
    padding:0 14px;
    border:1px solid #dce4ee;
    border-radius:15px;
    background:#fff;
    box-shadow:0 4px 12px rgba(25,38,60,.045);
  }
  .mobile-monitor-search svg{
    width:24px;
    height:24px;
    flex:none;
    fill:none;
    stroke:#68768a;
    stroke-width:2;
    stroke-linecap:round;
  }
  .mobile-monitor-search input{
    width:100%;
    min-width:0;
    border:0;
    outline:0;
    background:transparent;
    font-size:17px;
  }

  /* SCADENZE: una sola riga compatta finché non vengono richieste. */
  .deadline-zone{
    margin-bottom:8px!important;
  }
  .deadline-zone-head.mobile-deadline-toggle{
    width:100%;
    min-height:58px;
    margin:0!important;
    padding:10px 12px!important;
    border:1px solid #dce4ee;
    border-radius:15px;
    background:#fff;
    display:flex;
    align-items:center;
    justify-content:space-between;
    text-align:left;
    box-shadow:0 3px 10px rgba(25,38,60,.035);
  }
  .deadline-zone-title{
    font-size:17px!important;
  }
  .deadline-count{
    font-size:12px!important;
    white-space:nowrap;
  }
  .mobile-deadline-chevron{
    display:block;
    width:32px;
    height:32px;
    border-radius:9px;
    background:#eef2f7;
    color:#4c5d75;
    font-size:27px;
    line-height:30px;
    text-align:center;
    transition:transform .15s ease;
  }
  .mobile-deadline-body{
    display:none!important;
    margin-top:8px!important;
  }
  .deadline-zone.mobile-deadlines-open .mobile-deadline-body{
    display:grid!important;
  }
  .deadline-zone.mobile-deadlines-open .mobile-deadline-chevron{
    transform:rotate(90deg);
  }

  /* Il promemoria sotto le scadenze diventa secondario e molto compatto. */
  .mobile-monthnote{
    margin:5px 2px 10px!important;
    font-size:13px!important;
  }

  /* CALENDARIO: i badge sono veri filtri grandi e chiaramente premibili. */
  .calendar-title-block{
    width:100%;
    align-items:center!important;
  }
  .calendar-legend{
    margin-left:auto!important;
    display:grid!important;
    grid-template-columns:repeat(3,auto)!important;
    gap:6px!important;
  }
  .calendar-one-screen .cal-legend{
    min-height:42px!important;
    padding:0 10px!important;
    border-radius:999px!important;
    border:2px solid transparent!important;
    opacity:.48;
    transition:opacity .12s ease, transform .12s ease, box-shadow .12s ease;
    font-size:11px!important;
    font-weight:950!important;
  }
  .calendar-one-screen .cal-legend.active{
    opacity:1;
    box-shadow:0 3px 10px rgba(25,38,60,.07);
  }
  .calendar-one-screen .cal-legend:active{
    transform:scale(.96);
  }

  .calendar-filter-empty{
    display:none!important;
  }

  /* Bottom nav: mantenuta grande, ma un po' più staccata dal contenuto. */
  .topbar .mobile-primary-nav{
    bottom:calc(10px + env(safe-area-inset-bottom))!important;
  }

  /* Ultima card/pulsante sempre completamente raggiungibile sopra la nav. */
  .sheetwrap,
  .task-list,
  .calendar-mobile-agenda,
  .mobile-client-list{
    margin-bottom:20px!important;
  }
}

@media(min-width:901px){
  /* Desktop: scadenze sempre aperte come prima. */
  .mobile-deadline-toggle{
    cursor:default;
  }
  .mobile-deadline-body{
    display:grid!important;
  }
}


/* =====================================================================
   v50 — MOBILE SHELL FIXED + MODALI ALLINEATI
   Header e tab bar realmente fissi, edge-to-edge, nessun margine in overscroll.
   ===================================================================== */
@media(max-width:900px){
  /* iOS/PWA: il colore scuro continua anche durante rubber-band/overscroll. */
  html{
    min-height:100%;
    background:#101827!important;
    overscroll-behavior-y:none;
  }
  body{
    min-height:100dvh!important;
    background:var(--bg)!important;
    overscroll-behavior-y:none!important;
    padding-top:calc(54px + env(safe-area-inset-top))!important;
    padding-bottom:calc(86px + env(safe-area-inset-bottom))!important;
  }

  /* HEADER: fisso, a filo dei bordi, include tutta la safe-area superiore. */
  .topbar{
    position:fixed!important;
    inset:0 0 auto 0!important;
    width:100%!important;
    height:calc(54px + env(safe-area-inset-top))!important;
    min-height:calc(54px + env(safe-area-inset-top))!important;
    padding:env(safe-area-inset-top) 18px 0!important;
    margin:0!important;
    border-radius:0!important;
    background:#101827!important;
    z-index:500!important;
    box-shadow:0 1px 0 rgba(255,255,255,.04)!important;
  }
  .brand{
    min-height:54px!important;
    display:flex!important;
    align-items:center!important;
    font-size:20px!important;
  }

  /* Le pagine iniziano esattamente sotto l'header fisso. */
  .page,.widepage,.narrow,.taskpage,.calendarpage,.mobile-home-page{
    margin-top:0!important;
    padding-bottom:calc(104px + env(safe-area-inset-bottom))!important;
  }

  /* TAB BAR: non più floating. È una vera barra app, fissa e senza margini. */
  .topbar .mobile-primary-nav{
    position:fixed!important;
    left:0!important;
    right:0!important;
    bottom:0!important;
    top:auto!important;
    width:100%!important;
    height:calc(82px + env(safe-area-inset-bottom))!important;
    padding:6px 10px calc(6px + env(safe-area-inset-bottom))!important;
    margin:0!important;
    border:0!important;
    border-top:1px solid #29384f!important;
    border-radius:0!important;
    background:#101827!important;
    box-shadow:0 -8px 24px rgba(15,23,40,.13)!important;
    z-index:600!important;
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    gap:4px!important;
  }
  .topbar .mobile-primary-nav a{
    height:68px!important;
    min-height:68px!important;
    border-radius:13px!important;
    font-size:14px!important;
  }
  .topbar .mobile-primary-nav a.active{
    background:#2d466f!important;
  }

  /* Quando un composer è aperto, nessun elemento della shell si muove. */
  body.composer-open{
    overflow:hidden!important;
    position:fixed!important;
    width:100%!important;
    inset:0!important;
  }

  /* NUOVO IMPEGNO: tutti i riquadri hanno ESATTAMENTE la stessa larghezza. */
  .event-composer-backdrop{
    inset:0!important;
    padding:0!important;
    align-items:flex-end!important;
    z-index:900!important;
  }
  .event-composer-card{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding:18px 18px calc(20px + env(safe-area-inset-bottom))!important;
    border:0!important;
    border-radius:24px 24px 0 0!important;
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:12px!important;
    box-sizing:border-box!important;
  }
  .event-composer-card > input,
  .event-composer-card > select,
  .event-composer-card > .time-quick-row,
  .event-composer-card > .event-save-btn{
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
    margin:0!important;
    box-sizing:border-box!important;
  }
  .event-composer-card input,
  .event-composer-card select{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    min-height:62px!important;
    padding-left:16px!important;
    padding-right:16px!important;
    box-sizing:border-box!important;
  }
  .time-quick-row{
    display:grid!important;
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    gap:8px!important;
  }
  .time-quick-row button{
    width:100%!important;
    min-width:0!important;
    min-height:56px!important;
    padding:0 4px!important;
    box-sizing:border-box!important;
  }
  .event-save-btn{
    width:100%!important;
    min-height:68px!important;
    margin-top:2px!important;
  }

  /* Anche il Task composer segue la stessa griglia e larghezza. */
  .task-composer-card{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding-left:18px!important;
    padding-right:18px!important;
    box-sizing:border-box!important;
  }
  .task-composer-card input,
  .task-composer-card select,
  .task-save-mobile,
  .task-date-quick{
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
    box-sizing:border-box!important;
  }

  /* Ultimo contenuto sempre sopra la tab bar fissa. */
  .sheetwrap,.task-list,.calendar-mobile-agenda,.mobile-client-list{
    padding-bottom:14px!important;
    margin-bottom:0!important;
  }
}

@media(display-mode:standalone) and (max-width:900px){
  /* In standalone manteniamo il fondo pagina chiaro.
     Il blu scuro resta solo nella shell fissa e nelle safe-area. */
  html{background:#101827!important}
  body{background:var(--bg)!important}
  body::before{
    content:"";
    position:fixed;
    left:0;right:0;top:0;
    height:env(safe-area-inset-top);
    background:#101827;
    z-index:499;
    pointer-events:none;
  }
  body::after{
    content:"";
    position:fixed;
    left:0;right:0;bottom:0;
    height:env(safe-area-inset-bottom);
    background:#101827;
    z-index:599;
    pointer-events:none;
  }
}

/* =====================================================================
   v51 — LIGHT CONTENT AREA IN PWA
   Il contenuto resta sempre chiaro e continuo sotto header/nav fissi.
   ===================================================================== */
@media(max-width:900px){
  .page,
  .widepage,
  .narrow,
  .taskpage,
  .calendarpage,
  .mobile-home-page{
    position:relative!important;
    z-index:1!important;
    background:var(--bg)!important;
    min-height:calc(100dvh - (54px + env(safe-area-inset-top)) - (82px + env(safe-area-inset-bottom)))!important;
  }

  .clients-body,
  .tasks-body,
  .monitor-body,
  .calendar-body,
  .mobile-home-body{
    background:var(--bg)!important;
  }

  /* La lista clienti deve stare su fondo chiaro, mai spezzato col blu scuro. */
  .mobile-client-list{
    display:grid;
    gap:12px!important;
    padding-bottom:8px!important;
    background:transparent!important;
  }
  .mobile-client-card{
    background:#fff!important;
  }

  /* Search box clienti sempre subito sotto l'header fisso. */
  .mobile-client-search{
    top:calc(54px + env(safe-area-inset-top) + 10px)!important;
  }

  /* Monitor/Task/Calendario/Clienti sempre fermi e senza margini visibili. */
  .topbar,
  .topbar .mobile-primary-nav{
    transform:translateZ(0);
    -webkit-transform:translateZ(0);
    will-change:transform;
  }
}


/* =====================================================================
   v52 — MONITOR MOBILE: AZIONI TUTTE ALLINEATE A DESTRA
   Etichetta attività sempre a sinistra; stato/periodo/controllo sempre a destra.
   ===================================================================== */
@media(max-width:900px){
  .monitorpage .sheet tbody td.taskcell{
    grid-template-columns:minmax(0,46%) minmax(0,54%)!important;
    column-gap:10px!important;
    align-items:center!important;
  }

  /* L'etichetta occupa sempre la colonna sinistra, anche quando a destra
     ci sono due elementi (es. periodo LIPE + pulsante). */
  .monitorpage .sheet tbody td.taskcell::before{
    grid-column:1!important;
    grid-row:1 / span 3!important;
    align-self:center!important;
    padding-right:0!important;
  }

  /* Qualunque controllo operativo deve stare nella stessa colonna destra. */
  .monitorpage .sheet tbody td.taskcell > .tasktoggle,
  .monitorpage .sheet tbody td.taskcell > .vat-cell,
  .monitorpage .sheet tbody td.taskcell > .inps-details,
  .monitorpage .sheet tbody td.taskcell > .inps-summary,
  .monitorpage .sheet tbody td.taskcell > .vat-mode-label,
  .monitorpage .sheet tbody td.taskcell > .vat-period-label{
    grid-column:2!important;
    width:100%!important;
    max-width:none!important;
    min-width:0!important;
    justify-self:stretch!important;
  }

  /* Nei casi con badge periodo + pulsante (LIPE) il badge resta sopra,
     allineato alla stessa colonna del pulsante, mai più a sinistra. */
  .monitorpage .sheet tbody td.taskcell > .vat-period-label,
  .monitorpage .sheet tbody td.taskcell > .vat-mode-label{
    justify-self:end!important;
    width:max-content!important;
    max-width:100%!important;
    margin:0 0 5px auto!important;
    text-align:center!important;
  }

  .monitorpage .sheet tbody td.taskcell > .tasktoggle,
  .monitorpage .sheet tbody td.taskcell > .inps-details,
  .monitorpage .sheet tbody td.taskcell > .vat-cell{
    margin-left:0!important;
    margin-right:0!important;
  }

  /* Stessa altezza e stessa larghezza visiva per tutti i pulsanti DA FARE/FATTO. */
  .monitorpage .sheet tbody td.taskcell .tasktoggle,
  .monitorpage .sheet tbody td.taskcell .inps-summary{
    min-height:54px!important;
    width:100%!important;
    border-radius:13px!important;
  }

  /* LIPE: quando periodo e pulsante sono fratelli, forziamo l'ordine verticale. */
  .monitorpage .sheet tbody td.taskcell > .vat-period-label + .tasktoggle{
    grid-column:2!important;
  }
}


/* =====================================================================
   v53 — MOBILE SHELL DEFINITIVA
   Body immobile; scorrono solo i contenuti centrali. Tab bar SEMPRE in basso.
   ===================================================================== */
@media(max-width:900px){
  :root{
    --mobile-header-h:54px;
    --mobile-tab-h:82px;
  }

  html,
  body{
    width:100%!important;
    height:100%!important;
    min-height:100%!important;
    margin:0!important;
    padding:0!important;
    overflow:hidden!important;
    overscroll-behavior:none!important;
    background:var(--bg)!important;
  }

  /* Header fisso: non partecipa mai allo scroll. */
  .topbar{
    position:fixed!important;
    left:0!important;
    right:0!important;
    top:0!important;
    bottom:auto!important;
    width:100%!important;
    height:calc(var(--mobile-header-h) + env(safe-area-inset-top))!important;
    min-height:calc(var(--mobile-header-h) + env(safe-area-inset-top))!important;
    margin:0!important;
    padding:env(safe-area-inset-top) 18px 0!important;
    border-radius:0!important;
    background:#101827!important;
    z-index:1000!important;
    transform:none!important;
    -webkit-transform:none!important;
    will-change:auto!important;
  }

  /* Tab bar separata dall'header: sempre e solo in basso. */
  .mobile-primary-nav{
    display:grid!important;
    position:fixed!important;
    left:0!important;
    right:0!important;
    top:auto!important;
    bottom:0!important;
    width:100%!important;
    height:calc(var(--mobile-tab-h) + env(safe-area-inset-bottom))!important;
    margin:0!important;
    padding:6px 10px calc(6px + env(safe-area-inset-bottom))!important;
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    gap:4px!important;
    border:0!important;
    border-top:1px solid #29384f!important;
    border-radius:0!important;
    background:#101827!important;
    box-shadow:0 -7px 20px rgba(15,23,40,.12)!important;
    z-index:1100!important;
    transform:none!important;
    -webkit-transform:none!important;
  }
  .mobile-primary-nav a{
    display:flex!important;
    flex-direction:column!important;
    align-items:center!important;
    justify-content:center!important;
    min-width:0!important;
    height:68px!important;
    min-height:68px!important;
    padding:5px 2px!important;
    gap:5px!important;
    border:0!important;
    border-radius:13px!important;
    color:#cbd5e4!important;
    background:transparent!important;
    font-size:14px!important;
    line-height:1!important;
    font-weight:850!important;
    white-space:nowrap!important;
  }
  .mobile-primary-nav a.active{
    color:#fff!important;
    background:#2d466f!important;
  }

  /* Solo il main centrale scorre. La shell non si può trascinare. */
  body > main.page,
  body > main.widepage,
  body > main.narrow,
  body > main.taskpage,
  body > main.calendarpage,
  body > main.mobile-home-page{
    position:fixed!important;
    left:0!important;
    right:0!important;
    top:calc(var(--mobile-header-h) + env(safe-area-inset-top))!important;
    bottom:calc(var(--mobile-tab-h) + env(safe-area-inset-bottom))!important;
    width:100%!important;
    height:auto!important;
    min-height:0!important;
    max-height:none!important;
    margin:0!important;
    padding:16px 14px 26px!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior:none!important;
    background:var(--bg)!important;
    z-index:1!important;
  }

  /* Niente secondo scroll interno che possa trascinare la schermata. */
  .sheetwrap,
  .task-list,
  .calendar-mobile-agenda,
  .mobile-client-list{
    max-height:none!important;
    overflow:visible!important;
  }

  /* Quando si apre Nuovo task / Nuovo impegno, il contenuto dietro resta fermo. */
  body.composer-open{
    position:static!important;
    inset:auto!important;
    width:100%!important;
    height:100%!important;
    overflow:hidden!important;
  }
  body.composer-open > main.page,
  body.composer-open > main.widepage,
  body.composer-open > main.narrow,
  body.composer-open > main.taskpage,
  body.composer-open > main.calendarpage,
  body.composer-open > main.mobile-home-page{
    overflow:hidden!important;
  }

  /* I composer occupano SOLO la zona fra header e tab bar.
     I 4 pulsanti restano sempre giù e non saltano mai sopra. */
  .task-composer-backdrop,
  .event-composer-backdrop{
    position:fixed!important;
    left:0!important;
    right:0!important;
    top:calc(var(--mobile-header-h) + env(safe-area-inset-top))!important;
    bottom:calc(var(--mobile-tab-h) + env(safe-area-inset-bottom))!important;
    height:auto!important;
    padding:0!important;
    z-index:1050!important;
    align-items:flex-end!important;
    overflow:hidden!important;
  }
  .task-composer-card,
  .event-composer-card{
    width:100%!important;
    max-width:none!important;
    max-height:100%!important;
    margin:0!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    overscroll-behavior:contain!important;
    -webkit-overflow-scrolling:touch;
    border-radius:24px 24px 0 0!important;
    box-sizing:border-box!important;
  }

  /* MONITOR: ogni attività è una sezione ben delimitata. */
  .monitorpage .sheet tbody tr{
    border:1px solid #d7e0eb!important;
    border-radius:18px!important;
    overflow:hidden!important;
    background:#fff!important;
  }
  .monitorpage .sheet tbody td.taskcell{
    min-height:76px!important;
    padding:13px 14px!important;
    border-top:1px solid #dfe5ed!important;
    border-bottom:0!important;
    background:#fff!important;
  }
  .monitorpage .sheet tbody td.clientcell + td.taskcell{
    border-top:1px solid #d7e0eb!important;
  }
  .monitorpage .sheet tbody td.clientcell{
    padding:15px 14px!important;
    border-bottom:0!important;
    background:#f8fafc!important;
  }

  /* Badge periodo: SEMPRE a destra, sopra il pulsante. */
  .monitorpage .sheet tbody td.taskcell > .vat-period-label,
  .monitorpage .sheet tbody td.taskcell > .vat-mode-label,
  .monitorpage .vat-cell .vat-period-label,
  .monitorpage .vat-cell .vat-mode-label{
    margin-left:auto!important;
    margin-right:0!important;
    justify-self:end!important;
    text-align:right!important;
  }
  .monitorpage .vat-cell{
    align-items:stretch!important;
  }
  .monitorpage .vat-cell .vat-period-label,
  .monitorpage .vat-cell .vat-mode-label{
    align-self:flex-end!important;
    width:max-content!important;
    max-width:100%!important;
  }

  /* Stato sempre nella colonna destra, stessa misura visiva. */
  .monitorpage .sheet tbody td.taskcell .tasktoggle,
  .monitorpage .sheet tbody td.taskcell .inps-summary{
    width:100%!important;
    min-height:56px!important;
    border-radius:14px!important;
  }
}

/* Desktop resta invariato: la nav mobile continua a non apparire. */
@media(min-width:901px){
  .mobile-primary-nav{display:none!important}
}


/* =====================================================================
   v54 — TAB BAR NELLA SAFE-AREA INFERIORE
   Su iPhone la barra deve arrivare fino al bordo fisico / home indicator.
   ===================================================================== */
@media(max-width:900px){
  /*
     iOS può tenere una safe-area inferiore separata dal visual viewport.
     Spostiamo la barra dentro quella safe-area, invece di lasciarla sopra.
  */
  .mobile-primary-nav{
    bottom:calc(-1 * env(safe-area-inset-bottom))!important;
    height:calc(var(--mobile-tab-h) + env(safe-area-inset-bottom))!important;
    min-height:calc(var(--mobile-tab-h) + env(safe-area-inset-bottom))!important;
    padding:6px 10px calc(6px + env(safe-area-inset-bottom))!important;
    background:#101827!important;
    border-radius:0!important;
  }

  /* La zona utile del contenuto termina appena sopra i pulsanti visibili,
     non sopra la safe-area: niente fascia vuota. */
  body > main.page,
  body > main.widepage,
  body > main.narrow,
  body > main.taskpage,
  body > main.calendarpage,
  body > main.mobile-home-page{
    bottom:var(--mobile-tab-h)!important;
  }

  .task-composer-backdrop,
  .event-composer-backdrop{
    bottom:var(--mobile-tab-h)!important;
  }

  /* Copertura esplicita del fondo iOS. */
  .mobile-primary-nav::after{
    content:"";
    position:absolute;
    left:0;
    right:0;
    top:100%;
    height:max(env(safe-area-inset-bottom), 32px);
    background:#101827;
    pointer-events:none;
  }
}

@media(display-mode:standalone) and (max-width:900px){
  body::after{
    background:#101827!important;
    z-index:1099!important;
  }
}


/* =====================================================================
   v55 — COMPOSER IMMOBILI SU IPHONE
   Nuovo Task / Nuovo Impegno restano fissi: nessuno scroll del pannello,
   nessun trascinamento della schermata sottostante.
   ===================================================================== */
@media(max-width:900px){
  /* Durante un composer: shell e contenuto dietro completamente immobili. */
  html.composer-open,
  body.composer-open{
    overflow:hidden!important;
    overscroll-behavior:none!important;
    touch-action:none!important;
  }
  body.composer-open > main.page,
  body.composer-open > main.widepage,
  body.composer-open > main.narrow,
  body.composer-open > main.taskpage,
  body.composer-open > main.calendarpage,
  body.composer-open > main.mobile-home-page{
    overflow:hidden!important;
    overscroll-behavior:none!important;
    touch-action:none!important;
    pointer-events:none!important;
  }

  /* La modale occupa esattamente lo spazio tra header e barra inferiore. */
  .task-composer-backdrop,
  .event-composer-backdrop{
    position:fixed!important;
    inset:calc(var(--mobile-header-h) + env(safe-area-inset-top)) 0 var(--mobile-tab-h) 0!important;
    width:100%!important;
    height:auto!important;
    max-height:none!important;
    margin:0!important;
    padding:0!important;
    overflow:hidden!important;
    overscroll-behavior:none!important;
    touch-action:none!important;
    align-items:stretch!important;
    justify-content:stretch!important;
    background:rgba(15,23,40,.28)!important;
    z-index:1050!important;
  }

  /* Pannelli: altezza fissa, niente scrollbar interna. */
  .task-composer-card,
  .event-composer-card{
    position:absolute!important;
    inset:0!important;
    width:100%!important;
    height:100%!important;
    max-width:none!important;
    max-height:none!important;
    min-height:0!important;
    margin:0!important;
    overflow:hidden!important;
    overscroll-behavior:none!important;
    -webkit-overflow-scrolling:auto!important;
    touch-action:manipulation!important;
    box-sizing:border-box!important;
    border:0!important;
    border-radius:22px 22px 0 0!important;
    background:#fff!important;
  }

  /* -------- NUOVO TASK: layout compatto che entra interamente a schermo -------- */
  .task-composer-card{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    grid-template-rows:auto auto 50px auto 48px auto 50px auto 50px auto 50px 58px!important;
    gap:6px!important;
    padding:12px 16px 12px!important;
    align-content:stretch!important;
  }
  .task-composer-head{
    margin:0!important;
    min-height:48px!important;
    align-items:center!important;
  }
  .task-composer-head h3{
    font-size:25px!important;
    line-height:1!important;
  }
  .task-composer-head small{
    margin-top:2px!important;
    font-size:13px!important;
  }
  .task-composer-close{
    width:44px!important;
    height:44px!important;
    border-radius:12px!important;
    font-size:26px!important;
  }
  .task-mobile-label{
    margin:0!important;
    align-self:end!important;
    font-size:13px!important;
    line-height:1.05!important;
  }
  .task-composer-card input,
  .task-composer-card select{
    width:100%!important;
    height:50px!important;
    min-height:50px!important;
    max-height:50px!important;
    margin:0!important;
    padding:8px 12px!important;
    border-radius:12px!important;
    font-size:16px!important;
    box-sizing:border-box!important;
  }
  .task-date-quick{
    width:100%!important;
    height:48px!important;
    margin:0!important;
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:7px!important;
  }
  .task-date-quick button{
    width:100%!important;
    height:48px!important;
    min-height:48px!important;
    padding:0 4px!important;
    border-radius:11px!important;
    font-size:13px!important;
  }
  .task-save-mobile{
    width:100%!important;
    height:58px!important;
    min-height:58px!important;
    margin:0!important;
    align-self:end!important;
    border-radius:13px!important;
    font-size:18px!important;
  }

  /* -------- NUOVO IMPEGNO: tutto visibile, nessun pannello scorrevole -------- */
  .event-composer-card{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    grid-template-rows:auto 50px 48px 88px 48px 48px 48px 48px 58px!important;
    gap:6px!important;
    padding:12px 16px 12px!important;
    align-content:stretch!important;
  }
  .event-composer-head{
    margin:0!important;
    min-height:48px!important;
    align-items:center!important;
  }
  .event-composer-head h3{
    font-size:25px!important;
    line-height:1!important;
  }
  .event-composer-head small{
    margin-top:2px!important;
    font-size:13px!important;
  }
  .event-composer-close{
    width:44px!important;
    height:44px!important;
    border-radius:12px!important;
    font-size:26px!important;
  }
  .event-composer-card > input,
  .event-composer-card > select{
    width:100%!important;
    height:48px!important;
    min-height:48px!important;
    max-height:48px!important;
    margin:0!important;
    padding:8px 12px!important;
    border-radius:12px!important;
    font-size:16px!important;
    box-sizing:border-box!important;
  }
  .time-quick-row{
    width:100%!important;
    height:88px!important;
    margin:0!important;
    display:grid!important;
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    grid-template-rows:repeat(2,1fr)!important;
    gap:6px!important;
  }
  .time-quick-row button{
    width:100%!important;
    min-width:0!important;
    min-height:0!important;
    height:auto!important;
    padding:0!important;
    border-radius:11px!important;
    font-size:13px!important;
  }
  .event-save-btn{
    width:100%!important;
    height:58px!important;
    min-height:58px!important;
    margin:0!important;
    align-self:end!important;
    border-radius:13px!important;
    font-size:18px!important;
  }

  /* Input/select devono poter ricevere il tap senza riattivare gesture di pagina. */
  .task-composer-card input,
  .task-composer-card select,
  .task-composer-card button,
  .event-composer-card input,
  .event-composer-card select,
  .event-composer-card button{
    touch-action:manipulation!important;
  }
}

/* Su telefoni più bassi comprimiamo ancora un poco, MA senza introdurre scroll. */
@media(max-width:900px) and (max-height:760px){
  .task-composer-card{
    grid-template-rows:auto auto 46px auto 44px auto 46px auto 46px auto 46px 52px!important;
    gap:4px!important;
    padding-top:8px!important;
    padding-bottom:8px!important;
  }
  .event-composer-card{
    grid-template-rows:auto 46px 44px 78px 44px 44px 44px 44px 52px!important;
    gap:4px!important;
    padding-top:8px!important;
    padding-bottom:8px!important;
  }
  .task-composer-card input,
  .task-composer-card select{height:46px!important;min-height:46px!important;max-height:46px!important}
  .event-composer-card > input,
  .event-composer-card > select{height:44px!important;min-height:44px!important;max-height:44px!important}
  .task-date-quick{height:44px!important}
  .task-date-quick button{height:44px!important;min-height:44px!important}
  .time-quick-row{height:78px!important}
  .task-save-mobile,.event-save-btn{height:52px!important;min-height:52px!important}
}


/* =====================================================================
   v58 — SPAZIATURA CONTROLLATA (senza toccare la shell stabile v57)
   ===================================================================== */

/* Task composer chiuso per default anche su desktop. */
.task-composer-backdrop{display:none}
.task-composer-backdrop.open{display:flex}

@media(max-width:900px){
  /* CLIENTI: il campo cerca è sticky dentro il main già posizionato sotto header.
     top:0 evita il doppio offset che lo faceva galleggiare in mezzo alle card. */
  .mobile-client-search{
    top:0!important;
    margin-top:0!important;
    margin-bottom:12px!important;
  }

  /* NUOVO TASK: niente griglia con righe implicite; ritmo verticale unico. */
  .task-composer-card{
    display:flex!important;
    flex-direction:column!important;
    align-items:stretch!important;
    justify-content:flex-start!important;
    gap:0!important;
    padding:14px 16px 12px!important;
  }
  .task-composer-head{
    flex:0 0 auto!important;
    min-height:50px!important;
    margin:0 0 8px!important;
    align-items:center!important;
  }
  .task-composer-head h3{font-size:25px!important;line-height:1.05!important}
  .task-composer-head small{margin-top:2px!important;font-size:13px!important}
  .task-mobile-label{
    flex:0 0 auto!important;
    margin:9px 0 5px!important;
    min-height:0!important;
    line-height:1.15!important;
  }
  .task-composer-card input,
  .task-composer-card select{
    flex:0 0 50px!important;
    width:100%!important;
    height:50px!important;
    min-height:50px!important;
    max-height:50px!important;
    margin:0!important;
    padding:8px 12px!important;
    border-radius:12px!important;
    box-sizing:border-box!important;
  }
  .task-date-quick{
    flex:0 0 48px!important;
    width:100%!important;
    height:48px!important;
    margin:0 0 7px!important;
    gap:7px!important;
  }
  .task-date-quick button{
    height:48px!important;
    min-height:48px!important;
    margin:0!important;
  }
  .task-save-mobile{
    flex:0 0 58px!important;
    width:100%!important;
    height:58px!important;
    min-height:58px!important;
    margin:12px 0 0!important;
    border-radius:13px!important;
  }

  /* NUOVO IMPEGNO: tutti gli elementi seguono lo stesso passo verticale. */
  .event-composer-card{
    display:flex!important;
    flex-direction:column!important;
    align-items:stretch!important;
    justify-content:flex-start!important;
    gap:8px!important;
    padding:14px 16px 12px!important;
  }
  .event-composer-head{
    flex:0 0 50px!important;
    min-height:50px!important;
    margin:0 0 2px!important;
    align-items:center!important;
  }
  .event-composer-head h3{font-size:25px!important;line-height:1.05!important}
  .event-composer-head small{margin-top:2px!important;font-size:13px!important}
  .event-composer-card > input,
  .event-composer-card > select{
    flex:0 0 48px!important;
    width:100%!important;
    height:48px!important;
    min-height:48px!important;
    max-height:48px!important;
    margin:0!important;
    padding:8px 12px!important;
    border-radius:12px!important;
    box-sizing:border-box!important;
  }
  .time-quick-row{
    flex:0 0 88px!important;
    width:100%!important;
    height:88px!important;
    margin:0!important;
    gap:7px!important;
  }
  .time-quick-row button{
    margin:0!important;
    border-radius:11px!important;
  }
  .event-save-btn{
    flex:0 0 58px!important;
    width:100%!important;
    height:58px!important;
    min-height:58px!important;
    margin:auto 0 0!important;
    border-radius:13px!important;
  }
}

/* Telefoni bassi: stessa geometria, semplicemente più compatta. */
@media(max-width:900px) and (max-height:760px){
  .task-composer-card,.event-composer-card{padding:8px 14px!important}
  .task-composer-head,.event-composer-head{min-height:42px!important;height:42px!important;flex-basis:42px!important}
  .task-composer-head h3,.event-composer-head h3{font-size:22px!important}
  .task-mobile-label{margin:5px 0 3px!important;font-size:12px!important}
  .task-composer-card input,.task-composer-card select{
    flex-basis:42px!important;height:42px!important;min-height:42px!important;max-height:42px!important
  }
  .task-date-quick{flex-basis:42px!important;height:42px!important;margin-bottom:4px!important}
  .task-date-quick button{height:42px!important;min-height:42px!important}
  .task-save-mobile{flex-basis:50px!important;height:50px!important;min-height:50px!important;margin-top:7px!important}
  .event-composer-card{gap:4px!important}
  .event-composer-card > input,.event-composer-card > select{
    flex-basis:42px!important;height:42px!important;min-height:42px!important;max-height:42px!important
  }
  .time-quick-row{flex-basis:72px!important;height:72px!important;gap:4px!important}
  .event-save-btn{flex-basis:50px!important;height:50px!important;min-height:50px!important}
}

/* DESKTOP: Nuovo task come modale ordinata, non più form mobile mescolato alla pagina. */
@media(min-width:901px){
  .mobile-new-task-btn{
    display:inline-flex!important;
    width:auto!important;
    margin:0 0 14px!important;
  }
  .task-composer-backdrop.open{
    position:fixed!important;
    inset:0!important;
    z-index:700!important;
    align-items:center!important;
    justify-content:center!important;
    padding:24px!important;
    background:rgba(15,23,40,.42)!important;
    backdrop-filter:blur(3px);
  }
  .task-composer-card{
    width:min(620px,94vw)!important;
    max-width:620px!important;
    margin:0!important;
    padding:20px!important;
    display:block!important;
    background:#fff!important;
    border-radius:16px!important;
    box-shadow:0 24px 70px rgba(15,23,40,.28)!important;
  }
  .task-composer-head{display:flex!important;justify-content:space-between!important;align-items:flex-start!important;margin-bottom:12px!important}
  .task-composer-head h3{margin:0!important;font-size:22px!important}
  .task-mobile-label{display:block!important;margin:12px 0 5px!important}
  .task-composer-card input,.task-composer-card select{width:100%!important;min-height:44px!important}
  .task-date-quick{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:8px!important;margin-bottom:8px!important}
  .task-date-quick button{min-height:42px!important}
  .task-save-mobile{width:100%!important;margin-top:16px!important;min-height:48px!important}
}


/* =====================================================================
   v59 — SEARCH CLIENTI NORMALE + TAB BAR DAVVERO A FONDO
   Fix puntuale sopra la v58 stabile: nessuna modifica alla shell restante.
   ===================================================================== */
@media(max-width:900px){
  /* CLIENTI: la ricerca non deve galleggiare sopra le card durante lo scroll. */
  .mobile-client-search{
    position:relative!important;
    top:auto!important;
    left:auto!important;
    right:auto!important;
    z-index:2!important;
    margin:0 0 14px!important;
    transform:none!important;
  }

  /* TAB BAR: il contenitore scuro arriva realmente al bordo inferiore iPhone. */
  .mobile-primary-nav{
    bottom:0!important;
    height:calc(var(--mobile-tab-h) + env(safe-area-inset-bottom))!important;
    min-height:calc(var(--mobile-tab-h) + env(safe-area-inset-bottom))!important;
    padding:6px 10px calc(6px + env(safe-area-inset-bottom))!important;
    box-sizing:border-box!important;
    background:#101827!important;
  }
  .mobile-primary-nav::after{
    display:none!important;
    content:none!important;
  }

  /* Il main termina esattamente sopra la barra completa, safe-area compresa. */
  body > main.page,
  body > main.widepage,
  body > main.narrow,
  body > main.taskpage,
  body > main.calendarpage,
  body > main.mobile-home-page{
    bottom:calc(var(--mobile-tab-h) + env(safe-area-inset-bottom))!important;
  }

  .task-composer-backdrop,
  .event-composer-backdrop{
    bottom:calc(var(--mobile-tab-h) + env(safe-area-inset-bottom))!important;
  }
}

/* In PWA la safe-area sotto la tab bar resta scura, mai bianca. */
@media(display-mode:standalone) and (max-width:900px){
  body::after{
    content:""!important;
    display:block!important;
    position:fixed!important;
    left:0!important;
    right:0!important;
    bottom:0!important;
    height:env(safe-area-inset-bottom)!important;
    background:#101827!important;
    z-index:1099!important;
    pointer-events:none!important;
  }
}


/* ===== v61: LIPE Sì / No per cliente ===== */
.compact-checks .lipe-choice{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.compact-checks .lipe-choice > span{
  font-weight:800;
}
.compact-checks .lipe-choice select{
  width:auto;
  min-width:76px;
  min-height:34px;
  padding:4px 24px 4px 9px;
  border:1px solid var(--line);
  border-radius:8px;
  background:#fff;
  font-size:12px;
  font-weight:800;
}
@media(max-width:900px){
  .compact-checks .lipe-choice select{
    min-width:92px;
    min-height:44px;
    font-size:15px;
  }
}


/* =====================================================================
   v63 — iOS BOTTOM CANVAS FIX
   Safari/PWA può mostrare una zona sotto il visual viewport che non è
   raggiungibile da position:fixed. Quella zona eredita il canvas/root
   della pagina: per questo html + body DEVONO essere scuri.
   Il contenuto applicativo resta chiaro nei <main>.
   ===================================================================== */
@media(max-width:900px){
  html,
  body{
    background:#101827!important;
    background-color:#101827!important;
  }

  /* Il contenuto vero dell'app rimane chiaro. */
  body > main.page,
  body > main.widepage,
  body > main.narrow,
  body > main.taskpage,
  body > main.calendarpage,
  body > main.mobile-home-page{
    background:var(--bg)!important;
    background-color:var(--bg)!important;
  }

  /* Header e tab bar continuano lo stesso canvas scuro. */
  .topbar,
  .mobile-primary-nav{
    background:#101827!important;
    background-color:#101827!important;
  }

  /* I vecchi pseudo-elementi safe-area non servono più e possono creare
     sovrapposizioni/artefatti: la safe-area viene colorata dal root canvas. */
  body::before,
  body::after{
    display:none!important;
    content:none!important;
  }

  /* Nessun margine/padding del root può riaprire una fascia chiara. */
  html,
  body{
    margin:0!important;
    padding:0!important;
    min-height:100%!important;
  }
}


/* ==========================================================
   v64 — Calendario: + grande e presente su ogni giorno mobile
   ========================================================== */
@media(max-width:900px){
  .mobile-day-head{
    min-height:58px!important;
    gap:12px!important;
  }

  .mobile-day-head > div:first-child{
    display:flex!important;
    align-items:center!important;
    min-width:0!important;
  }

  .mobile-day-head b{
    font-size:22px!important;
    line-height:1!important;
    font-weight:900!important;
  }

  .mobile-day-head .cal-add{
    flex:0 0 56px!important;
    width:56px!important;
    height:56px!important;
    min-width:56px!important;
    min-height:56px!important;
    padding:0!important;
    border:0!important;
    border-radius:16px!important;
    display:grid!important;
    place-items:center!important;
    background:#edf2f8!important;
    color:#26364e!important;
    font-size:34px!important;
    line-height:1!important;
    font-weight:800!important;
    cursor:pointer!important;
  }

  .mobile-day-head .cal-add:active{
    transform:scale(.96);
  }

  /* Ogni giorno del mese è visibile di default.
     Il pulsante "SOLO GIORNI UTILI" permette comunque di compattare. */
  .calendar-mobile-agenda.show-all-days .mobile-day-card{
    display:block!important;
  }

  .mobile-day-card.is-empty{
    min-height:82px!important;
  }

  .mobile-day-card.is-empty .mobile-day-empty{
    margin-top:2px!important;
  }
}


/* =====================================================================
   v67 — TASK DETTAGLIO / NOTE / DOCUMENTI / SCADENZA FACOLTATIVA
   ===================================================================== */
.task-title-link{color:inherit;text-decoration:none}
.task-title-link:hover{text-decoration:underline}
.task-no-date{color:#7b8494;font-size:10px!important;letter-spacing:.03em}
.task-date-quick-four{grid-template-columns:repeat(4,minmax(0,1fr))!important}
.task-date-quick-four button{padding-left:4px!important;padding-right:4px!important}

.task-detail-page{max-width:1180px}
.task-detail-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.task-detail-status{min-width:110px;min-height:42px}
.task-detail-card{padding:22px}
.task-detail-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding-bottom:18px;border-bottom:1px solid var(--line);margin-bottom:18px}
.task-detail-heading h1{margin:4px 0 8px;font-size:27px;line-height:1.1}
.eyebrow{display:block;font-size:10px;font-weight:900;letter-spacing:.12em;color:#7a8494;text-transform:uppercase}
.task-detail-meta{display:flex;flex-wrap:wrap;gap:6px 12px;color:var(--muted);font-size:12px}
.task-deadline-badge{min-width:150px;padding:10px 13px;border:1px solid #d5deea;border-radius:12px;background:#f7f9fc;text-align:right}
.task-deadline-badge small{display:block;font-size:9px;font-weight:900;letter-spacing:.1em;color:#7c8798}
.task-deadline-badge b{display:block;margin-top:2px;font-size:14px;color:#21334f}
.task-deadline-badge.no-date{background:#f4f5f7;color:#727b88}
.task-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.task-edit-grid label{display:flex;flex-direction:column;gap:5px;font-size:11px;font-weight:850;color:#4a5568}
.task-edit-grid label span{font-weight:600;color:var(--muted)}
.task-edit-grid input,.task-edit-grid select,.task-edit-grid textarea,.task-note-form textarea,.task-upload-form input[type=file]{width:100%;border:1px solid #d7dde7;border-radius:10px;padding:10px;background:#fff;font:inherit;color:#172235;box-sizing:border-box}
.task-edit-grid input,.task-edit-grid select{min-height:44px}
.task-edit-grid textarea,.task-note-form textarea{resize:vertical;line-height:1.4}
.task-edit-wide{grid-column:1/-1}
.task-edit-actions{display:flex;gap:8px;justify-content:flex-end}
.task-detail-columns{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
.task-notes-panel,.task-docs-panel{padding:18px;min-width:0}
.task-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}
.task-section-head h2{margin:2px 0 0;font-size:19px}
.count-pill{display:grid;place-items:center;min-width:28px;height:28px;padding:0 7px;border-radius:999px;background:#eef2f7;color:#35445a;font-size:11px;font-weight:900}
.task-note-form,.task-upload-form{display:grid;gap:8px;padding:11px;border-radius:12px;background:#f7f9fc;border:1px solid #e1e6ee;margin-bottom:12px}
.task-upload-form small{color:var(--muted);font-size:10px}
.task-note-list,.task-document-list{display:grid;gap:8px}
.task-note-item{padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:#fff}
.task-note-meta{display:flex;justify-content:space-between;gap:10px;font-size:10px;color:var(--muted);margin-bottom:5px}
.task-note-meta b{color:#33445d}
.task-note-text{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;line-height:1.45;color:#27364b}
.task-document-item{display:flex;align-items:center;gap:8px;padding:9px 10px;border:1px solid var(--line);border-radius:11px;background:#fff}
.task-document-main{flex:1;min-width:0;color:inherit;text-decoration:none}
.task-document-main b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.task-document-main small{display:block;color:var(--muted);font-size:9.5px;margin-top:3px}
.compact-empty{padding:16px!important}
.task-delete-detail{display:flex;justify-content:flex-end;margin-top:14px}

@media(max-width:900px){
  .task-date-quick-four{grid-template-columns:repeat(4,minmax(0,1fr))!important}
  .task-date-quick-four button{font-size:9px!important;letter-spacing:0!important}
  .task-detail-page{padding:10px!important}
  .task-detail-topbar{margin-bottom:10px}
  .task-detail-status{min-width:112px!important;min-height:48px!important;font-size:12px!important}
  .task-detail-card{padding:14px!important}
  .task-detail-heading{display:block;margin-bottom:14px;padding-bottom:14px}
  .task-detail-heading h1{font-size:23px;margin-top:4px}
  .task-detail-meta{font-size:11px;line-height:1.35}
  .task-deadline-badge{margin-top:12px;width:100%;min-width:0;text-align:left;box-sizing:border-box}
  .task-edit-grid{grid-template-columns:1fr;gap:10px}
  .task-edit-wide{grid-column:auto}
  .task-edit-grid input,.task-edit-grid select{min-height:48px;font-size:15px}
  .task-edit-grid textarea,.task-note-form textarea{font-size:15px}
  .task-edit-actions{display:grid;grid-template-columns:1fr;gap:7px}
  .task-edit-actions .btn{min-height:48px;width:100%}
  .task-detail-columns{grid-template-columns:1fr;gap:10px;margin-top:10px}
  .task-notes-panel,.task-docs-panel{padding:14px!important}
  .task-note-form .btn,.task-upload-form .btn{min-height:48px;width:100%}
  .task-document-item{padding:11px}
  .task-document-main b{font-size:13px}
  .task-delete-detail .btn{width:100%;min-height:48px}
}


/* ==========================================================
   v68 — Task evoluti + calendario + iPhone subscription
   ========================================================== */
.task-file-input{
  width:100%;
  min-height:44px;
  padding:8px;
  border:1px dashed var(--line);
  border-radius:10px;
  background:#fff;
}
.task-file-hint{display:block;margin-top:4px;color:var(--muted)}

.calendar-task-alert{
  display:flex;
  align-items:center;
  gap:12px;
  padding:10px 14px;
  margin:0 0 10px;
  border:1px solid #f0c36d;
  border-radius:12px;
  background:#fff8e7;
  color:#704a00;
  font-size:13px;
}
.calendar-task-alert span{color:#7a6540}

.cal-task.task-due-alert{
  border:1px solid #e2a640!important;
  background:#fff6df!important;
  color:#684300!important;
  text-decoration:none!important;
}
.task-due-label{
  display:block;
  margin-bottom:2px;
  font-size:9px;
  line-height:1.1;
  font-weight:900;
  letter-spacing:.04em;
  color:#9a5a00;
}
.cal-task{cursor:pointer;text-decoration:none}

/* Desktop: numero giorno e + con peso visivo maggiore. */
@media(min-width:901px){
  .calendar-day-head{
    min-height:38px;
    align-items:center;
  }
  .calendar-day-head > b{
    font-size:22px!important;
    line-height:1!important;
    font-weight:900!important;
  }
  .calendar-day-head .cal-add{
    width:36px!important;
    height:36px!important;
    min-width:36px!important;
    min-height:36px!important;
    padding:0!important;
    border-radius:10px!important;
    font-size:25px!important;
    line-height:1!important;
    font-weight:800!important;
    display:grid!important;
    place-items:center!important;
  }
}

.iphone-calendar-connect{position:relative}
.iphone-calendar-connect > summary{list-style:none;cursor:pointer}
.iphone-calendar-connect > summary::-webkit-details-marker{display:none}
.iphone-calendar-popover{
  position:absolute;
  z-index:1500;
  right:0;
  top:calc(100% + 8px);
  width:min(360px,88vw);
  display:grid;
  gap:9px;
  padding:14px;
  border:1px solid var(--line);
  border-radius:14px;
  background:#fff;
  box-shadow:0 16px 45px rgba(20,31,48,.18);
}
.iphone-calendar-popover small{line-height:1.35;color:var(--muted)}
.iphone-calendar-popover form{margin:0}

@media(max-width:900px){
  .calendar-task-alert{
    margin:8px 12px 10px;
    align-items:flex-start;
    flex-direction:column;
    gap:3px;
  }
  .iphone-calendar-connect{position:static}
  .iphone-calendar-popover{
    position:fixed;
    left:12px;
    right:12px;
    bottom:calc(var(--mobile-tab-h,82px) + 12px);
    top:auto;
    width:auto;
    z-index:1700;
  }
  .mobile-day-head b{
    font-size:25px!important;
  }
  .mobile-day-head .cal-add{
    width:58px!important;
    height:58px!important;
    min-width:58px!important;
    min-height:58px!important;
    font-size:36px!important;
  }
  .task-due-label{font-size:10px}
}

@media(max-width:900px){
  /* Il composer mobile resta fisso: dopo SALVA TASK si apre il dettaglio,
     dove gli allegati possono essere caricati senza allungare la modale. */
  .task-composer-card .task-create-file-label,
  .task-composer-card .task-file-input,
  .task-composer-card .task-file-hint{display:none!important}
}


/* ==========================================================
   v72 — Calendario leggibile, +N apribile, OGGI evidenziato
   ========================================================== */

/* Il giorno corrente deve saltare subito all'occhio. */
.calendar-day.calendar-today{
  background:#fff7c7!important;
  box-shadow:inset 0 0 0 3px #e4ad17!important;
}
.calendar-day.calendar-today .calendar-day-head > b{
  display:inline-grid!important;
  place-items:center!important;
  min-width:34px!important;
  height:34px!important;
  padding:0 7px!important;
  border-radius:10px!important;
  background:#e4ad17!important;
  color:#172033!important;
}

.calendar-overflow-item{
  display:none!important;
}

/* +N diventa un vero pulsante. */
.calendar-more{
  width:100%;
  border:1px solid #cbd5e1;
  border-radius:7px;
  background:#f1f5f9;
  color:#334155;
  padding:5px 7px;
  margin-top:4px;
  font-size:11px;
  line-height:1.1;
  font-weight:900;
  cursor:pointer;
  text-align:center;
}
.calendar-more:hover{background:#e7edf5}

/* Quando si apre +N, la cella diventa un popover sopra il calendario:
   non deforma tutte le righe del mese e consente di leggere ogni voce. */
.calendar-day{position:relative}
.calendar-day.calendar-expanded{
  z-index:80!important;
  overflow:visible!important;
}
.calendar-day.calendar-expanded .calendar-day-items{
  position:absolute!important;
  z-index:90!important;
  top:42px!important;
  left:4px!important;
  right:4px!important;
  height:auto!important;
  max-height:360px!important;
  overflow-y:auto!important;
  padding:7px!important;
  border:1px solid #cbd5e1!important;
  border-radius:10px!important;
  background:#fff!important;
  box-shadow:0 16px 42px rgba(15,23,42,.22)!important;
}
.calendar-day.calendar-expanded .calendar-overflow-item:not(.calendar-filter-hidden){
  display:block!important;
}

/* Scadenze fiscali più leggibili nel calendario desktop. */
@media(min-width:901px){
  .calendar-one-screen .cal-fiscal{
    padding:5px 6px!important;
    font-size:11.5px!important;
    line-height:1.2!important;
  }
  .calendar-one-screen .cal-fiscal b{
    font-size:11.5px!important;
    line-height:1.2!important;
    font-weight:900!important;
  }
  .calendar-one-screen .cal-fiscal small{
    font-size:9.5px!important;
    line-height:1.15!important;
    margin-top:3px!important;
  }
}

/* Mobile: OGGI ancora più evidente e scadenze più grandi. */
@media(max-width:900px){
  .mobile-day-card.calendar-today{
    background:#fff7c7!important;
    border:2px solid #e4ad17!important;
    box-shadow:0 5px 18px rgba(180,130,0,.15)!important;
  }
  .mobile-day-card.calendar-today .mobile-day-head b{
    color:#7a5300!important;
  }
  .mobile-day-items .cal-fiscal{
    padding:10px 11px!important;
  }
  .mobile-day-items .cal-fiscal b{
    font-size:16px!important;
    line-height:1.25!important;
    font-weight:900!important;
  }
  .mobile-day-items .cal-fiscal small{
    font-size:13px!important;
    line-height:1.2!important;
    margin-top:4px!important;
  }
}


/* ==========================================================
   v73 — Task bancone + calendario molto più leggibile
   ========================================================== */

/* --- Workflow documenti fisici / bancone --- */
.task-handoff-panel{margin-top:14px;padding:18px}
.task-handoff-form{display:grid;gap:12px}
.task-handoff-options{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:8px;
}
.task-handoff-option{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:54px;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:#fff;
  cursor:pointer;
  text-align:center;
  font-size:11px;
  font-weight:850;
  line-height:1.2;
}
.task-handoff-option input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}
.task-handoff-option:has(input:checked){
  background:#eef4fb;
  border-color:#7b94b8;
  box-shadow:inset 0 0 0 2px rgba(79,117,184,.12);
}
.task-handoff-note-label{display:grid;gap:6px;font-size:11px;font-weight:800}
.task-handoff-note-label span{font-weight:600;color:var(--muted)}
.task-handoff-actions{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
}
.task-handoff-actions small{font-size:10px;color:var(--muted)}
.task-handoff-badge{
  display:inline-flex;
  align-items:center;
  width:max-content;
  min-height:26px;
  padding:5px 9px;
  border-radius:999px;
  border:1px solid #cbd5e1;
  background:#f8fafc;
  color:#334155;
  font-size:10px;
  font-weight:900;
}
.task-handoff-inline{
  display:flex;
  align-items:center;
  gap:7px;
  margin-top:5px;
}
.task-handoff-inline-note{
  color:var(--muted);
  font-size:10px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* --- Calendario desktop: testi realmente leggibili --- */
@media(min-width:901px){
  .calendar-one-screen .calendar-weekday{
    font-size:11.5px!important;
    font-weight:900!important;
  }

  .calendar-one-screen .calendar-day{
    padding:6px 7px!important;
  }

  .calendar-one-screen .calendar-day-head{
    height:30px!important;
    margin-bottom:4px!important;
  }

  .calendar-one-screen .calendar-day-head > b{
    font-size:16px!important;
    line-height:1!important;
    font-weight:900!important;
  }

  .calendar-one-screen .cal-add{
    width:28px!important;
    height:28px!important;
    font-size:20px!important;
    line-height:1!important;
    border-radius:8px!important;
    font-weight:900!important;
  }

  .calendar-day-items{
    height:calc(100% - 34px)!important;
  }

  .calendar-one-screen .cal-item{
    margin:4px 0!important;
    padding:6px 7px!important;
    border-radius:7px!important;
    font-size:13px!important;
    line-height:1.18!important;
  }

  .calendar-one-screen .cal-item b{
    font-size:13px!important;
    line-height:1.18!important;
    font-weight:900!important;
    -webkit-line-clamp:2!important;
  }

  .calendar-one-screen .cal-item small{
    margin-top:3px!important;
    font-size:10.5px!important;
    line-height:1.15!important;
  }

  /* Scadenze fiscali ancora un po' più grandi delle altre voci. */
  .calendar-one-screen .cal-fiscal,
  .calendar-one-screen .cal-fiscal b{
    font-size:14px!important;
    line-height:1.2!important;
  }

  .calendar-one-screen .cal-fiscal small{
    font-size:11px!important;
  }

  .calendar-more{
    min-height:30px!important;
    padding:6px 8px!important;
    font-size:12px!important;
    font-weight:900!important;
  }

  /* Popover +N largo e leggibile. */
  .calendar-day.calendar-expanded .calendar-day-items{
    max-height:430px!important;
    padding:10px!important;
  }
  .calendar-day.calendar-expanded .cal-item,
  .calendar-day.calendar-expanded .cal-item b{
    font-size:14px!important;
  }
}

/* Mobile: testi calendario ben leggibili. */
@media(max-width:900px){
  .task-handoff-panel{margin-top:10px;padding:14px!important}
  .task-handoff-options{grid-template-columns:1fr 1fr}
  .task-handoff-option{min-height:58px;font-size:12px}
  .task-handoff-option:last-child:nth-child(odd){grid-column:1/-1}
  .task-handoff-actions{display:grid;grid-template-columns:1fr}
  .task-handoff-actions .btn{min-height:48px}
  .task-handoff-inline{align-items:flex-start;flex-direction:column}

  .mobile-day-head b{
    font-size:23px!important;
  }
  .mobile-day-items .cal-item b{
    font-size:16px!important;
    line-height:1.25!important;
  }
  .mobile-day-items .cal-fiscal b{
    font-size:17px!important;
    line-height:1.28!important;
  }
  .mobile-day-items .cal-fiscal small{
    font-size:13.5px!important;
  }
}


/* =====================================================================
   v75 — CALENDARIO DESKTOP ADATTIVO
   Il mese resta compatto, ma nessuna attività è più irraggiungibile:
   - le preview si adattano automaticamente all'altezza reale della cella;
   - +N è sempre visibile quando serve;
   - +N / numero giorno aprono un drawer esterno alla griglia con tutto il giorno.
   ===================================================================== */
@media(min-width:901px){
  .calendar-grid-fit{
    overflow:hidden!important;
  }

  .calendar-one-screen .calendar-day{
    position:relative!important;
    min-width:0!important;
    overflow:hidden!important;
  }

  .calendar-one-screen .calendar-day-head{
    height:34px!important;
    min-height:34px!important;
    margin-bottom:3px!important;
  }

  .calendar-day-number{
    appearance:none;
    border:0;
    background:transparent;
    color:var(--text);
    min-width:30px;
    height:30px;
    padding:0 5px;
    border-radius:9px;
    display:grid;
    place-items:center;
    font:inherit;
    font-size:17px!important;
    line-height:1!important;
    font-weight:950!important;
    cursor:pointer;
  }
  .calendar-day-number:hover{background:#eef3f9}

  .calendar-day.calendar-today .calendar-day-number{
    background:#e4ad17!important;
    color:#172033!important;
  }
  .calendar-day.calendar-selected{
    box-shadow:inset 0 0 0 3px #4f75b8!important;
  }

  .calendar-day-items{
    height:calc(100% - 37px)!important;
    min-height:0!important;
    overflow:hidden!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:stretch!important;
  }

  /* Nella vista mese mostriamo una preview leggibile, non il documento intero. */
  .calendar-grid-fit .cal-item{
    flex:0 0 auto!important;
    width:100%!important;
    min-height:32px!important;
    max-height:34px!important;
    margin:3px 0!important;
    padding:7px 8px!important;
    border-radius:7px!important;
    font-size:12.5px!important;
    line-height:1.1!important;
    text-align:left!important;
    box-sizing:border-box!important;
  }
  .calendar-grid-fit button.cal-item{
    appearance:none;
    border-top:0;
    border-right:0;
    border-bottom:0;
    cursor:pointer;
  }
  .calendar-grid-fit .cal-item b{
    display:block!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    -webkit-line-clamp:1!important;
    font-size:12.5px!important;
    line-height:1.15!important;
    font-weight:900!important;
  }
  .calendar-grid-fit .cal-item small,
  .calendar-grid-fit .task-due-label{
    display:none!important;
  }
  .calendar-grid-fit .cal-event-line{
    align-items:center!important;
  }

  .calendar-more[hidden]{display:none!important}
  .calendar-more{
    flex:0 0 auto!important;
    width:100%!important;
    min-height:29px!important;
    margin:3px 0 0!important;
    padding:5px 8px!important;
    border:1px solid #b9c7d9!important;
    border-radius:8px!important;
    background:#eef3f9!important;
    color:#243750!important;
    font-size:11.5px!important;
    line-height:1!important;
    font-weight:950!important;
    cursor:pointer!important;
  }
  .calendar-more:hover{background:#dde8f5!important}

  .calendar-overflow-item{display:none!important}
}

/* Drawer giorno: vive FUORI dalla griglia, quindi overflow della griglia non può tagliarlo. */
.calendar-day-drawer-backdrop{
  position:fixed;
  z-index:2100;
  inset:48px 0 0 0;
  display:flex;
  justify-content:flex-end;
  background:rgba(15,23,42,.20);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .16s ease, visibility .16s ease;
}
.calendar-day-drawer-backdrop.open{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
}
.calendar-day-drawer{
  width:min(560px,92vw);
  height:100%;
  background:#fff;
  border-left:1px solid var(--line);
  box-shadow:-18px 0 48px rgba(15,23,42,.18);
  display:flex;
  flex-direction:column;
  transform:translateX(24px);
  transition:transform .16s ease;
}
.calendar-day-drawer-backdrop.open .calendar-day-drawer{transform:translateX(0)}
.calendar-day-drawer-head{
  flex:none;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:18px 20px;
  border-bottom:1px solid var(--line);
  background:#fff;
}
.calendar-day-drawer-head h2{
  margin:3px 0 0;
  font-size:25px;
  line-height:1.05;
  text-transform:capitalize;
}
.calendar-day-drawer-actions{display:flex;align-items:center;gap:8px}
.calendar-day-drawer-close{
  width:42px;height:42px;border:0;border-radius:11px;background:#eef2f7;
  color:#45556d;font-size:28px;line-height:1;cursor:pointer;
}
.calendar-day-drawer-content{
  flex:1;
  min-height:0;
  overflow-y:auto;
  padding:18px 20px 28px;
  background:#f7f9fc;
}
.calendar-day-detail-empty{
  padding:18px;
  border:1px dashed #cbd5e1;
  border-radius:12px;
  background:#fff;
  color:var(--muted);
  text-align:center;
  font-size:14px;
}
.calendar-day-detail-group{margin:0 0 20px}
.calendar-day-detail-group[hidden]{display:none!important}
.calendar-day-detail-group-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin:0 0 8px;
}
.calendar-day-detail-group-head > b{
  min-width:26px;height:26px;border-radius:999px;background:#e8eef6;
  display:grid;place-items:center;font-size:12px;color:#42536b;
}
.detail-kind{
  display:inline-flex;align-items:center;min-height:28px;padding:5px 9px;border-radius:999px;
  font-size:11px;font-weight:950;letter-spacing:.03em;
}
.detail-kind.fiscal{background:#ffe1e4;color:#a62331}
.detail-kind.task{background:#fff0cc;color:#8a5b00}
.detail-kind.event{background:#e4edff;color:#244f9c}
.calendar-day-detail-list{display:grid;gap:8px}
.calendar-detail-item{
  display:block;
  width:100%;
  border-radius:11px;
  padding:12px 13px;
  box-sizing:border-box;
  text-decoration:none;
  font-size:15px;
  line-height:1.28;
}
.calendar-detail-item b{
  display:block;
  font-size:15.5px;
  line-height:1.28;
  font-weight:900;
  white-space:normal;
}
.calendar-detail-item small{
  display:block;
  margin-top:5px;
  font-size:12.5px;
  line-height:1.25;
  opacity:.84;
}
.calendar-detail-item .task-due-label{font-size:10px;margin-bottom:4px}
.calendar-detail-delete{
  width:34px;height:34px;border-radius:8px;background:rgba(255,255,255,.56)!important;
  font-size:20px!important;flex:none;
}
body.calendar-day-drawer-open{overflow:hidden!important}

@media(max-width:900px){
  .calendar-day-drawer-backdrop{display:none!important}
}


/* ==========================================================
   v77 — Email settimanale scadenze fiscali
   ========================================================== */
.weekly-fiscal-mail-card{margin:16px 0;padding:20px}
.weekly-mail-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:18px
}
.weekly-mail-head h2{margin:3px 0 5px}
.weekly-mail-head p{margin:4px 0;max-width:900px}
.weekly-mail-form{display:grid;gap:14px;margin-top:16px}
.weekly-enable{display:flex;align-items:center;gap:9px;font-weight:850}
.weekly-enable input{width:18px;height:18px}
.weekly-smtp-grid{
  display:grid;
  grid-template-columns:2fr .7fr 1fr 1.4fr 1.4fr 1.5fr 1.2fr;
  gap:10px;align-items:end
}
.weekly-mail-actions,.weekly-test-form{display:flex;gap:8px}
.weekly-test-form{margin-top:8px}
.weekly-mail-history{
  margin-top:18px;padding-top:16px;border-top:1px solid var(--line)
}
.weekly-mail-history h3{margin:0 0 10px}
@media(max-width:1200px){
  .weekly-smtp-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:900px){
  .weekly-fiscal-mail-card{padding:14px!important}
  .weekly-mail-head{display:grid;grid-template-columns:1fr}
  .weekly-smtp-grid{grid-template-columns:1fr}
  .weekly-mail-actions .btn,.weekly-test-form .btn{
    width:100%;min-height:48px
  }
}


/* v78 — invio immediato email fiscale */
.weekly-send-buttons{
  display:flex;
  align-items:flex-start;
  gap:10px;
  margin-top:10px;
  flex-wrap:wrap;
}
.weekly-send-buttons form{display:grid;gap:5px}
.weekly-send-buttons small{
  max-width:520px;
  color:var(--muted);
  font-size:10px;
}
.weekly-send-now{
  min-height:44px;
  padding-left:20px!important;
  padding-right:20px!important;
  font-weight:900!important;
}
@media(max-width:900px){
  .weekly-send-buttons{display:grid;grid-template-columns:1fr}
  .weekly-send-buttons form,.weekly-send-buttons .btn{width:100%}
  .weekly-send-now{min-height:50px}
}


/* ==========================================================
   v79 — Sospesi contabilità
   ========================================================== */
.suspense-page{max-width:1550px}
.suspense-pagehead{margin-bottom:10px}
.suspense-metrics{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin-bottom:12px;
}
.suspense-metric{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:13px 15px;
  border:1px solid var(--line);
  border-radius:11px;
  background:#fff;
}
.suspense-metric span{font-size:12px;font-weight:800;color:#657186}
.suspense-metric b{font-size:24px}
.suspense-metric.sel{box-shadow:inset 0 0 0 2px #7fa0d8}
.suspense-metric.danger b{color:#b42332}
.suspense-metric.answer b{color:#196b4b}

.suspense-create-card{padding:16px;margin-bottom:12px}
.suspense-section-title h2{margin:3px 0 12px;font-size:18px}
.suspense-quick-form{
  display:grid;
  grid-template-columns:1.25fr 140px 120px 1.25fr 2.3fr 150px 150px 1.15fr;
  gap:8px;
  align-items:end;
}
.suspense-title-field{grid-column:auto}
.suspense-request-field{grid-column:1/-2}
.suspense-create-action{align-self:end;padding-bottom:12px}
.suspense-create-action .btn{white-space:nowrap}
.suspense-bulk{
  margin-top:4px;
  border-top:1px solid var(--line);
  padding-top:10px;
}
.suspense-bulk summary{
  cursor:pointer;
  width:max-content;
  font-size:11px;
  font-weight:900;
  color:#294f91;
}
.suspense-bulk-form{
  display:grid;
  grid-template-columns:1.3fr 1.3fr 120px 1.2fr;
  gap:8px;
  margin-top:10px;
}
.bulk-text-field{grid-column:1/-1}
.suspense-bulk-form>button{width:max-content}

.suspense-toolbar{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:10px;
  margin-bottom:10px;
  align-items:center;
}
.suspense-filters{display:flex;gap:5px;flex-wrap:wrap}
.suspense-search-form{
  display:flex;
  gap:6px;
  min-width:0;
}
.suspense-search-form select,
.suspense-search-form input{
  min-width:140px;
  border:1px solid var(--line);
  border-radius:8px;
  padding:7px 8px;
  background:#fff;
}
.suspense-search-form input{min-width:210px}

.suspense-list{display:grid;gap:8px}
.suspense-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) 180px auto;
  gap:14px;
  align-items:center;
  padding:13px 14px;
  border-left:4px solid transparent;
}
.suspense-row.followup-due{
  border-left-color:#c63d49;
  background:#fffafa;
}
.suspense-row.answer-ready{
  border-left-color:#2c8a63;
  background:#fbfffd;
}
.suspense-client-line{
  display:flex;
  align-items:center;
  gap:7px;
  flex-wrap:wrap;
  margin-bottom:4px;
}
.suspense-client{font-size:11px;font-weight:900;color:#294f91;text-transform:uppercase}
.suspense-category{
  font-size:9.5px;
  font-weight:800;
  color:#6a7485;
  padding:3px 6px;
  border-radius:999px;
  background:#f2f4f7;
}
.suspense-alert,.suspense-answer-badge{
  font-size:9px;
  font-weight:900;
  padding:3px 6px;
  border-radius:999px;
}
.suspense-alert{background:#ffe5e8;color:#a51e30}
.suspense-answer-badge{background:#def5ea;color:#08744b}
.suspense-title{
  display:block;
  font-size:14px;
  line-height:1.28;
  font-weight:850;
  color:#172033;
}
.suspense-request-preview{
  margin-top:3px;
  font-size:11px;
  color:#657186;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.suspense-meta{
  display:flex;
  flex-wrap:wrap;
  gap:6px 12px;
  margin-top:6px;
  font-size:10.5px;
  color:#778195;
}
.suspense-amount{font-weight:850;color:#313d50}
.suspense-row-status{display:grid;gap:5px;justify-items:start}
.suspense-status{
  display:inline-flex;
  align-items:center;
  width:max-content;
  padding:5px 8px;
  border-radius:999px;
  font-size:10px;
  font-weight:900;
}
.status-da-verificare{background:#eef1f6;color:#536074}
.status-da-chiedere{background:#fff0d5;color:#875700}
.status-in-attesa-cliente{background:#e8efff;color:#365eae}
.status-risposta-ricevuta{background:#def5ea;color:#08744b}
.status-chiuso{background:#edf0f3;color:#6d7582}
.suspense-followup{font-size:10px;color:#657186}
.suspense-followup.overdue{color:#a51e30;font-weight:900}
.suspense-row-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:5px;
  flex-wrap:wrap;
}
.suspense-row-actions form{margin:0}
.suspense-empty{padding:45px!important}

.client-suspense-link,
.monitor-suspense-badge{
  display:inline-flex;
  width:max-content;
  align-items:center;
  margin-top:5px;
  padding:4px 7px;
  border-radius:999px;
  background:#eef2f8;
  color:#40506a;
  font-size:9.5px;
  line-height:1;
  font-weight:900;
}
.client-suspense-link.due,
.monitor-suspense-badge.due{
  background:#ffe5e8;
  color:#a51e30;
}
.monitor-suspense-badge{margin-left:4px}

.suspense-detail-page h1{font-size:23px}
.suspense-due-banner{
  margin-bottom:12px;
  padding:11px 13px;
  border:1px solid #f0aab1;
  border-radius:10px;
  background:#fff0f1;
  color:#9f2534;
  font-weight:800;
}
.suspense-detail-actions{
  display:flex;
  gap:8px;
  padding:12px;
  margin-bottom:12px;
  flex-wrap:wrap;
}
.suspense-detail-form{margin-bottom:12px}
.suspense-detail-form h2,
.suspense-close-card h2,
.suspense-notes-card h2{margin:0 0 12px;font-size:18px}
.suspense-close-card,
.suspense-notes-card{padding:16px;margin-bottom:12px}
.suspense-note-form{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px;
  align-items:end;
}
.suspense-note-form textarea{
  width:100%;
  border:1px solid var(--line);
  border-radius:8px;
  padding:9px;
}
.suspense-timeline{display:grid;gap:7px;margin-top:12px}
.suspense-note{
  padding:9px 11px;
  border-left:3px solid #b7c6dd;
  background:#f8fafc;
  border-radius:0 8px 8px 0;
}
.suspense-note div{font-size:12px}
.suspense-note small{display:block;margin-top:4px;color:#7a8495;font-size:10px}

.launch-suspense .launch-icon{
  background:#fff0d5!important;
  color:#875700!important;
}

/* La tab bar mobile passa da 4 a 5 sezioni. */
@media(max-width:900px){
  .mobile-primary-nav,
  .topbar .mobile-primary-nav{
    grid-template-columns:repeat(5,minmax(0,1fr))!important;
    padding-left:5px!important;
    padding-right:5px!important;
    gap:2px!important;
  }
  .mobile-primary-nav a,
  .topbar .mobile-primary-nav a{
    font-size:11.5px!important;
    padding-left:1px!important;
    padding-right:1px!important;
  }

  .suspense-page{padding:10px!important}
  .suspense-metrics{
    grid-template-columns:1fr 1fr;
    gap:7px;
  }
  .suspense-metric{padding:10px 11px}
  .suspense-metric b{font-size:20px}

  .suspense-create-card{padding:12px}
  .suspense-quick-form,
  .suspense-bulk-form{
    grid-template-columns:1fr!important;
    gap:4px;
  }
  .suspense-request-field,.bulk-text-field{grid-column:auto}
  .suspense-create-action{padding-bottom:0}
  .suspense-create-action .btn,
  .suspense-bulk-form>button{width:100%;min-height:46px}

  .suspense-toolbar{
    display:grid;
    gap:8px;
    padding:8px;
  }
  .suspense-filters{
    display:grid;
    grid-template-columns:repeat(3,1fr);
  }
  .suspense-filters .btn{
    padding:7px 3px;
    text-align:center;
    font-size:9.5px;
  }
  .suspense-search-form{
    display:grid;
    grid-template-columns:1fr 1fr;
  }
  .suspense-search-form select,
  .suspense-search-form input{
    min-width:0;
    width:100%;
  }
  .suspense-search-form input[type="search"]{
    grid-column:1/-1;
  }

  .suspense-row{
    grid-template-columns:1fr;
    gap:9px;
    padding:11px;
  }
  .suspense-title{font-size:14px}
  .suspense-request-preview{
    white-space:normal;
    display:-webkit-box;
    -webkit-line-clamp:2;
    -webkit-box-orient:vertical;
  }
  .suspense-row-status{
    display:flex;
    align-items:center;
    gap:8px;
    flex-wrap:wrap;
  }
  .suspense-row-actions{
    justify-content:stretch;
    display:grid;
    grid-template-columns:1fr 1fr;
  }
  .suspense-row-actions form,
  .suspense-row-actions .btn{width:100%}
  .suspense-row-actions .btn{text-align:center}

  .suspense-detail-actions{display:grid;grid-template-columns:1fr}
  .suspense-detail-actions form,
  .suspense-detail-actions .btn{width:100%}
  .suspense-note-form{grid-template-columns:1fr}
  .suspense-note-form .btn{width:100%}
}


/* v80 — Sospesi generici */
.generic-suspense-form{
  grid-template-columns:1.2fr 2fr 2.6fr 150px 150px 1.2fr auto!important;
}
.generic-suspense-form .suspense-title-field,
.generic-suspense-form .suspense-request-field{
  grid-column:auto!important;
}
.generic-suspense-form .suspense-create-action{
  align-self:end!important;
}
.generic-bulk-form{
  grid-template-columns:1.4fr 1.2fr!important;
}
.generic-bulk-form .bulk-text-field{
  grid-column:1/-1!important;
}
.suspense-row .suspense-client-line{
  margin-bottom:5px;
}
@media(max-width:1100px){
  .generic-suspense-form{
    grid-template-columns:1fr 1fr 1fr!important;
  }
}
@media(max-width:900px){
  .generic-suspense-form,
  .generic-bulk-form{
    grid-template-columns:1fr!important;
  }
}

/* ===== CPOOL V81 · BANCHE AI ===== */
.bank-ai-page{--bank-green:#08744b;--bank-amber:#9a6500;--bank-red:#a82f3d}
.bank-ai-back{display:inline-block;color:#60708a;font-size:12px;font-weight:800;margin-bottom:8px}
.bank-ai-status-strip{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 14px}
.bank-ai-status-strip.settings{margin-bottom:18px}
.bank-ai-meta{font-size:12px;color:var(--muted)}
.bank-ai-upload-card{padding:20px;margin-bottom:16px}
.bank-ai-section-title{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}
.bank-ai-section-title h2,.bank-ai-table-head h2{margin:2px 0 4px;font-size:20px}
.bank-ai-section-title p,.bank-ai-table-head p{margin:0;color:var(--muted);font-size:13px}
.bank-ai-eyebrow{font-size:10px;letter-spacing:.12em;font-weight:900;color:#4d69a3}
.bank-ai-file-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:8px 0 16px}
.bank-ai-file-box{position:relative;display:flex;flex-direction:column;gap:4px;border:1px dashed #b9c4d5;background:#fafcff;border-radius:12px;padding:16px 14px 14px;cursor:pointer;min-height:154px}
.bank-ai-file-box:hover{border-color:#6f94df;background:#f6f9ff}
.bank-ai-file-box-new{border-style:solid;border-color:#b7caef;background:#f7faff}
.bank-ai-file-box b{font-size:14px;color:#1c2c47;padding-right:22px}
.bank-ai-file-box small{color:var(--muted);font-size:11px;margin-bottom:9px}
.bank-ai-file-box input{margin-top:auto;width:100%;font-size:12px}
.bank-ai-step{position:absolute;right:12px;top:12px;width:24px;height:24px;border-radius:999px;background:#e9effb;color:#335dba;display:grid;place-items:center;font-weight:900;font-size:11px}
.bank-ai-extra-fields{align-items:start}
.bank-ai-optional{font-weight:600;color:#8994a7}
.bank-ai-action-row{display:flex;gap:14px;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:15px;margin-top:2px}
.bank-ai-inline-hint{margin:0;flex:1}
.bank-ai-analyze-btn{min-width:220px;min-height:44px}
.bank-ai-history-card{margin-top:16px}
.bank-ai-table-head{padding:15px 16px 4px}
.bank-ai-state{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:850;background:#edf1f6;color:#516075}
.bank-ai-state-done{background:#def5ea;color:#08744b}.bank-ai-state-running,.bank-ai-state-queued{background:#e1eaff;color:#2d56a8}.bank-ai-state-error{background:#fff0f1;color:#a82f3d}
.bank-ai-processing{display:flex;align-items:center;gap:22px;padding:28px;margin-top:16px;min-height:180px}
.bank-ai-processing-copy{flex:1}.bank-ai-processing-copy h2{margin:5px 0 14px}.bank-ai-processing-copy p{color:var(--muted);font-size:12px}
.bank-ai-spinner{width:46px;height:46px;border:4px solid #e1e7f0;border-top-color:#2f68e5;border-radius:50%;animation:bankspin .9s linear infinite;flex:0 0 auto}
@keyframes bankspin{to{transform:rotate(360deg)}}
.bank-ai-main-progress{height:9px;max-width:680px}
.bank-ai-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:12px 0}
.bank-ai-metric{padding:14px 15px}.bank-ai-metric span{display:block;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase}.bank-ai-metric b{display:block;font-size:27px;margin:5px 0 2px}.bank-ai-metric small{color:var(--muted);font-size:11px}
.bank-ai-metric-ok b{color:var(--bank-green)}.bank-ai-metric-warn b{color:var(--bank-amber)}.bank-ai-metric-bad b{color:var(--bank-red)}
.bank-ai-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;margin-bottom:10px;position:sticky;top:66px;z-index:22}
.bank-ai-filters{display:flex;gap:5px;flex-wrap:wrap}.bank-ai-filters .btn.active{background:#172033;color:white;border-color:#172033}.bank-ai-toolbar-note{font-size:12px;color:var(--muted)}
.bank-ai-review-card{overflow:auto;max-height:calc(100vh - 260px)}
.bank-ai-review-table{min-width:1200px}.bank-ai-review-table thead th{position:sticky;top:0;z-index:3}
.bank-ai-review-table td{vertical-align:top}.bank-ai-review-table tr.bank-ai-needs-review td{background:#fffdfa}.bank-ai-review-table tr.bank-ai-row-low td{background:#fff7f7}
.bank-ai-date{white-space:nowrap;width:90px}.bank-ai-desc{min-width:340px;max-width:520px}.bank-ai-desc b{display:block;font-size:12px;line-height:1.35}.bank-ai-desc small{display:block;color:var(--muted);margin-top:5px}.bank-ai-amount{font-weight:850;white-space:nowrap;width:110px}.bank-ai-amount.positive{color:#08744b}.bank-ai-amount.negative{color:#9b3340}
.bank-ai-accounts-cell{min-width:220px}.bank-ai-component{display:grid;grid-template-columns:94px 1fr auto;gap:6px;align-items:center;margin-bottom:5px}.bank-ai-account-input{width:94px!important;padding:6px!important;font-weight:850}.bank-ai-component span{font-size:11px;color:#526176}.bank-ai-component small{font-size:10px;font-weight:800;color:#64748b;white-space:nowrap}
.bank-ai-confidence{display:inline-flex;padding:4px 7px;border-radius:999px;font-size:10px;font-weight:900}.bank-ai-confidence-high{background:#def5ea;color:#08744b}.bank-ai-confidence-medium{background:#fff2d6;color:#8b5a00}.bank-ai-confidence-low{background:#ffe2e5;color:#a82f3d}
.bank-ai-reason{min-width:250px;max-width:380px;font-size:12px;color:#4d596d}.bank-ai-reason details{margin-top:7px}.bank-ai-reason summary{cursor:pointer;color:#335dba;font-weight:800;font-size:11px}.bank-ai-history-example{border-top:1px solid #edf0f4;padding:6px 0;font-size:11px}.bank-ai-history-example small{color:var(--muted)}
.bank-ai-sticky-actions{position:sticky;bottom:0;z-index:25;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:10px;padding:12px 14px;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:10px;box-shadow:0 -7px 28px rgba(20,31,50,.08);font-size:12px;color:#566174}
@media(max-width:1100px){.bank-ai-metrics{grid-template-columns:repeat(3,1fr)}.bank-ai-file-grid{grid-template-columns:1fr}.bank-ai-file-box{min-height:120px}}
@media(max-width:700px){.bank-ai-metrics{grid-template-columns:1fr 1fr}.bank-ai-action-row,.bank-ai-toolbar,.bank-ai-sticky-actions{align-items:stretch;flex-direction:column}.bank-ai-analyze-btn{width:100%}.bank-ai-review-card{max-height:none}.bank-ai-sticky-actions{position:static}.bank-ai-sticky-actions .inline{width:100%;flex-direction:column}.bank-ai-sticky-actions .btn{width:100%}.bank-ai-toolbar{position:static}.mobile-primary-nav{overflow-x:auto}.mobile-primary-nav>a{min-width:72px}}

/* CPool Banche AI v82 - Cli/For */
.bank-ai-upload-group{margin-top:8px}
.bank-ai-upload-group + .bank-ai-upload-group{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.bank-ai-upload-group-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 8px;color:#263750}
.bank-ai-upload-group-head b{font-size:13px}.bank-ai-upload-group-head span{font-size:11px;color:var(--muted);text-align:right}
.bank-ai-file-grid-two{grid-template-columns:repeat(2,minmax(0,1fr))}
.bank-ai-file-box-clifor{border-style:solid;background:#fbfcff}
.bank-ai-clifor-hint{margin-top:-4px;margin-bottom:14px}
.bank-ai-metric-clifor b{color:#335dba}
.bank-ai-clifor-cell{min-width:230px;max-width:300px}
.bank-ai-clifor-component{display:flex;flex-direction:column;gap:4px;margin-bottom:6px}
.bank-ai-clifor-input{width:130px!important;padding:6px!important;font-weight:850}
.bank-ai-clifor-component small{font-size:10px;color:#64748b;line-height:1.3}.bank-ai-clifor-component small.warn{color:#8b5a00;font-weight:700}
@media(max-width:1100px){.bank-ai-file-grid-two{grid-template-columns:1fr}.bank-ai-upload-group-head{align-items:flex-start;flex-direction:column}.bank-ai-upload-group-head span{text-align:left}}
