:root{
  --paper:#f2f5f9;--paper-2:#e6ebf2;--card:#ffffff;--ink:#0e1b2e;--ink-soft:#5c6b82;
  --line:#dde4ee;--line-strong:#b7c1d1;--green:#059669;--red:#c0392b;--gold:#047857;--amber:#c9a227;
  --band:#0b2a2e;--band-text:#e9f3f1;--band-soft:233,243,241;
  --shadow:0 1px 2px rgba(14,27,46,.05),0 4px 14px rgba(14,27,46,.07);
  /* Scala tipografica della shell di piattaforma. Nasce qui perche' i corpi
     erano scritti a mano regola per regola: 11px era la misura piu' frequente
     dell'intero foglio, e a quel corpo il grigio secondario — pur dentro lo
     standard 4,5:1 — si legge a fatica. Le schermate dei moduli (Plan, Invest,
     Cash) NON usano ancora questi token: hanno tabelle dense da ricontrollare
     una per una, si spostano in un passaggio successivo. */
  --fs-xs:12px;--fs-sm:13px;--fs-md:14px;--fs-lg:15px;
  /* 13/09 (chiesto da Matteo): un carattere solo, IBM Plex Sans. --serif resta
     come nome per non toccare le regole che lo usano, ma punta al sans. */
  --sans:'IBM Plex Sans',system-ui,sans-serif;--serif:var(--sans);
  --radius:6px;--radius-lg:10px;

  /* ===== DESIGN TOKENS (INF-014/B4) =====
     Formalizzano scale già di fatto in uso nel file (valori px sparsi nei
     selettori esistenti sopra/sotto), senza toccare i selettori esistenti:
     adozione opportunistica, solo su codice nuovo o ritoccato. */
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:32px;
  --text-xs:11px;--text-sm:12.5px;--text-base:13.5px;--text-md:15px;--text-lg:18px;--text-xl:22px;--text-2xl:27px;

  /* Scala z-index (O7, 21/08/2026). La vecchia scala 2000-3000 serviva a
     impilare schermate intere una sull'altra; da O4-O6 le schermate sono
     pannelli in-flow e non esiste più nulla da impilare. Restano tre
     livelli: la barra laterale fissa (100; hamburger 120, sfondo 99), i
     modali veri sopra il contenuto (import-pdf, visura, pannelli di
     import/ponte di Invest e Cash) e la schermata di autenticazione, che
     è anche l'editor del profilo e copre tutto. Chi aggiunge un modale
     usa --z-modal: due modali non si aprono mai insieme, e se capitasse
     decide l'ordine nel DOM. */
  --z-sidebar:100;--z-modal:200;--z-auth:300;

  /* ===== SHELL TOKENS (PF5, rivisto: palette "Inchiostro") =====
     Strato additivo per lo shell di piattaforma (Home): NON sostituisce i
     token "carta e inchiostro" sopra, che restano l'identità di
     Plan/Cash/Invest. Navy scuro + accento blu freddo, scelto con Matteo al
     posto sia dell'ambra originaria sia del bianco/verde Ramp-inspired
     della prima versione di PF5. --shell-mono è uno stack di sistema. */
  /* Tre superfici, non due. --shell-paper e' la pagina, --shell-paper-2 la
     superficie posata sopra (schede, campi, bottoni a riposo),
     --shell-paper-3 e' il gradino del passaggio del mouse, aggiunto il
     26/08. Prima il passaggio del mouse riusava --shell-paper-2: su sei
     regole tre partivano gia' da quel colore e quindi non cambiavano
     nulla, e due andavano al contrario (schiarivano il fondo scendendo a
     --shell-paper). Ora si sale sempre, di un gradino solo. */
  --shell-paper:#10161f;--shell-paper-2:#161d29;--shell-paper-3:#202d3f;
  /* Grigi secondari della shell, alzati il 26/08. Prima --shell-ink-faint
     stava a 4,74:1 su --shell-paper e --shell-ink-soft a 5,71:1: dentro lo
     standard AA (4,5:1) ma faticosi ai corpi piccoli di questa shell. Ora
     7,0:1 e 9,5:1 — 7:1 e la soglia AAA per il testo normale. La tinta non
     cambia: i tre canali sono stati scalati, non ricolorati. */
  --shell-ink:#f2f4f7;--shell-ink-soft:#b1bcd0;--shell-ink-faint:#95a2b5;
  /* Bordi alzati il 26/08. Stavano a 1,17:1 e 1,42:1 sul fondo pagina:
     e' li' che si perdeva la struttura, non nel testo. Misurati tre
     riferimenti scuri diffusi, il bordo normale sta sempre intorno a
     1,5:1 sul proprio fondo (GitHub 1,55 — VS Code 1,49 — Stripe 1,51):
     e' la banda in cui rientriamo ora. Le superfici invece restano
     appena accennate ovunque (GitHub 1,09, noi 1,07) e non si toccano. */
  --shell-line:#28374d;--shell-line-strong:#30435e;
  --shell-accent:#5b7cfa;--shell-accent-soft:#1a2333;
  /* Riempimento della pastiglia "modulo spento": e' il vecchio valore di
     --shell-line, promosso a token suo. Quella pastiglia usava il colore
     dei bordi come fondo, e alzando i bordi il testo dentro sarebbe
     sceso da 6,0:1 a 4,7:1. Un colore di linea non fa il riempimento. */
  --shell-muted-soft:#1c2432;
  --shell-good:#5cd696;--shell-good-soft:#173023;
  --shell-warn:#e0b13c;--shell-warn-soft:#2e2712;
  --shell-danger:#ff6b5e;
  --shell-mono:ui-monospace,'SF Mono','Cascadia Code',Consolas,monospace;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;font-family:var(--sans);color:var(--ink);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;background:linear-gradient(160deg,var(--paper) 0%,var(--paper-2) 100%);min-height:100vh;}

.screen{display:none;}
.screen.on{display:block;}

/* ===== NAV ===== */
/* ===== SIDEBAR LATERALE ===== */
.sidebar{
  background:var(--band);color:var(--band-text);
  display:flex;flex-direction:column;gap:0;
  position:fixed;top:0;left:0;bottom:0;width:230px;z-index:100;
  padding:18px 0;overflow:hidden;
  /* Il filo che separa la sidebar dal contenuto: i due fondi distano
     1,05:1, cioe' nulla, e la colonna non aveva un bordo. Sta a 1,48:1
     sul proprio fondo e 1,55:1 su quello del contenuto, la stessa banda
     di --shell-line. Non allarga la colonna: box-sizing e' border-box. */
  border-right:1px solid rgba(var(--band-soft),.14);
}
.nav-brand{display:flex;align-items:center;gap:10px;flex-shrink:0;padding:0 20px 18px;border-bottom:1px solid rgba(var(--band-soft),.14);}
.nav-logo-img{height:44px;width:auto;max-width:180px;object-fit:contain;border-radius:3px;}
.nav-logo-fallback{display:flex;align-items:center;gap:8px;}
/* 14/09: icona ritagliata (viewBox 32 32 88 80), alta quanto parola + claim */
.brand-icon-sm{width:32px;height:29px;flex-shrink:0;color:#e9f3f1;--px-acc:#2cc9b2;}
.brand-wordmark-sm{display:block;height:13px;width:auto;flex-shrink:0;color:var(--band-text);}
/* 13/09: il claim «Make your move.» sta sempre sotto la parola, allineato a destra */
.brand-stack-sm{display:flex;flex-direction:column;align-items:flex-end;gap:5px;min-width:0;}
.brand-claim-sm{display:block;height:10px;width:auto;flex-shrink:0;color:rgba(var(--band-soft),.78);--px-acc:#2cc9b2;}
/* 17/09 (chiesto da Matteo): in cima alla barra, dentro B-Plan, non c'è più
   «Progetto / nome» — lo ripeteva il titolo della pagina a due dita di
   distanza — ma il nome di chi sta lavorando, come in piattaforma. */
/* 17/09: il titolo della plancia progetto rinomina il progetto (prima lo
   faceva il blocco «Progetto» in barra laterale, ora tolto). */
.plan-dash-name{cursor:pointer;}
/* l'orizzonte (o l'esercizio) si accoda all'etichetta «Progetto» solo
   quando c'e': mentre i conti girano la casella e' vuota. */
#projectDashYears:not(:empty)::before{content:" · ";}
.plan-dash-name:hover{text-decoration:underline;text-decoration-style:dotted;text-underline-offset:6px;}
.nav-steps{display:flex;flex-direction:column;gap:4px;flex:1;overflow-y:auto;padding:16px 12px;}
.nav-steps::-webkit-scrollbar{width:6px;}
.nav-steps::-webkit-scrollbar-thumb{background:rgba(var(--band-soft),.2);border-radius:3px;}
.step-btn{
  /* 19/09 (chiesto da Matteo): tasti un po' più grandi e coerenti con la
     pagina — stesso corpo (14px) e stessi angoli (8px) dei .px-btn. */
  font-family:var(--sans);font-size:14px;font-weight:600;letter-spacing:.01em;
  background:transparent;border:none;color:rgba(var(--band-soft),.7);
  padding:7px 12px;border-radius:8px;cursor:pointer;transition:all .15s;
  white-space:nowrap;text-align:left;display:flex;align-items:center;gap:10px;width:100%;
  text-decoration:none;box-sizing:border-box;
}
.step-num{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:7px;background:rgba(var(--band-soft),.1);font-size:13px;flex-shrink:0;}
.step-btn:hover{color:var(--band-text);background:rgba(var(--band-soft),.1);}
.step-btn.active{background:#2cc9b2;color:#0b2a2e;}
.step-btn.active .step-num{background:rgba(11,42,46,.16);color:#0b2a2e;}
.step-btn.soon{opacity:.4;cursor:not-allowed;}
/* P5: header di sezione non cliccabili fra i .step-btn — puro markup+CSS,
   nessun id/data-go/hash toccato. Non intercettato da .step-btn[data-go]
   (_screenEnter) né da .closest(".step-btn") (toggleSidebar su mobile). */
.plan-step-group-label{
  font-size:12.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  /* .4 dava 3,50:1 sul fondo della sidebar: sotto il minimo di legge
     (4,5:1), su un corpo di 10px maiuscolo e spaziato. .64 da' 6,94:1,
     la stessa soglia scelta il 26/08 per i grigi del contenuto.
     Porta il prefisso plan- ma vive nella sidebar, che e' chrome di
     piattaforma: non e' una delle schermate fitte lasciate indietro. */
  /* 13/09 (chiesto da Matteo): più grandi dei passi sotto, e nell'acqua
     del logo (#2cc9b2 sul fondo scuro, 8:1). */
  color:#2cc9b2;padding:16px 14px 6px;
}
.plan-step-group-label:first-child{padding-top:2px;}
/* ===== O2: SIDEBAR CONTESTUALE (docs/piano-shell-unica-overlay.md) =====
   Una sola sidebar, contenuto scelto da body[data-shell] (O1). I default
   sono fail-safe: se l'attributo mancasse o fosse sbagliato, la sidebar
   resta identica a oggi — passi di Plan visibili, nav di piattaforma
   nascosta. La nav nuova si accende solo su un valore esplicito. */
.nav-org{display:none;flex-shrink:0;padding:12px 12px 10px;border-bottom:1px solid rgba(var(--band-soft),.14);}
.nav-org-label{display:block;font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;color:#2cc9b2;font-weight:700;padding:0 4px 6px;}
.nav-org-btn{
  font-family:var(--sans);font-size:13px;font-weight:600;color:var(--band-text);
  background:rgba(var(--band-soft),.07);border:1px solid rgba(var(--band-soft),.14);
  border-radius:8px;padding:9px 11px;width:100%;cursor:pointer;
  display:flex;align-items:center;gap:8px;transition:background .15s;
}
.nav-org-btn:hover{background:rgba(var(--band-soft),.14);}
.nav-org-name{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.nav-org-caret{font-size:var(--fs-xs);color:rgba(var(--band-soft),.6);flex-shrink:0;}
.nav-org-static{font-size:13px;font-weight:600;color:var(--band-text);padding:4px 4px 2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* 11/09: in cima alla sidebar il nome dell'utente, poi l'organizzazione */
.nav-org-user{margin-bottom:10px;}
/* 13/09: nome utente e organizzazione cliccabili (profilo, gestione org) */
.nav-org-link{display:block;color:var(--band-text);text-decoration:none;border-radius:8px;cursor:pointer;transition:background .15s;}
.nav-org-link:hover{background:rgba(var(--band-soft),.1);}
.nav-org-link.on{background:rgba(var(--band-soft),.18);}
.nav-org-row{display:flex;align-items:center;gap:4px;}
.nav-org-row .nav-org-link{flex:1;min-width:0;}
.nav-org-caret-btn{flex-shrink:0;background:transparent;border:0;border-radius:3px;color:rgba(var(--band-soft),.7);font-size:var(--fs-xs);padding:6px 8px;cursor:pointer;}
.nav-org-caret-btn:hover{background:rgba(var(--band-soft),.14);color:var(--band-text);}
.nav-org-list{display:none;flex-direction:column;gap:1px;margin-top:4px;}
.nav-org.open .nav-org-list{display:flex;}
.nav-org-item{
  font-family:var(--sans);font-size:12.5px;font-weight:600;text-align:left;
  background:transparent;border:none;color:rgba(var(--band-soft),.7);
  padding:8px 11px;border-radius:8px;cursor:pointer;transition:all .15s;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.nav-org-item:hover{color:var(--band-text);background:rgba(var(--band-soft),.1);}
.nav-org-item.on{color:var(--band-text);background:rgba(var(--band-soft),.18);}
.nav-platform{display:none;flex-direction:column;gap:4px;flex:1;overflow-y:auto;padding:16px 12px;}
.nav-platform::-webkit-scrollbar{width:6px;}
.nav-platform::-webkit-scrollbar-thumb{background:rgba(var(--band-soft),.2);border-radius:3px;}
.nav-plat-btn.disabled{opacity:.4;cursor:not-allowed;}
/* O7d: briciola di pane per le viste figlio di Invest/Cash. Con l'editor di
   un'operazione o di un piano aperto la voce del modulo passa da "attiva" a
   "genitore" (niente sfondo, solo il testo pieno) e sotto compare la riga
   figlio col nome, evidenziata come la voce attiva: è lei a dire DOVE sei.
   La riga è rientrata e agganciata a un filo verticale, come in un albero. */
.nav-plat-btn.parent{color:var(--band-text);}
.nav-plat-child{
  margin-left:24px;width:calc(100% - 24px);padding:8px 10px;font-size:12.5px;
  border-left:2px solid rgba(var(--band-soft),.25);border-radius:0 8px 8px 0;
  cursor:default;min-width:0;
}
.nav-plat-child-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
/* 19/09 (chiesto da Matteo): le voci dei moduli portano il colore che il
   modulo usa nelle sue pagine — acqua B-Plan, arancio Invest, verde Cash
   (lo stesso --mc di .px-page.is-*). Icona nel riquadro tinto, nome nel
   colore del modulo, voce aperta piena come la scheda scelta dentro. */
.nav-mod-plan{--mc:#2cc9b2;--mc-rgb:44,201,178;}
.nav-mod-invest{--mc:#ff7a3d;--mc-rgb:255,122,61;}
.nav-mod-cash{--mc:#5cd696;--mc-rgb:92,214,150;}
.nav-plat-btn.nav-mod{color:var(--mc);}
.nav-plat-btn.nav-mod .step-num{background:rgba(var(--mc-rgb),.16);box-shadow:inset 0 0 0 1px rgba(var(--mc-rgb),.4);}
.nav-plat-btn.nav-mod:hover{color:var(--mc);background:rgba(var(--mc-rgb),.14);}
.nav-plat-btn.nav-mod.active{background:var(--mc);color:#0b2a2e;}
.nav-plat-btn.nav-mod.active .step-num{background:rgba(11,42,46,.16);box-shadow:none;}
.nav-plat-btn.nav-mod.parent{color:var(--mc);background:rgba(var(--mc-rgb),.12);}
.nav-plat-child.nav-mod{border-left-color:rgba(var(--mc-rgb),.55);}
.nav-plat-btn.nav-mod.disabled{color:rgba(var(--band-soft),.7);}
.nav-plat-btn.nav-mod.disabled .step-num{background:rgba(var(--band-soft),.1);box-shadow:none;}
body[data-shell="platform"] .nav-org{display:block;}
/* 17/09: anche dentro B-Plan la barra si apre col nome dell'utente. La
   riga dell'organizzazione la salta (shell-nav.js): cambiare contesto con
   un progetto aperto non è una cosa da fare di sfuggita. */
body[data-shell="plan"] .nav-org{display:block;}
/* finche' il nome dell'utente non e' arrivato dal server la scatola e'
   vuota: senza questa riga resterebbe una fascia con il suo bordo. */
body[data-shell] .nav-org:empty{display:none;}
body[data-shell="platform"] .nav-platform{display:flex;}
/* Le `.saved-badge` sono il riscontro del salvataggio automatico di Plan
   ("✓ Salvato" / "⚠ Salvataggio non riuscito"): stanno a opacity:0 e si
   accendono al momento, quindi occupano 42px di sidebar anche quando sono
   invisibili. Nelle schermate di piattaforma non si accendono mai — Plan non
   è aperto — ed erano l'unica cosa fra l'ultima voce di menu e il piè di
   pagina: una fascia vuota che su uno schermo basso (~600px di viewport, un
   portatile a 150%) mangiava proprio lo spazio che mancava alle voci di
   "Gestione", lasciandole tagliate a metà. Nascoste come i comandi di Plan
   qui accanto, per la stessa ragione: appartengono all'altro stato di shell. */
body[data-shell="platform"] .nav-steps,
body[data-shell="platform"] .saved-badge,
body[data-shell="platform"] .nav-actions,
body[data-shell="platform"] .nav-home-btn{display:none;}
.nav-right{display:flex;flex-direction:column;gap:2px;flex-shrink:0;padding:6px 12px 10px;border-top:1px solid rgba(var(--band-soft),.14);}
.nav-actions{display:flex;flex-direction:column;gap:1px;}
/* 14/09 (chiesto da Matteo): stesso carattere delle voci sopra (.step-btn: 14px, 600, .7) */
.nav-act-btn{color:rgba(var(--band-soft),.7)!important;font-size:14px;padding:8px 12px;justify-content:flex-start;width:100%;border-radius:8px;background:transparent;border-color:transparent;}
.nav-act-btn:hover{background:rgba(var(--band-soft),.1);box-shadow:none;color:var(--band-text)!important;}
.btn.mini.nav-act-btn{font-size:14px;}
/* i due riscontri (ok/errore) non sono mai accesi insieme: impilati sulla
   stessa cella grid occupano l'altezza di uno solo invece di due fasce */
.saved-badges{display:grid;flex-shrink:0;}
.saved-badges .saved-badge{grid-area:1/1;}
.saved-badge{font-size:11px;color:#7fc4a0;opacity:0;transition:opacity .3s;font-weight:600;text-align:center;padding:2px 0;}
.saved-badge.on{opacity:1;}
.saved-badge-error{color:rgba(217,140,140,.95);}
.nav-exit-wrap{margin-top:4px;padding-top:4px;border-top:1px solid rgba(var(--band-soft),.14);}
.nav-exit-btn{color:rgba(217,140,140,.85)!important;}
.nav-exit-btn:hover{background:rgba(217,140,140,.12)!important;color:rgba(217,140,140,1)!important;}
.sidebar-copyright{font-size:10px;line-height:1.4;color:#fff;opacity:.62;text-align:center;padding:4px 6px 0;flex-shrink:0;}
.copy-l1{white-space:nowrap;}

/* pulsante hamburger (solo mobile) e sfondo */
.sidebar-toggle{display:none;position:fixed;top:12px;left:12px;z-index:120;width:42px;height:42px;border-radius:3px;background:var(--band);color:var(--band-text);border:none;font-size:20px;cursor:pointer;box-shadow:var(--shadow);}
.sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:99;}

/* il contenuto si sposta a destra della sidebar */
.screen{margin-left:230px;}

@media(max-width:900px){
  .sidebar{transform:translateX(-100%);transition:transform .25s;width:250px;box-shadow:0 0 40px rgba(0,0,0,.3);}
  .sidebar.open{transform:translateX(0);}
  .sidebar-toggle{display:block;}
  .sidebar.open ~ .sidebar-backdrop{display:block;}
  .screen{margin-left:0;padding-top:56px;}
}
/* 13/09 (chiesto da Matteo): la barra laterale si stringe a sole icone
   (« Chiudi menu / » Apri menu in fondo alla barra, toggleSidebarCompact in
   nav.js, ricordato nel browser). Solo da 901px in su: sotto resta il menu
   ☰ di sempre. I nomi delle voci restano nel markup — font-size:0 li spegne
   senza toccare i passi di index.html — e al passaggio li dice il title.
   Le iniziali (.nav-ini) sostituiscono il nome utente e l'organizzazione. */
.nav-ini{display:none;}
#sidebar .nav-compact-btn{display:none;}
@media(min-width:901px){
  #sidebar .nav-compact-btn{display:flex;}
  .sidebar{transition:width .2s,box-shadow .2s;}
  body.nav-compact:not(.nav-peek) .sidebar{width:56px;}
  body.nav-compact .screen,
  body.nav-compact .pf-screen{margin-left:56px;}
  /* 19/09 (chiesto da Matteo): stretta, al passaggio del mouse si riapre
     SOPRA il contenuto (che resta a 56px, niente salti) e all'uscita si
     richiude. body.nav-peek lo mette nav.js, con un piccolo ritardo. */
  body.nav-compact.nav-peek .sidebar{box-shadow:10px 0 34px rgba(0,0,0,.45);}
  body.nav-compact:not(.nav-peek) .nav-brand{padding:0 0 18px;justify-content:center;}
  body.nav-compact:not(.nav-peek) .nav-logo-img{max-width:40px;}
  body.nav-compact:not(.nav-peek) .brand-wordmark-sm,
  body.nav-compact:not(.nav-peek) .brand-stack-sm,
  body.nav-compact:not(.nav-peek) .nav-org-label,
  body.nav-compact:not(.nav-peek) .nav-org-txt,
  body.nav-compact:not(.nav-peek) .nav-org-name,
  body.nav-compact:not(.nav-peek) .nav-org-caret,
  body.nav-compact:not(.nav-peek) .nav-org-caret-btn,
  body.nav-compact:not(.nav-peek) .nav-org-list,
  body.nav-compact:not(.nav-peek) .nav-org.open .nav-org-list,
  body.nav-compact:not(.nav-peek) .nav-plat-child,
  body.nav-compact:not(.nav-peek) .nav-lbl,
  body.nav-compact:not(.nav-peek) .sidebar-copyright,
  body.nav-compact:not(.nav-peek) .plan-step-group-label:first-child{display:none;}
  body.nav-compact:not(.nav-peek) .nav-org{padding:12px 6px 10px;}
  body.nav-compact:not(.nav-peek) .nav-org-link,
  body.nav-compact:not(.nav-peek) .nav-org-static,
  body.nav-compact:not(.nav-peek) .nav-org-btn{display:flex;justify-content:center;padding:4px 0;background:transparent;border-color:transparent;}
  body.nav-compact:not(.nav-peek) .nav-org-user{margin-bottom:6px;}
  body.nav-compact:not(.nav-peek) .nav-ini{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:rgba(var(--band-soft),.16);color:var(--band-text);font-size:12px;font-weight:700;letter-spacing:.02em;}
  body.nav-compact:not(.nav-peek) .nav-ini-org{border-radius:6px;}
  body.nav-compact:not(.nav-peek) .nav-org-link:hover .nav-ini{background:rgba(var(--band-soft),.28);}
  body.nav-compact:not(.nav-peek) .nav-org-link.on .nav-ini{background:#2cc9b2;color:#0b2a2e;}
  body.nav-compact:not(.nav-peek) .nav-steps,
  body.nav-compact:not(.nav-peek) .nav-platform{padding:12px 6px;}
  body.nav-compact:not(.nav-peek) .step-btn{font-size:0;gap:0;padding:6px 0;justify-content:center;position:relative;}
  body.nav-compact:not(.nav-peek) .step-num{width:30px;height:30px;font-size:14px;}
  body.nav-compact:not(.nav-peek) .ver-badge{position:absolute;top:1px;right:2px;margin-left:0;min-width:14px;height:14px;padding:0 3px;font-size:9px;}
  body.nav-compact:not(.nav-peek) .nav-plat-btn.parent{background:#2cc9b2;color:#0b2a2e;}
  body.nav-compact:not(.nav-peek) .nav-plat-btn.nav-mod.parent{background:var(--mc);}
  body.nav-compact:not(.nav-peek) .plan-step-group-label{font-size:0;padding:0;height:1px;flex-shrink:0;margin:7px 8px;background:rgba(var(--band-soft),.22);}
  body.nav-compact:not(.nav-peek) .nav-right{padding:6px 6px 10px;}
  body.nav-compact:not(.nav-peek) .nav-act-btn{justify-content:center;padding:7px 0;font-size:15px;}
  body.nav-compact:not(.nav-peek) .btn.mini.nav-act-btn{font-size:15px;}
}

/* ===== COMMON ===== */
.wrap,.container{max-width:1320px;margin:0 auto;padding:28px 24px;}
.eyebrow,.page-eyebrow{font-size:10.5px;letter-spacing:.28em;text-transform:uppercase;color:var(--gold);font-weight:600;}
.page-title{font-family:var(--serif);font-size:clamp(21px,2.6vw,29px);font-weight:700;margin:6px 0 6px;letter-spacing:-.02em;}
.page-sub{font-size:13.5px;color:var(--ink-soft);max-width:760px;line-height:1.6;margin:0 0 24px;}
.page-nav{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:center;margin-top:28px;padding-top:20px;border-top:1px solid var(--line);}
.field{display:flex;flex-direction:column;gap:5px;margin-bottom:16px;}
.field label{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);font-weight:600;}
.field input,.field select,.field textarea{
  font-family:var(--sans);font-size:15px;color:var(--ink);
  background:var(--card);border:1px solid var(--line);border-radius:3px;
  padding:9px 12px;outline:none;transition:border-color .15s,box-shadow .15s;
}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(4,120,87,.15);}
.field select{
  -webkit-appearance:none;appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235b574c' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;padding-right:32px;
}
.field .hint{font-size:11px;color:var(--ink-soft);font-weight:400;letter-spacing:0;text-transform:none;}
.btn{
  font-family:var(--sans);font-size:13px;font-weight:600;letter-spacing:.01em;
  border:1px solid var(--line-strong);background:var(--card);color:var(--ink);
  padding:9px 18px;border-radius:3px;cursor:pointer;
  transition:transform .08s,background .15s,border-color .15s,box-shadow .15s;
  display:inline-flex;align-items:center;gap:7px;
}
.btn:hover{background:#fff;border-color:var(--gold);box-shadow:var(--shadow);}
.btn:active{transform:translateY(1px);}
.btn.primary{background:#0b2a2e;color:#e9f3f1;border-color:#0b2a2e;}
.btn.primary:hover{background:#15434a;border-color:#15434a;}
.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-soft);}
.btn.ghost:hover{color:var(--ink);box-shadow:none;}
.btn svg{width:15px;height:15px;flex-shrink:0;}
.btn-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:28px;}
.spacer{flex:1;}

/* ===== SETUP ===== */
.setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start;}
.setup-section{background:var(--card);border:1px solid var(--line);border-radius:3px;padding:24px;box-shadow:var(--shadow);}
.setup-section h3{font-family:var(--serif);font-size:16px;font-weight:700;letter-spacing:-.01em;margin:0 0 18px;border-bottom:1px solid var(--line);padding-bottom:12px;display:flex;align-items:center;justify-content:space-between;}
/* minmax(0,1fr) + min-width:0: una tendina con voci lunghe (Provincia «SU — Sud
   Sardegna», forma giuridica) o una casella con la sua larghezza intrinseca non
   allargano la colonna oltre il riquadro (12/09: CAP e forma giuridica uscivano
   dalla card «Modifica società», 560px). */
.field-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.field-row.three{grid-template-columns:repeat(3,minmax(0,1fr));}
.field-row.four{grid-template-columns:repeat(4,minmax(0,1fr));}
.field-row .field{margin-bottom:16px;min-width:0;}
.field-row .field>input:not([type=checkbox]):not([type=radio]),.field-row .field>select,.field-row .field>textarea{width:100%;min-width:0;}
.field-row .field .hint{overflow-wrap:anywhere;}
@media(max-width:700px){.field-row.three,.field-row.four{grid-template-columns:repeat(2,minmax(0,1fr));}}
.logo-area{
  width:72px;height:72px;border-radius:3px;border:1.5px dashed var(--line-strong);
  display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;
  flex-shrink:0;transition:border-color .15s,background .15s;background:var(--card);user-select:none;
}
.logo-area:hover{border-color:var(--gold);background:#eafaf3;}
.logo-area.has-logo{border:none;}
.logo-area img{width:100%;height:100%;object-fit:contain;}
.logo-hint{font-size:9.5px;color:var(--ink-soft);font-weight:600;text-align:center;line-height:1.5;padding:4px;}
.logo-col{display:flex;flex-direction:column;align-items:center;gap:6px;flex-shrink:0;}
.logo-remove-btn{font-size:10.5px;padding:3px 8px;color:var(--red)!important;}
.seg{display:inline-flex;background:var(--paper-2);border:1px solid var(--line);border-radius:3px;padding:3px;gap:3px;}
.seg button{font-family:var(--sans);font-size:12.5px;font-weight:600;border:none;background:transparent;color:var(--ink-soft);padding:7px 16px;border-radius:3px;cursor:pointer;transition:all .15s;}
.seg button.on{background:#0b2a2e;color:#e9f3f1;}
.cond-block{margin-top:6px;border-top:1px dashed var(--line);padding-top:18px;}
.cond-block.hide{display:none;}
.mini-note{font-size:11.5px;color:var(--ink-soft);line-height:1.55;background:var(--paper-2);border:1px solid var(--line);border-radius:3px;padding:10px 12px;margin-bottom:16px;}
@media(max-width:860px){.setup-grid{grid-template-columns:1fr;}}

/* ===== INPUT (DRIVERS) ===== */
.input-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:14px;}
.year-tabs{display:flex;gap:5px;flex-wrap:wrap;row-gap:4px;}
.ytab{font-family:var(--sans);font-size:11.5px;font-weight:600;letter-spacing:.01em;background:var(--paper-2);border:1px solid var(--line);color:var(--ink-soft);padding:5px 12px;border-radius:3px;cursor:pointer;transition:all .15s;white-space:nowrap;}
.ytab:hover{border-color:var(--gold);color:var(--ink);}
.ytab.active{background:#0b2a2e;color:#e9f3f1;border-color:#0b2a2e;}
.table-wrap{overflow:auto;max-height:calc(100vh - 220px);background:var(--card);border:1px solid var(--line);border-radius:3px;box-shadow:var(--shadow);}

/* ===== TABLE ===== */
table{border-collapse:separate;border-spacing:0;width:100%;font-size:13px;min-width:1120px;}
th,td{padding:0;}
thead th{
  position:sticky;top:0;z-index:5;background:#0b2a2e;color:#e9f3f1;
  font-weight:700;font-size:12px;letter-spacing:.04em;text-transform:uppercase;
  padding:11px 10px 10px;text-align:center;white-space:nowrap;vertical-align:middle;
}
thead th.tot-col{color:#e9c97a;}
thead th .yr{display:block;font-size:9px;font-weight:400;letter-spacing:0;text-transform:none;opacity:.55;line-height:1;margin-top:2px;min-height:9px;}
thead th.year-break{border-left:2px solid rgba(255,255,255,.2);}
th.voce-col,td.voce-col{position:sticky;left:0;z-index:4;text-align:left;padding:6px 14px;white-space:nowrap;min-width:300px;max-width:300px;}
thead th.voce-col{z-index:6;text-align:left;}
tbody td{border-bottom:1px solid var(--line);text-align:right;}
tbody td.voce-col{background:var(--card);font-weight:500;height:40px;}
tbody td.numcell{padding:0;}
tbody td.tot-col{padding:0 12px;font-weight:600;background:#f3eede;}
.cell-input{width:100%;height:40px;border:none;background:transparent;text-align:right;font-family:var(--sans);font-size:13px;color:var(--ink);padding:0 12px;outline:none;font-variant-numeric:tabular-nums;transition:background .12s;}
.cell-input:focus{background:#e6f6f0;box-shadow:inset 0 0 0 2px rgba(4,120,87,.45);}
.cell-input::placeholder{color:#cfc7b4;}

.sec-header-row td{background:#0b2a2e;color:#e9f3f1;font-family:var(--serif);font-weight:600;font-size:12px;letter-spacing:.08em;text-transform:uppercase;height:34px;border-top:3px solid #111;border-bottom:1px solid #111;}
.sec-header-row td.voce-col{background:#0b2a2e;position:sticky;left:0;z-index:4;padding:0 14px;}
.subtot-row td{background:#efe9da;border-top:1px solid var(--line-strong);font-weight:700;padding:0 12px;height:36px;line-height:36px;}
.subtot-row td.voce-col{background:#efe9da;font-weight:700;text-transform:uppercase;font-size:11px;letter-spacing:.06em;}

.del-row-btn{float:right;opacity:0;background:none;border:none;cursor:pointer;color:var(--red);font-size:15px;padding:0 2px;line-height:1;margin-left:6px;transition:opacity .15s;}
tbody tr:hover .del-row-btn{opacity:.5;}
tbody tr:hover .del-row-btn:hover{opacity:1;}
.row-label-input{border:none;background:transparent;font-family:var(--sans);font-size:13px;font-weight:500;color:var(--ink);width:185px;outline:none;padding:2px 4px;border-radius:4px;}
.row-label-input:focus{background:#e6f6f0;box-shadow:inset 0 0 0 1.5px rgba(4,120,87,.4);}
.vat-select{font-family:var(--sans);font-size:10px;font-weight:600;color:var(--gold);background:transparent;border:1px solid rgba(4,120,87,.35);border-radius:4px;padding:1px 14px 1px 5px;margin-left:6px;cursor:pointer;vertical-align:middle;-webkit-appearance:none;appearance:none;outline:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 24 24' fill='none' stroke='%23047857' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 3px center;}
.add-row-tr td{background:var(--paper);border-bottom:1px solid var(--line);padding:5px 14px;}
.add-row-tr td.voce-col{background:var(--paper);}
.add-row-btn{font-family:var(--sans);font-size:11.5px;color:var(--gold);font-weight:600;background:none;border:1px dashed rgba(4,120,87,.4);border-radius:3px;padding:4px 12px;cursor:pointer;transition:all .15s;}
.add-row-btn:hover{border-color:var(--gold);background:rgba(4,120,87,.06);}

/* ===== STATEMENT (CE) ===== */
.toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:18px;}
.stmt-card{background:var(--card);border:1px solid var(--line);border-radius:3px;box-shadow:var(--shadow);padding:8px 0 0;margin-bottom:24px;overflow:hidden;}
.stmt-table{width:100%;border-collapse:collapse;font-size:14px;min-width:unset;}
.stmt-table th{background:#0b2a2e;color:#e9f3f1;padding:11px 16px;text-align:right;font-size:12px;letter-spacing:.05em;text-transform:uppercase;font-weight:600;position:sticky;top:0;z-index:5;}
.stmt-table th:first-child{text-align:left;}
.stmt-table th.tot{color:#e9c97a;}
.stmt-table td{padding:8px 16px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap;}
.stmt-table td:first-child{text-align:left;}
.stmt-table tr.lvl-item td:first-child{padding-left:30px;color:var(--ink-soft);font-weight:400;}
.stmt-table tr.lvl-item td{font-weight:400;color:var(--ink-soft);}
.stmt-table tr.lvl-group td:first-child{font-weight:600;}
.stmt-table tr.lvl-sub td{background:#f6f0e0;font-weight:700;border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong);}
.stmt-table tr.lvl-sub td:first-child{font-family:var(--serif);}
.stmt-table tr.lvl-result td{background:#e5dfcc;font-weight:700;border-top:2px solid var(--line-strong);border-bottom:2px solid var(--line-strong);}
.stmt-table tr.lvl-result td:first-child{font-family:var(--serif);font-size:14px;}
.stmt-table tr.lvl-final td{background:#0b2a2e;color:#e9f3f1;font-weight:700;}
.stmt-table tr.lvl-final td:first-child{font-family:var(--serif);font-size:14.5px;}
.stmt-table tr.lvl-final td.tot{color:#e9c97a;}
.stmt-table tr.spacer-row td{height:8px;background:transparent;border:none;padding:0;}
.stmt-table .neg{color:var(--red);}
.stmt-table tr.lvl-final .neg{color:#f0a99b;}
.stmt-table .muted{color:#b8b09c;}
.tag{display:inline-block;font-size:9px;font-weight:700;letter-spacing:.04em;color:var(--ink-soft);background:var(--paper-2);border:1px solid var(--line);border-radius:4px;padding:1px 6px;margin-left:8px;vertical-align:middle;text-transform:uppercase;}

.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:24px;}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:3px;padding:16px 18px;box-shadow:var(--shadow);position:relative;overflow:hidden;}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--gold);opacity:.55;}
.kpi.pos::before{background:var(--green);}
.kpi.neg::before{background:var(--red);}
.kpi .k-label{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-weight:600;}
.kpi .k-value{font-family:var(--serif);font-size:22px;font-weight:600;margin-top:8px;line-height:1;}
.kpi .k-sub{font-size:11px;color:var(--ink-soft);margin-top:6px;}
.kpi.pos .k-value{color:var(--green);}
.kpi.neg .k-value{color:var(--red);}

/* famiglia KPI unificata Plan (statement + driver strip) */
.plan-kpi-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:16px;}
.plan-kpi{background:var(--card);border:1px solid var(--line);border-radius:3px;padding:16px 18px;box-shadow:var(--shadow);position:relative;overflow:hidden;}
.plan-kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--gold);opacity:.55;}
.plan-kpi.pos::before{background:var(--green);}
.plan-kpi.neg::before{background:var(--red);}
.plan-kpi .k-label{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-weight:600;}
.plan-kpi .k-value{font-family:var(--serif);font-size:20px;font-weight:600;margin-top:8px;line-height:1;}
.plan-kpi .k-sub{font-size:11px;color:var(--ink-soft);margin-top:6px;}
.plan-kpi.pos .k-value{color:var(--green);}
.plan-kpi.neg .k-value{color:var(--red);}

/* card grafico di andamento nei prospetti CE/SP/RF (P3) */
.plan-chart-card{background:var(--card);border:1px solid var(--line);border-radius:3px;box-shadow:var(--shadow);padding:14px 18px 12px;margin-bottom:16px;}
.plan-chart-caption{font-size:12px;color:var(--ink-soft);margin:0 0 6px;}

/* mini-grafico a linea nelle card KPI (dashboard di apertura progetto, P2) */
.plan-dash-spark{width:100%;height:28px;margin-top:8px;display:block;color:var(--gold);}
.plan-kpi.pos .plan-dash-spark{color:var(--green);}
.plan-kpi.neg .plan-dash-spark{color:var(--red);}

/* sintesi esecutiva con badge nei prospetti CE/SP/RF (P4), sul modello di .inv-execsum */
.plan-execsum{display:flex;gap:14px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-left-width:5px;border-radius:3px;padding:14px 16px;margin-bottom:16px;}
.plan-execsum.ok{border-left-color:var(--green);}
.plan-execsum.warn{border-left-color:var(--amber);}
.plan-execsum.bad{border-left-color:var(--red);}
.plan-execsum-badge{flex:0 0 auto;font-size:11px;font-weight:800;letter-spacing:.08em;padding:5px 10px;border-radius:999px;color:#fff;white-space:nowrap;margin-top:2px;}
.plan-execsum.ok .plan-execsum-badge{background:var(--green);}
.plan-execsum.warn .plan-execsum-badge{background:var(--amber);}
.plan-execsum.bad .plan-execsum-badge{background:var(--red);}
.plan-execsum-text{font-size:14px;line-height:1.5;color:var(--ink);}
.plan-execsum-notes{font-size:12.5px;color:var(--ink-soft);margin-top:4px;}

/* PLAN-01: banda "DATI INCOMPLETI" iniettata in testa alle sezioni Plan
   quando un motore è in avaria (src/modules/plan-health.js). Riusa il
   look di .plan-execsum.bad; il dettaglio tecnico dell'errore resta
   leggibile ma sottotono, serve solo per la segnalazione. */
.plan-health{margin-bottom:4px;}
.plan-health .plan-execsum{border-left-width:5px;}
.plan-health-detail{color:var(--ink-soft);opacity:.75;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;}
.plan-health-actions{margin-top:8px;}
.plan-health-retry{cursor:pointer;}
/* PLAN-05: sola lettura coerente (src/modules/plan-readonly.js).
   La banda usa il look .plan-execsum.warn e sta sempre in cima alla
   schermata, prima di "DATI INCOMPLETI": "non stai salvando" è
   l'informazione che cambia cosa fai adesso.

   I campi spenti NON devono diventare il grigio di sistema: un profilo
   di sola lettura esiste per leggere quei numeri. Si tolgono cursore e
   possibilità di modifica, si tiene il colore del testo
   (-webkit-text-fill-color serve a WebKit, che ignora "color" sui
   controlli disabilitati). */
.plan-ro-banner{margin-bottom:4px;}
.plan-ro-banner .plan-execsum{border-left-width:5px;}
body.plan-ro input:disabled,
body.plan-ro select:disabled,
body.plan-ro textarea:disabled{
  color:var(--ink);
  -webkit-text-fill-color:var(--ink);
  opacity:1;
  cursor:default;
}
body.plan-ro button:disabled{opacity:.4;cursor:not-allowed;}
/* elementi cliccabili che non sono controlli di form: "disabled" non
   esiste su di loro, si toglie il clic */
.plan-ro-inert{pointer-events:none;opacity:.4;}


/* griglia di link rapidi (dashboard di apertura progetto, P2) */
/* Qui stava `.dash-links-grid`, la griglia "🧭 Vai a…" della dashboard di
   apertura progetto: unico consumatore, sparito in O6 perché ripeteva sei voci
   della sidebar di Plan, che ora è visibile accanto alla dashboard. */

/* select che sostituisce l'etichetta della KPI: permette di scegliere quale dato mostrare nella card */
select.kpi-pick{display:block;width:100%;font-family:var(--sans);font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-soft);font-weight:600;background:transparent;border:none;
  padding:0;margin:0;cursor:pointer;appearance:auto;}
select.kpi-pick:focus{outline:2px solid var(--gold);outline-offset:2px;border-radius:2px;}

.empty{text-align:center;color:var(--ink-soft);padding:60px 20px;font-size:14px;}
footer.app-footer{margin-top:8px;font-size:11px;color:var(--ink-soft);text-align:center;letter-spacing:.02em;padding:24px;}
.note{margin-top:20px;font-size:12px;color:var(--ink-soft);line-height:1.65;border-left:3px solid var(--line-strong);padding:4px 0 4px 14px;max-width:900px;}
.note strong{color:var(--ink);}

/* ===== STATO PATRIMONIALE ===== */
.sp-controls{display:grid;grid-template-columns:300px 1fr;gap:20px;align-items:start;}
.sp-side{padding:20px;}
.sp-side h3{font-family:var(--serif);font-size:15px;font-weight:600;margin:0 0 14px;border-bottom:1px solid var(--line);padding-bottom:10px;display:flex;align-items:center;justify-content:space-between;gap:8px;}
.sp-side-hint{font-size:11px;color:var(--ink-soft);line-height:1.5;margin:12px 0 0;}
@media(max-width:860px){.sp-controls{grid-template-columns:1fr;}}
.cespiti-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:unset;}
.cespiti-table th{background:#0b2a2e;color:#e9f3f1;padding:8px 10px;text-align:left;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;position:static;border-bottom:1px solid var(--line);}
.cespiti-table td{padding:5px 8px;border-bottom:1px solid var(--line);vertical-align:middle;}
.cespiti-table td.cesp-quota{text-align:right;font-weight:600;color:var(--ink-soft);white-space:nowrap;}
.cespiti-empty{text-align:center;color:var(--ink-soft);font-style:italic;padding:18px 10px!important;}
.cesp-in{font-family:var(--sans);font-size:13px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:3px;padding:6px 8px;outline:none;width:100%;transition:border-color .15s,box-shadow .15s;}
.cesp-in.num{text-align:right;font-variant-numeric:tabular-nums;}
.cesp-in:focus{border-color:var(--gold);box-shadow:0 0 0 2px rgba(4,120,87,.15);}
select.cesp-in{-webkit-appearance:none;appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%235b574c' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;padding-right:26px;}
.seg-btn-toggle{font-family:var(--sans);font-size:12.5px;font-weight:600;border:1px solid var(--line-strong);background:var(--card);color:var(--ink-soft);padding:8px 14px;border-radius:3px;cursor:pointer;transition:all .15s;}
.seg-btn-toggle:hover{border-color:var(--gold);color:var(--ink);}
.seg-btn-toggle.on{background:var(--gold);color:#fff;border-color:var(--gold);}
.numcell-sp{padding:0!important;}
.sp-ov-input{width:100%;min-width:90px;height:34px;border:none;background:#e6f6f0;text-align:right;font-family:var(--sans);font-size:13px;color:var(--ink);padding:0 12px;outline:none;font-variant-numeric:tabular-nums;box-shadow:inset 0 0 0 1px rgba(4,120,87,.35);border-radius:4px;}
.sp-ov-input:focus{box-shadow:inset 0 0 0 2px rgba(4,120,87,.55);}
.sp-ov-input::placeholder{color:#c9bfa6;font-style:italic;}

/* ===== CE: righe di dettaglio (Mostra dettaglio) ===== */
.stmt-table tr.lvl-detail td{font-size:13px;color:var(--ink-soft);font-weight:400;background:#fcfaf4;border-bottom:1px solid #efe9da;}
.stmt-table tr.lvl-detail td:first-child{padding-left:46px;font-style:italic;}
.stmt-table tr.lvl-detail td:first-child::before{content:"› ";color:var(--gold);font-style:normal;}

/* ===== DRIVER: riga-meta con selettore destinazione CE ===== */
td.voce-col{vertical-align:middle;}
.row-meta{display:flex;align-items:center;gap:6px;margin-top:4px;flex-wrap:wrap;max-width:100%;}
.row-meta-lbl{font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);font-weight:700;flex-shrink:0;}
.dest-select{
  font-family:var(--sans);font-size:10.5px;font-weight:600;color:var(--ink);
  background:#fff;border:1px solid var(--line-strong);border-radius:4px;
  padding:2px 18px 2px 6px;cursor:pointer;max-width:150px;
  -webkit-appearance:none;appearance:none;outline:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 24 24' fill='none' stroke='%235b574c' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 4px center;
  text-overflow:ellipsis;white-space:nowrap;overflow:hidden;
}
.dest-select:hover,.dest-select:focus{border-color:var(--gold);box-shadow:0 0 0 2px rgba(4,120,87,.12);}
.row-meta .vat-select{margin-left:0;}
.row-meta .del-row-btn{position:static;float:none;margin-left:2px;opacity:0;}
tbody tr:hover .row-meta .del-row-btn{opacity:.55;}

/* ===== SETUP · Capitale circolante e investimenti (layout impilato) ===== */
.setup-cc{display:flex;flex-direction:column;gap:24px;}
.setup-cc .cc-subtitle{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:8px;}
.setup-cc .cc-fields{display:grid;grid-template-columns:repeat(2,minmax(160px,220px));gap:16px;}
.setup-cc .cc-circolante .sp-side-hint{margin-top:10px;max-width:520px;}
.setup-cc .cc-cespiti{border-top:1px solid var(--line);padding-top:20px;}
@media(max-width:560px){.setup-cc .cc-fields{grid-template-columns:1fr;}}

/* ===== CESPITI — colonne e dettaglio regime ===== */
.cespiti-table td.cesp-detail-cell{white-space:nowrap;min-width:120px;}
/* Riepilogo per categoria + Piano di ammortamento: allineamento e leggibilità */
.cespiti-summary-table th.cesp-col-label,.cespiti-summary-table td.cesp-col-label{text-align:left;}
.cespiti-summary-table th.cesp-col-num,.cespiti-summary-table td.cesp-col-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}
.cespiti-summary-table th{background:#0b2a2e;color:#e9f3f1;font-weight:700;font-size:12px;letter-spacing:.03em;text-transform:uppercase;padding:8px 10px;border-bottom:2px solid var(--line);}
.cespiti-summary-table td{padding:7px 10px;}
.cespiti-summary-table .cesp-tot-row td{border-top:2px solid var(--line);background:var(--paper-2);}
.cesp-imm-imposte{flex-wrap:wrap;gap:6px 8px;margin-top:6px;padding-top:6px;border-top:1px dashed var(--line);min-width:280px;}
.cesp-imm-tit{flex-basis:100%;font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);font-weight:700;margin-bottom:2px;}
.cesp-imp-tratt{font-size:11px;padding:4px 6px;border:1px solid var(--line);border-radius:3px;background:var(--paper);color:var(--ink);min-width:140px;flex:1 1 140px;}
select.cesp-tipo{max-width:160px;}
.cespiti-table td.cesp-allin{text-align:right;font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap;}
/* badge regime */
.cesp-badge{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.04em;padding:2px 7px;border-radius:4px;text-transform:uppercase;}
.cesp-badge.cesp-rc{background:#dff0e8;color:#1a5c3a;}
.cesp-badge.cesp-esente{background:#e8e4f7;color:#3d2e7c;}
.cesp-badge.cesp-apert{background:rgba(15,163,143,.12);color:#0b5c52;}
/* righe in sola lettura generate dal dettaglio lordo − fondo del bilancio di apertura */
.cesp-virt-row td{background:rgba(15,163,143,.05);}
.cesp-virt-row .cesp-virt-lab{color:var(--ink-soft);font-size:12px;white-space:nowrap;}
.cesp-virt-row td:first-child{white-space:normal;}
.cesp-virt-go{font-size:12px;}
/* riga imposte di registro */
.cesp-reg-detail{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;}
.cesp-reg-detail label{display:flex;align-items:center;gap:3px;font-size:11px;color:var(--ink-soft);font-weight:600;white-space:nowrap;}
.cesp-reg-detail label .cesp-in.cesp-perc{width:46px;padding:4px 6px;font-size:12px;text-align:right;}
/* checkbox deducibile */
.cesp-ded-lbl{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--ink-soft);cursor:pointer;white-space:nowrap;}
.cesp-ded-lbl input[type=checkbox]{width:13px;height:13px;cursor:pointer;accent-color:var(--gold);}

/* ===== EQUITY & FINANZIAMENTI ===== */
.fin-table{width:100%;border-collapse:collapse;font-size:13.5px;}
.fin-table th{background:#0b2a2e;color:#e9f3f1;padding:8px 10px;text-align:left;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:600;border-bottom:1px solid var(--line);}
.fin-table td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:middle;}
.fin-table td.fin-pos{color:var(--green);font-weight:600;}
.fin-table td.fin-neg{color:var(--red);font-weight:600;}
.fin-empty{text-align:center;color:var(--ink-soft);font-style:italic;padding:20px!important;}
.fin-in{font-family:var(--sans);font-size:13px;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:3px;padding:6px 8px;outline:none;width:100%;transition:border-color .15s;}
.fin-in:focus{border-color:var(--gold);box-shadow:0 0 0 2px rgba(4,120,87,.15);}
.fin-in.num{text-align:right;font-variant-numeric:tabular-nums;}
select.start-input,select.fin-in{-webkit-appearance:none;appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%235b574c' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;padding-right:26px;}
/* Card finanziamento */
.fin-card{background:var(--card);border:1px solid var(--line);border-radius:3px;padding:20px;margin-bottom:16px;box-shadow:var(--shadow);}
.fin-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap;}
.fin-card-title{flex:1;min-width:200px;}
.fin-title-in{font-size:15px;font-weight:600;font-family:var(--serif);border:none;background:transparent;padding:0;outline:none;width:100%;color:var(--ink);}
.fin-title-in:focus{border-bottom:2px solid var(--gold);}
.fin-card-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.fin-badge{font-size:11px;font-weight:600;background:var(--paper-2);border:1px solid var(--line);color:var(--ink-soft);padding:2px 8px;border-radius:3px;white-space:nowrap;}
.fin-badge-imp{background:#e8f4ec;border-color:#b5d8bf;color:var(--green);}
.fin-badge-rata{background:#f0ebe0;border-color:#d8c89a;color:var(--gold);}
.fin-params{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:14px;}
.fin-param-item{display:flex;flex-direction:column;gap:4px;}
.fin-param-item label{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-weight:600;}
.fin-summary{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding-top:12px;border-top:1px dashed var(--line);font-size:13px;color:var(--ink-soft);}
.fin-summary strong{color:var(--ink);}
.fin-empty-box{background:var(--paper-2);border:1px dashed var(--line-strong);border-radius:3px;padding:24px;text-align:center;color:var(--ink-soft);font-style:italic;font-size:14px;}
/* Leva finanziaria */
.fin-leva-block{margin-top:12px;padding:14px 16px;background:var(--paper-2);border:1px solid var(--line);border-radius:3px;}
.fin-leva-block.fin-leva-open{background:#eafaf3;border-color:var(--gold);}
.fin-leva-toggle{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:var(--ink-soft);cursor:pointer;user-select:none;}
.fin-leva-toggle input[type=checkbox]{width:14px;height:14px;accent-color:var(--gold);cursor:pointer;}
.fin-leva-body{margin-top:12px;display:flex;flex-direction:column;gap:10px;}
.fin-leva-row{display:flex;flex-direction:column;gap:4px;}
.fin-leva-row label{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);font-weight:600;}
.fin-leva-pct{gap:4px;}
.fin-leva-pct-wrap{display:flex;align-items:center;gap:8px;}
.fin-leva-range{flex:1;accent-color:var(--gold);cursor:pointer;height:4px;}
.fin-leva-pctnum{width:72px!important;flex-shrink:0;}
.fin-leva-pct-label{font-weight:700;color:var(--gold);}
.fin-leva-recap{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:10px 12px;background:#fff;border:1px solid var(--line-strong);border-radius:3px;font-size:12.5px;color:var(--ink-soft);}
.fin-leva-recap strong{color:var(--ink);}
.fin-leva-result{color:var(--gold)!important;font-size:14px;}
.fin-leva-hint{opacity:.7;font-size:11.5px;}
/* Breakdown leva */
.fin-leva-breakdown{margin-top:14px;background:#fff;border:1px solid var(--line);border-radius:3px;padding:12px 14px;}
.fin-leva-bd-title{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);font-weight:700;margin-bottom:8px;}
.fin-leva-bd-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:12.5px;min-width:unset;}
.fin-leva-bd-table td{padding:5px 6px;border-bottom:1px solid #f0ebe0;overflow-wrap:break-word;}
.fin-leva-bd-num{text-align:right;font-variant-numeric:tabular-nums;font-weight:600;width:120px;}
.fin-leva-bd-pct{text-align:right;color:var(--ink-soft);width:60px;font-size:11.5px;}
.fin-leva-bd-bank td{color:var(--gold);}
.fin-leva-bd-eq td{color:var(--green);}
.fin-leva-bd-iva td{color:#5b7bb5;font-style:italic;}
.fin-leva-bd-tot td{border-top:2px solid var(--line-strong);font-weight:700;border-bottom:none;}
.fin-leva-bd-note{font-size:11px;color:var(--ink-soft);font-style:italic;padding:6px 6px 2px!important;border-bottom:none!important;}
/* Toggle equity apporto */
.fin-leva-eq-toggle{margin-top:12px;padding:12px 14px;background:#f5fbf7;border:1px solid #b5d8bf;border-radius:3px;}
.fin-leva-eq-toggle.fin-leva-eq-on{background:#e8f4ec;border-color:var(--green);}
.fin-leva-eq-note{margin:6px 0 0;font-size:11.5px;color:var(--ink-soft);line-height:1.5;}.fin-leva-eq-note.muted{color:#9ca09a;}
/* Piano di ammortamento */
.piano-wrap{margin-top:14px;overflow-x:auto;}
.piano-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:560px;}
.piano-table th{background:#0b2a2e;color:#e9f3f1;padding:7px 10px;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;font-weight:600;}
.piano-table td{padding:5px 10px;border-bottom:1px solid var(--line);vertical-align:middle;}
.piano-table tr:nth-child(even) td{background:var(--paper-2);}
.piano-num{text-align:right;font-variant-numeric:tabular-nums;}
.piano-table tr.piano-tot td{background:var(--paper-2);font-weight:700;border-top:2px solid var(--line-strong);}
/* ===== RENDICONTO FINANZIARIO ===== */
.stmt-table th.cf-label-col,.stmt-table td.cf-label-col,
.stmt-table tr td:first-child{ min-width:260px; }
.stmt-table tr.cf-section td{ background:var(--paper-2);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);font-weight:700;padding-top:10px;padding-bottom:4px;border-bottom:1px solid var(--line); }
.stmt-table tr.cf-quadr td{ border-top:2px solid var(--line-strong);font-size:12.5px;font-weight:700; }
.stmt-table tr.cf-quadr td.pos{ color:var(--green); }
.stmt-table tr.cf-quadr td.neg{ color:var(--red); }

/* ===== Parametri circolante per anno ===== */
.wc-table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed;min-width:unset;}
.wc-table th{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--band-text);font-weight:700;padding:8px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.wc-table th:nth-child(1){text-align:left;width:34%;}
.wc-table th:not(:nth-child(1)){text-align:right;}
.wc-table td{padding:5px 6px;vertical-align:middle;}
.wc-table td:nth-child(1){text-align:left;}
.wc-table td:not(:nth-child(1)){text-align:right;}
.wc-table .wc-year-lbl{font-weight:600;color:var(--ink);white-space:nowrap;text-align:left;}
.wc-table .wc-in{width:100%;max-width:84px;text-align:right;padding:5px 6px;border:1px solid var(--line);border-radius:3px;font-size:13px;background:#fff;color:var(--ink);box-sizing:border-box;}
.wc-in{width:80px;padding:5px 8px;border:1px solid var(--line-strong);border-radius:3px;font-family:var(--sans);font-size:13px;text-align:right;}
.wc-in:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 2px rgba(4,120,87,.12);}

/* ===== Selettore modalità circolante nei driver ===== */
.wc-mode-select{font-size:11px;padding:2px 6px;border:1px solid var(--line-strong);border-radius:3px;background:var(--paper);color:var(--ink-soft);font-family:var(--sans);cursor:pointer;margin-left:4px;}
.wc-mode-select:focus{outline:none;border-color:var(--gold);}

/* ===== Finanziamenti: oneri, euribor, fix layout ===== */
.fin-readonly{background:#fff8e8;font-weight:700;color:var(--ink);}
.fin-calc-tag{font-size:9px;color:var(--gold);font-weight:700;text-transform:uppercase;letter-spacing:.05em;}
.fin-oneri-box{margin-top:12px;padding:12px 14px;background:rgba(4,120,87,.05);border:1px solid rgba(4,120,87,.18);border-radius:3px;}
.fin-oneri-title{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);font-weight:700;margin-bottom:10px;}
.fin-check-item{justify-content:space-between;}
.fin-check-lbl{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:500;text-transform:none;letter-spacing:0;cursor:pointer;color:var(--ink);}
.fin-check-lbl input{width:auto;margin:0;}
.fin-oneri-val{font-weight:700;color:var(--ink);font-size:13px;}
.fin-oneri-note{margin-top:10px;font-size:11.5px;color:var(--ink-soft);line-height:1.5;}
.euribor-upd{border:1px solid var(--line-strong);background:var(--paper);border-radius:4px;cursor:pointer;font-size:11px;padding:0 5px;margin-left:6px;color:var(--gold);}
.euribor-upd:hover{border-color:var(--gold);}
.piano-oltre{opacity:.72;background:repeating-linear-gradient(45deg,transparent,transparent 6px,rgba(4,120,87,.04) 6px,rgba(4,120,87,.04) 12px);}

/* ===== Equity: badge collocazione SP ===== */
.eq-dest{display:inline-block;font-size:10.5px;font-weight:700;padding:3px 9px;border-radius:3px;letter-spacing:.02em;}
.eq-dest-pn{background:rgba(74,124,89,.12);color:var(--green,#3c7a4e);}
.eq-dest-debt{background:rgba(4,120,87,.14);color:var(--gold);}

/* ===== Scritture e rettifiche ===== */
.scr-row{border:1px solid var(--line);border-radius:3px;padding:14px;margin-bottom:12px;background:var(--paper);}
.scr-row.scr-incompleta{border-color:#d9a441;background:#fdf8ee;}
.scr-line1{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-bottom:10px;}
.scr-line2{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;padding-top:10px;border-top:1px dashed var(--line);}
.scr-f{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--ink-soft);font-weight:600;}
.scr-f span{text-transform:uppercase;letter-spacing:.03em;font-size:10px;}
.scr-f input,.scr-f select{font-size:13px;padding:6px 8px;border:1px solid var(--line);border-radius:3px;background:#fff;color:var(--ink);}
.scr-descr{flex:1 1 220px;}
.scr-descr input{width:100%;}
.scr-conto{flex:1 1 280px;}
.scr-conto select{width:100%;}
.scr-mon{flex:0 0 180px;}
.scr-arrow{font-size:18px;color:var(--gold);align-self:center;padding-bottom:6px;}
.scr-preview{margin-top:10px;font-size:12px;color:var(--ink-soft);background:var(--paper-2,#f5f1e8);padding:6px 10px;border-radius:3px;}
.scr-preview.scr-warn{color:#a8741a;background:#fdf3e0;}

/* Sotto-righe SP per costo/fondo/valore netto immobilizzazioni materiali */
.sp-subline td{color:var(--ink-soft);font-size:12px;padding-top:2px;padding-bottom:2px;}
.sp-subline .sp-subline-lbl{padding-left:24px;font-style:italic;}
.sp-subline-net td{font-weight:600;color:var(--ink);border-bottom:1px solid var(--line);}
.sp-subline-net .sp-subline-lbl{font-style:normal;}

/* Subtotale di categoria mostrato sulla riga di intestazione SP */
.sp-table tr.lvl-group td.head-tot{font-weight:700;color:var(--ink);text-align:right;font-variant-numeric:tabular-nums;}

/* Box Punto di partenza — bilancio di apertura dettagliato */
.open-sec-tit{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);font-weight:700;margin-bottom:10px;}
.open-grp{font-size:11px;font-weight:700;color:var(--ink-soft);margin:14px 0 6px;padding-bottom:3px;border-bottom:1px solid var(--line);}
.open-hint{font-weight:400;font-style:italic;color:var(--ink-soft);text-transform:none;letter-spacing:0;font-size:11px;}
#openingBlock select[data-openmode]{width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:3px;font-size:13px;background:#fff;color:var(--ink);}
#openingBlock details.open-more{margin-top:14px;border-top:1px dashed var(--line);padding-top:10px;}
#openingBlock details.open-more summary{font-size:11px;font-weight:700;color:var(--ink-soft);cursor:pointer;list-style:none;}
#openingBlock details.open-more summary::-webkit-details-marker{display:none;}
#openingBlock details.open-more summary::before{content:"▸ ";color:var(--gold);}
#openingBlock details.open-more[open] summary::before{content:"▾ ";}
#openingBlock details.open-more[open] summary{margin-bottom:6px;}

/* 14/09: prospetto di apertura art. 2424 (Attivo | Passivo) + Conto economico art. 2425 */
#openingSchema{margin-top:14px;}
.ob-sp{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:start;}
@media (max-width:1100px){ .ob-sp{grid-template-columns:minmax(0,1fr);} }
.ob-tab{border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;font-size:12.5px;}
.ob-row{display:grid;grid-template-columns:62px minmax(0,1fr) 128px;align-items:center;gap:8px;padding:3px 10px;border-top:1px solid rgba(0,0,0,.04);min-height:30px;}
.ob-row:first-child{border-top:none;}
.ob-code{color:var(--ink-soft);font-weight:600;font-size:11.5px;white-space:nowrap;font-variant-numeric:tabular-nums;}
.ob-lab{color:var(--ink);line-height:1.3;}
.ob-d2 .ob-lab{padding-left:10px;}
.ob-d3 .ob-lab{padding-left:22px;}
.ob-inp{width:100%;box-sizing:border-box;text-align:right;padding:4px 7px;border:1px solid var(--line);border-radius:4px;font-size:12.5px;font-variant-numeric:tabular-nums;background:#fff;color:var(--ink);}
.ob-inp:focus{outline:none;border-color:var(--band,#0b2a2e);box-shadow:0 0 0 2px rgba(15,163,143,.18);}
.ob-val{text-align:right;font-variant-numeric:tabular-nums;padding-right:8px;}
.ob-root{background:var(--band,#0b2a2e);color:#fff;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;min-height:34px;}
.ob-root .ob-lab{color:#fff;}
.ob-h{background:rgba(11,42,46,.035);}
.ob-h .ob-lab,.ob-h .ob-code{font-weight:700;color:var(--ink);}
.ob-top .ob-lab,.ob-top .ob-code{font-weight:700;}
.ob-tot{border-top:1px solid var(--line);}
.ob-tot .ob-lab,.ob-tot .ob-val{font-weight:700;}
.ob-tot .ob-lab{font-size:11.5px;color:var(--ink-soft);}
.ob-calc{background:rgba(15,163,143,.07);}
.ob-calc .ob-lab,.ob-calc .ob-val,.ob-calc .ob-code{font-weight:700;color:var(--ink);}
.ob-grand{background:var(--band,#0b2a2e);min-height:36px;}
.ob-grand .ob-lab,.ob-grand .ob-val,.ob-grand .ob-code{color:#fff;font-weight:700;}
.ob-ro .ob-lab{font-style:italic;color:var(--ink-soft);}
.ob-ro .ob-val{color:var(--ink-soft);}
.ob-legacy .ob-lab{color:var(--ink-soft);font-style:italic;}
.ob-btn{margin-left:8px;padding:1px 7px !important;font-size:10.5px !important;vertical-align:middle;}
.ob-det .ob-lab{padding-left:34px;color:var(--ink-soft);font-size:12px;}
.ob-det .ob-inp{background:rgba(15,163,143,.05);}
.ob-mode{margin-left:8px;padding:1px 4px;border:1px solid var(--line);border-radius:4px;font-size:10.5px;color:var(--ink-soft);background:#fff;vertical-align:middle;max-width:210px;}
.ob-ce-wrap{margin-top:24px;max-width:860px;}
.ob-ce-hint{margin:-4px 0 10px;}
@media (max-width:640px){ .ob-row{grid-template-columns:46px minmax(0,1fr) 104px;padding:3px 6px;} }

/* Cespite di apertura — blocco nella cella dettaglio */
.cesp-apertura{margin-top:6px;padding-top:6px;border-top:1px dashed var(--line);display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;}
.cesp-apt-mode{font-size:11px;padding:3px 6px;border:1px solid var(--line);border-radius:3px;background:#fff;}
.cesp-apt-f{display:flex;align-items:center;gap:3px;font-size:11px;color:var(--ink-soft);font-weight:600;white-space:nowrap;}
.cesp-apt-f input{width:80px;padding:4px 6px;font-size:12px;text-align:right;}
.cesp-apt-hint{font-size:10px;color:var(--ink-soft);font-style:italic;}

/* Selettore modalità rimanenze nel box circolante */
.wc-rim-mode{margin-bottom:12px;font-size:13px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.wc-rim-mode label{font-weight:600;color:var(--ink-soft);text-transform:uppercase;font-size:11px;letter-spacing:.03em;}
.wc-rim-mode select{padding:6px 9px;border:1px solid var(--line);border-radius:3px;font-size:13px;background:#fff;color:var(--ink);}

/* Barra esportazione (Stampa / Excel) nelle sezioni */
.export-bar-wrap{margin-bottom:10px;}
.export-bar{display:flex;gap:8px;justify-content:flex-end;}
.btn.mini{padding:5px 12px;font-size:12px;border-radius:3px;}
@media print{ .export-bar,.export-bar-wrap,.navbar,.sidebar,.sidebar-toggle,.page-nav{display:none!important;} .screen{margin-left:0!important;} }

/* Badge cespite di apertura */
.cesp-apt-badge{display:inline-block;background:var(--paper-2);color:var(--ink-soft);font-size:10.5px;font-style:italic;padding:3px 8px;border-radius:3px;border:1px solid var(--line);}

/* Badge "di apertura" sui finanziamenti collegati al debito iniziale */
.fin-badge-apt{background:var(--gold);color:#fff;font-weight:600;}

/* Piano di ammortamento manuale (import) */
.fin-manuale-box{margin-top:14px;padding:14px;background:var(--paper-2);border:1px solid var(--line);border-radius:3px;}
.fin-manuale-actions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px;}
.fin-import-lbl{cursor:pointer;display:inline-flex;align-items:center;}
.fin-manuale-info{font-size:12.5px;color:var(--ink-soft);}
.fin-manuale-empty{font-style:italic;}

/* ============ SCHERMATE DI PIATTAFORMA IN-FLOW (O3) ============
   docs/piano-shell-unica-overlay.md — Gate B, residuo INF-013.

   `.pf-screen` è l'equivalente di `.screen` (Plan) per le schermate di
   piattaforma: stesso toggle `.on`, stesso incavo di 230px per la sidebar,
   ma senza `position:fixed` e senza scala z-index. Una schermata convive
   con la sidebar invece di coprirla.

   Le schermate di Plan restano nel DOM con la loro `.on` (il router di
   Gruppo 2 non le tocca), quindi vanno nascoste esplicitamente quando la
   shell non è dentro un progetto — altrimenti finirebbero nel flusso sotto
   il pannello di piattaforma. La regola è scritta sullo stato positivo
   `platform` e non su `:not([data-shell="plan"])` di proposito: se
   l'attributo mancasse o fosse sbagliato, Plan resta visibile come oggi
   invece di sparire. */
.pf-screen{display:none;margin-left:230px;padding:32px 24px;}
.pf-screen.on{display:block;}
/* `.start-card` è tarata su un fondale scuro: centratura dal flex del genitore,
   altezza limitata a 90vh perché non poteva scrollare la pagina, ombra pesante
   per staccare dal gradiente. In-flow sulla carta chiara servono le controparti:
   centratura esplicita, altezza libera (scrolla la pagina), bordo al posto
   dell'ombra profonda. */
.pf-screen .start-card{margin:0 auto;max-height:none;overflow:visible;
  border:1px solid var(--line);box-shadow:var(--shadow);}
body[data-shell="platform"] .screen{display:none;}
/* E la simmetrica: nemmeno le `.pf-screen` si spengono da sole. Si entra in
   Plan senza passare dal router (`openModule` → `hidePlatformHome`), quindi
   nessuno toglie `.on` al pannello di piattaforma che si stava guardando:
   con l'overlay fisso spariva insieme allo stato, in-flow resterebbe nel
   flusso sopra la schermata di Plan. Stati elencati per esteso, non
   `:not([data-shell="platform"])`, per la stessa ragione della regola sopra:
   se l'attributo mancasse, si torna al comportamento di oggi. */
body[data-shell="plan"] .pf-screen,
body[data-shell="auth"] .pf-screen{display:none;}

/* Variante per le schermate che erano "app-shell" (Home, Amministrazione, e
   in seguito le altre): l'overlay riempiva lo schermo e la card era la
   pagina, con testata e piè di pagina fissi e la sola area centrale
   scorrevole. In-flow quella struttura non serve più — la cornice la dà la
   sidebar, e a scorrere torna la pagina: la barra di scorrimento *dentro*
   la card era un artificio del modello a overlay, dove la pagina sotto non
   poteva scorrere. Resta sticky la sola testata, che prima era comunque
   sempre a schermo. Il pannello tiene il tetto di 1560px per leggibilità:
   su schermi più larghi la striscia laterale va dipinta, altrimenti si
   vedrebbe il gradiente della pagina accanto alla scheda. Due tinte, perché
   le schermate `pf-screen-wide` non sono tutte dello stesso colore: il
   fondo chiaro della scheda per Invest e Cash (rimaste "carta e
   inchiostro"), quello della shell scura per Home e amministrazione. */
.pf-screen-wide{padding:0;min-height:100vh;background:var(--paper,var(--paper-2));}
.pf-screen-wide > .start-card{max-width:1560px;width:100%;margin:0 auto;
  max-height:none;overflow:visible;border:0;border-radius:0;box-shadow:none;}
.pf-screen-wide .dash-topbar{position:sticky;top:0;z-index:1;}
/* …ma solo dove la testata un fondale ce l'ha davvero: le schermate scure lo
   prendono da `.shell-dark .dash-topbar{background:…}`. Su Invest e Cash
   (rimaste "carta e inchiostro") la testata è la sola insegna del modulo e
   nasce trasparente: sticky voleva dire vedere il contenuto scorrere
   *attraverso* logo e titolo — il box "Benvenuto in Pianexa Cash" finiva
   sovrapposto all'insegna. Dipingerla non basterebbe: dentro Cash e Invest
   ci sono intestazioni di tabella sticky a top:0 (z-index 2-5) e la barra
   delle sezioni di Invest (`.inv-tabwrap`, z-index 30), che si
   contenderebbero la stessa striscia. Quindi scorre col contenuto: a nominare
   il modulo ci pensa già la sidebar, quella sì sempre a schermo. */
.pf-screen-wide:not(.shell-dark) .dash-topbar{position:static;}
.shell-dark.pf-screen-wide{background:var(--shell-paper);}

@media(max-width:900px){
  .pf-screen{margin-left:0;padding-top:68px;}
  /* Spazio per l'hamburger, come per le `.screen` di Plan. La testata smette
     di essere sticky: resterebbe sotto l'hamburger (fisso, z-index 120) e i
     due si sovrapporrebbero appena si scorre. */
  .pf-screen-wide{padding-top:56px;}
  .pf-screen-wide .dash-topbar{position:static;}
}

/* ============ SCHERMATE DI AUTENTICAZIONE IN-FLOW (O5) ============
   Onboarding, "Accetta invito" e "Richiedi accesso" sono le schermate dello
   stato `auth`: si vedono prima che esista un contesto di piattaforma, quindi
   non hanno una barra laterale accanto e occupano tutta la pagina. Restano scure
   come prima (il gradiente era della overlay, non della schermata), ma senza
   `position:fixed` né z-index: `min-height:100vh` invece di `inset:0`, così se
   il contenuto è più alto del viewport il contenitore cresce e scorre la
   pagina — con `height` fisso il centraggio flex taglierebbe la testa alla
   scheda, che è proprio il caso del wizard di onboarding a schermo basso. */
.auth-screen{display:none;min-height:100vh;box-sizing:border-box;padding:20px;
  align-items:center;justify-content:center;
  background:linear-gradient(135deg,#0b2a2e 0%,#15434a 100%);}
.auth-screen.on{display:flex;}
/* Per la stessa ragione la scheda smette di scrollare al proprio interno: era
   un artificio del modello a overlay, dove la pagina sotto non poteva scorrere. */
.auth-screen .start-card{max-height:none;overflow:visible;}
/* La coppia simmetrica di O3, terza volta: nessuno spegne la `.on` di una
   schermata di autenticazione quando si entra altrove, quindi va nascosta
   sugli stati positivi in cui non c'entra. */
body[data-shell="platform"] .auth-screen,
body[data-shell="plan"] .auth-screen{display:none;}

/* Il presupposto della conversione, che finora mancava: **in nessun punto la
   sidebar veniva nascosta nello stato `auth`**. Non si vedeva perché le
   schermate di autenticazione erano overlay fisse a tutto schermo e le
   coprivano; in-flow comparirebbero accanto a una sidebar piena dei 13 passi
   di Plan, a un utente che non ha ancora un progetto né un'organizzazione.
   Stessa cosa per l'hamburger e il suo sfondo su mobile. E come per Plan
   (`body[data-shell="platform"] .screen`), le `.screen` restano `.on` da una
   sessione precedente: dopo un logout con Plan aperto, il login di un altro
   utente atterra su onboarding e se le trova nel flusso sotto. */
body[data-shell="auth"] .sidebar,
body[data-shell="auth"] .sidebar-toggle,
body[data-shell="auth"] .sidebar-backdrop,
body[data-shell="auth"] .screen{display:none;}

/* ============ SCHEDA DI PARTENZA (plancia progetti, onboarding, inviti) ============
   Qui stava `.start-overlay` (fissa, z-index 2000): `#startOverlay` è
   `.pf-screen` da O5 e nessun markup porta più quella classe, quindi la
   regola è stata cancellata in O7. Resta `.start-card`, la scheda che
   usano plancia, onboarding e schermate di invito/accesso. */
.start-card{background:var(--paper,var(--paper-2));border-radius:3px;padding:40px 38px;max-width:460px;width:100%;
  max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.4);text-align:center;}
.brand-lockup{display:flex;flex-direction:column;align-items:center;gap:8px;margin:0 auto 20px;}
/* Logo «Lo scatto» (13/09/2026): la fascia alta della P e «move.» prendono
   --px-acc (acqua #0fa38f su chiaro; sulle superfici scure lo si alza a #2cc9b2). */
.px-acc-fill{fill:var(--px-acc,#0fa38f);}
.brand-icon{width:56px;height:51px;color:#0b2a2e;}
.brand-wordmark{display:block;height:22px;width:auto;margin-top:4px;color:#0b2a2e;}
.brand-word{font-family:var(--sans);font-weight:800;font-size:27px;color:#0b2a2e;letter-spacing:.01em;line-height:1;}
.brand-tag{font-family:var(--sans);font-size:12px;color:#6b7480;}
.brand-stack{display:flex;flex-direction:column;align-items:flex-end;gap:6px;}
.brand-claim{display:block;height:13px;width:auto;color:#5b7471;}
.start-title{font-size:26px;font-weight:700;color:var(--ink,#1a1a1a);margin:0 0 8px;font-family:var(--sans);}
.start-sub{font-size:14px;color:var(--ink-soft,#6b6455);line-height:1.5;margin:0 0 24px;}
.start-field-label{display:block;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.08em;
  color:var(--gold,#9a7b3f);font-weight:700;margin-bottom:6px;}
.start-input{width:100%;padding:12px 14px;font-size:15px;border:1.5px solid var(--line,#d8d0c0);border-radius:3px;
  background:#fff;color:var(--ink,#1a1a1a);box-sizing:border-box;font-family:inherit;}
.start-input:focus{outline:none;border-color:var(--gold,#9a7b3f);}
.start-hint{text-align:left;font-size:12px;color:var(--ink-soft,#8a8477);margin:8px 2px 22px;min-height:16px;}
.start-btn{width:100%;padding:13px;font-size:15px;font-weight:600;}
.start-btn-compact{width:auto;min-width:130px;padding:9px 26px;font-size:13.5px;font-weight:600;margin:4px auto 0;display:block;border-radius:20px;}
.start-or{font-size:12px;color:var(--ink-soft,#8a8477);text-transform:uppercase;letter-spacing:.1em;margin:18px 0 14px;position:relative;}
.start-open-btn{width:100%;padding:11px;font-size:14px;}

/* elenco progetti salvati nel cloud, nella schermata iniziale */
.cloud-project-list{max-height:260px;overflow-y:auto;margin:0 0 6px;text-align:left;}
.cloud-project-empty{font-size:13px;color:var(--ink-soft,#8a8477);font-style:italic;padding:10px 2px;}
.cloud-project-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;
  border:1px solid var(--line,#d8d0c0);border-radius:3px;margin-bottom:8px;cursor:pointer;background:#fff;}
.cloud-project-row:hover{border-color:var(--gold,#9a7b3f);background:var(--paper-2);}
.cloud-project-info{min-width:0;}
.cloud-project-name{font-size:14px;font-weight:600;color:var(--ink,#1a1a1a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cloud-project-date{font-size:11.5px;color:var(--ink-soft,#8a8477);margin-top:2px;}
.cloud-project-del{flex:0 0 auto;background:none;border:none;font-size:15px;cursor:pointer;padding:4px 6px;
  border-radius:3px;opacity:.6;}
.cloud-project-del:hover{opacity:1;background:rgba(192,57,43,.12);}

/* ============ HOME PIATTAFORMA (catalogo moduli, sopra la plancia) ============ */

/* App-shell a piena larghezza (step 2 del redesign layout, luglio 2026): stesso
   pattern applicato prima all'editor Invest — testata e piè di pagina fissi,
   sola area di contenuto scorrevole. Home, Amministrazione, Amministrazione
   organizzazione e Gestione organizzazione non ce l'hanno più: convertite in
   `.pf-screen-wide` da O4, scrolla la pagina.
   Il blocco `#companyAdminOverlay ...` che stava qui è stato cancellato, non
   sovrascritto: un selettore con ID (1,1,0) batte qualunque modificatore di
   classe, quindi lasciandolo avrebbe continuato a imporre la card con scroll
   interno anche dopo il passaggio a `.pf-screen-wide` (stessa trappola già
   incontrata con `#homeOverlay .home-card` in O4a). Con esso è sparito anche
   il suo `z-index:2610`, residuo della scala smontata in O7. */

/* Step 3 del redesign (luglio 2026): stesso pattern esteso alle restanti
   schermate "dashboard" (elenco operazioni Invest, plancia progetti Plan).
   Anche i blocchi `#investOverlay ...` e `#startOverlay ...` sono stati
   cancellati qui, per la stessa ragione di specificità del gemello
   companyAdmin: Invest è passato a `.pf-screen-wide` nell'ultimo batch di O4,
   la plancia progetti in O5.

   O6 ha chiuso anche `#projectDashOverlay`, l'ultima coppia di regole a ID di
   questa serie: `.dashboard-card{max-width:960px}` (che alzava il tetto di 780
   della classe generica) e `.dash-topbar-actions{display:flex;...}` (duplicato
   esatto della regola generica poco più sotto). La dashboard non è più una
   card dentro un overlay: è una `.screen` di Plan con dentro un `.wrap`, e la
   larghezza gliela dà quello. */
.home-ws-name{font-size:var(--fs-sm);color:var(--ink-soft,#8a8477);font-weight:600;}
.home-mod-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;}
.home-mod-card{background:#fff;border:1px solid var(--line,#d8d0c0);border-radius:var(--radius-lg,6px);
  padding:18px 16px 14px;cursor:pointer;display:flex;flex-direction:column;gap:8px;text-align:left;
  transition:border-color .12s,box-shadow .12s;}
.home-mod-card:hover{border-color:var(--gold,#9a7b3f);box-shadow:0 4px 14px rgba(0,0,0,.08);}
.home-mod-card.off{cursor:default;opacity:.55;}
.home-mod-card.off:hover{border-color:var(--line,#d8d0c0);box-shadow:none;}
.home-mod-name{font-size:16px;font-weight:700;color:var(--ink,#1a1a1a);
  font-family:var(--sans);}
.home-mod-ver{font-size:var(--fs-xs);font-weight:600;color:var(--ink-soft,#8a8477);
  font-family:var(--sans);margin-left:4px;}
.home-mod-desc{font-size:var(--fs-md);color:var(--ink-soft,#6b6455);line-height:1.45;flex:1;}
.home-mod-badge{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.07em;font-weight:700;
  padding:3px 8px;border-radius:10px;}
.home-mod-badge.st-active{background:rgba(5,150,105,.12);color:#059669;}
.home-mod-badge.st-trial{background:rgba(4,120,87,.14);color:var(--gold,#9a7b3f);}
.home-mod-badge.st-limited{background:rgba(4,120,87,.14);color:var(--gold,#9a7b3f);}
.home-mod-badge.st-off{background:rgba(120,120,120,.12);color:#777;}
.home-mod-badge.st-warn{background:rgba(201,162,39,.14);color:var(--amber,#c9a227);}
.home-mod-open{font-size:var(--fs-md);font-weight:600;color:var(--gold,#9a7b3f);}
.dash-topbar-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto;}

/* ============ PF5/PF6/PF7: shell "Inchiostro" ============
   PF7 generalizza il blocco da selettore-ID (#homeOverlay) a classe di
   toggle (.shell-dark), applicata schermata per schermata via markup, per
   riuso su companyAdmin/orgAdmin/admin (PF8/PF9) senza retrofittare
   Plan/Cash/Invest, che restano "carta e inchiostro". PF6 sostituisce il
   blocco KPI aggregati con una lista di lavori recenti (.home-recent-*) e
   passa Moduli da griglia di card a lista di righe. Quella lista dei moduli
   oggi non c'e' piu' — ne' come griglia ne' come riga in coda: era un
   doppione della barra a sinistra, e il piano commerciale si legge in
   Organizzazione, dove c'e' anche la scadenza. Al suo posto, dal 18/09,
   "I tuoi grafici" (.hw-*, in fondo al file). */
/* PF10: il colore ereditato serve ai testi di aiuto e alle label senza classe
   scritti inline in index.html (font-size/opacity ma nessun color): senza
   questo ereditano --ink e diventano illeggibili sul fondo scuro. */
.shell-dark{background:var(--shell-paper);color:var(--shell-ink);}
.shell-dark .home-card{background:var(--shell-paper);}
.shell-dark #homeBody{background:var(--shell-paper);}

.shell-dark .dash-topbar{background:var(--shell-paper);border-bottom:1px solid var(--shell-line);
  padding:18px 30px;}
/* 14/09: icona ritagliata, alta quanto titolo + sottotitolo (33px) */
.shell-dark .dash-brand-icon{width:36px;height:33px;color:var(--shell-ink);--px-acc:#2cc9b2;}
.shell-dark .dash-brand-word{font-family:var(--sans);font-weight:700;font-size:16px;
  color:var(--shell-ink);letter-spacing:-.01em;}
.shell-dark .brand-tag{font-family:var(--sans);font-size:var(--fs-xs);color:var(--shell-ink-faint);
  letter-spacing:.08em;text-transform:uppercase;}
.shell-dark .dash-logout{font-family:var(--sans);font-size:var(--fs-md);font-weight:500;
  color:var(--shell-ink-soft)!important;background:none;border:none;box-shadow:none;padding:6px 4px;}
.shell-dark .dash-logout:hover{color:var(--red)!important;}

.shell-dark #homeBody{padding:0 30px 30px;}
.shell-dark .dash-section{margin-top:30px;}
.shell-dark .dash-section-title{font-family:var(--sans);font-size:var(--fs-sm);font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;color:var(--shell-ink-faint);}
.shell-dark .dash-profile{background:var(--shell-paper-2);border:1px solid var(--shell-line);
  border-radius:var(--radius);box-shadow:none;}
.shell-dark .dash-profile-lbl{color:var(--shell-ink-faint);font-size:var(--fs-xs);}
.shell-dark .dash-profile-val{color:var(--shell-ink);}
.shell-dark .btn.ghost{color:var(--shell-ink-soft);}
.shell-dark .btn.ghost:hover{color:var(--shell-accent);}

/* Riprendi da dove hai lasciato (PF6) e Progetti: uno per elemento, verso
   l'elemento specifico (non verso il modulo generico).
   14/09 (chiesto da Matteo): non più righe a tutta larghezza — con due righe
   di testo erano scatoloni vuoti — ma tasti compatti in rilievo, affiancati:
   nome e modulo in alto, l'ora sotto. Il rilievo è fatto da un gradiente
   chiaro in alto, un filo di luce sul bordo superiore e uno spessore scuro
   sotto; alla pressione il tasto scende e lo spessore sparisce. */
.shell-dark .home-recent-list{display:grid;gap:14px;
  grid-template-columns:repeat(auto-fill,minmax(230px,280px));}
.shell-dark .home-recent-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;
  grid-template-areas:"icon mid go" "time time time";align-items:center;gap:10px 12px;
  padding:13px 14px 11px;width:100%;text-align:left;cursor:pointer;font-family:var(--sans);
  border:1px solid var(--shell-line-strong);border-top-color:rgba(255,255,255,.14);
  border-radius:var(--radius-lg);
  background:linear-gradient(180deg,var(--shell-paper-3) 0%,var(--shell-paper-2) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 4px 0 rgba(0,0,0,.45),0 8px 18px rgba(0,0,0,.28);
  transition:transform .08s,box-shadow .08s,border-color .12s;}
/* Progetti: il simbolo del modulo sta già nel titolo della sezione */
.shell-dark .home-recent-row.no-icon{grid-template-columns:minmax(0,1fr) auto;
  grid-template-areas:"mid go" "time time";}
.shell-dark .home-recent-row:hover{border-color:#2cc9b2;transform:translateY(-1px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 5px 0 rgba(0,0,0,.45),0 12px 24px rgba(0,0,0,.34);}
.shell-dark .home-recent-row:active{transform:translateY(3px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 1px 0 rgba(0,0,0,.45),0 3px 8px rgba(0,0,0,.25);}
.shell-dark .home-recent-row:focus-visible{outline:2px solid #2cc9b2;outline-offset:2px;}
.shell-dark .home-recent-icon{grid-area:icon;width:34px;height:34px;border-radius:8px;
  display:flex;align-items:center;justify-content:center;background:var(--shell-accent-soft);
  color:var(--shell-accent);font-size:var(--fs-lg);}
.shell-dark .home-recent-mid{grid-area:mid;min-width:0;}
.shell-dark .home-recent-name{font-family:var(--sans);font-weight:700;font-size:15px;
  color:var(--shell-ink);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.shell-dark .home-recent-sub{font-size:var(--fs-sm);color:var(--shell-ink-faint);margin-top:1px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.shell-dark .home-recent-sub .mod{color:var(--shell-ink-soft);font-weight:600;}
.shell-dark .home-recent-time{grid-area:time;font-size:var(--fs-xs);color:var(--shell-ink-faint);
  font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  padding-top:8px;border-top:1px solid var(--shell-line);}
.shell-dark .home-recent-go{grid-area:go;color:var(--shell-ink-faint);font-size:15px;}
.shell-dark .home-recent-row:hover .home-recent-go{color:var(--shell-accent);}
.shell-dark .home-recent-empty{color:var(--shell-ink-faint);font-size:var(--fs-md);padding:16px 2px;}

/* Griglia .home-mod-* in versione scura: da card a lista di righe.
   Nasceva per la striscia moduli della Home, che non c'e' piu'; restano
   perche' Cash le riusa come griglia di indicatori (cash-dashboard,
   cash-results, cash-adequacy) e la pastiglia .home-mod-badge gira per
   mezza piattaforma. Le regole rimaste orfane con la Home nuova
   (-icon, -mid, -foot) sono andate via. */
.shell-dark .home-mod-grid{display:block;gap:0;background:transparent;
  border:1px solid var(--shell-line);border-radius:var(--radius-lg);overflow:hidden;}
.shell-dark .home-mod-card{flex-direction:row;align-items:center;gap:14px;
  border:none;border-bottom:1px solid var(--shell-line);border-radius:0;
  background:var(--shell-paper);padding:15px 18px;transition:background .12s;}
.shell-dark .home-mod-card:last-child{border-bottom:none;}
.shell-dark .home-mod-card:hover{box-shadow:none;background:var(--shell-paper-3);}
.shell-dark .home-mod-card.off:hover{background:var(--shell-paper);}
.shell-dark .home-mod-name{font-family:var(--sans);font-size:15px;font-weight:700;
  color:var(--shell-ink);letter-spacing:-.01em;}
.shell-dark .home-mod-ver{color:var(--shell-ink-faint);}
.shell-dark .home-mod-desc{color:var(--shell-ink-faint);margin-top:2px;flex:none;}
.shell-dark .home-mod-badge{border-radius:999px;}
.shell-dark .home-mod-badge.st-active{background:var(--shell-good-soft);color:var(--shell-good);}
.shell-dark .home-mod-badge.st-trial,
.shell-dark .home-mod-badge.st-limited{background:var(--shell-accent-soft);color:var(--shell-accent);}
.shell-dark .home-mod-badge.st-off{background:var(--shell-muted-soft);color:var(--shell-ink-faint);}
.shell-dark .home-mod-badge.st-warn{background:var(--shell-warn-soft);color:var(--shell-warn);}
.shell-dark .home-mod-open{color:var(--shell-accent);font-family:var(--sans);font-size:var(--fs-md);font-weight:600;}

/* PF8: superfici condivise con companyAdmin/orgAdmin (e admin.js via
   .cloud-project-row) non gia' coperte dal blocco sopra. .btn.primary aveva
   background quasi identico a --shell-paper: senza questo fix le CTA
   primarie diventano illeggibili su sfondo scuro. */
.shell-dark .cloud-project-row{background:var(--shell-paper-2);border-color:var(--shell-line);color:var(--shell-ink);}
.shell-dark .cloud-project-row:hover{border-color:var(--shell-accent);background:var(--shell-paper-3);}
.shell-dark .cloud-project-empty{color:var(--shell-ink-faint);}
.shell-dark .btn{background:var(--shell-paper-2);border-color:var(--shell-line-strong);color:var(--shell-ink);}
.shell-dark .btn:hover{background:var(--shell-paper-3);border-color:var(--shell-accent);box-shadow:none;}
/* Sul fondo scuro il petrolio pieno sparirebbe: fondo petrolio col bordo e
   il testo in acqua, che si accende al passaggio del mouse. */
.shell-dark .btn.primary{background:#0b2a2e;color:#2cc9b2;border-color:#2cc9b2;}
.shell-dark .btn.primary:hover{background:#2cc9b2;color:#0b2a2e;border-color:#2cc9b2;}
/* `background-color`, non lo shorthand `background`: lo shorthand riazzera
   anche repeat e position, e la regola qui sotto rimette solo l'immagine —
   la freccia dei select ripartiva da sinistra e si ripeteva per tutta la
   larghezza del campo. */
.shell-dark .start-input,
.shell-dark .fin-in{background-color:var(--shell-paper-2);color:var(--shell-ink);border-color:var(--shell-line-strong);}
.shell-dark .start-input:focus,
.shell-dark .fin-in:focus{border-color:var(--shell-accent);box-shadow:0 0 0 2px rgba(91,124,250,.2);}
.shell-dark select.start-input,.shell-dark select.fin-in{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%238891a0' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");}
.shell-dark .start-field-label{color:var(--shell-ink-faint);}
.shell-dark .start-hint{color:var(--shell-ink-faint);}
/* `.shell-dark .overlay-logout` (PF10: --red su fondo scuro sta a 3.1:1,
   sotto la soglia di leggibilita') e' sparita con l'ultima "⏻ Esci" nel
   corpo di una schermata: l'uscita ora vive solo nel pie' di pagina della
   sidebar. */

/* ============ PIANEXA INVEST (elenco operazioni + editor rapido) ============ */
.inv-brand-mod{color:#0fa38f;}
.shell-dark .inv-brand-mod{color:#2cc9b2;}

/* Qui stava il blocco `#investOpOverlay ...`: app-shell a piena larghezza con
   testata e piè di pagina fissi e sola `#invOpBody` scorrevole, più i tre
   z-index (2620/2620/2630) della scala smontata in O7. Cancellato, non
   sovrascritto: un selettore con ID (1,1,0) batte qualunque modificatore di
   classe, ed è la quinta volta che questa trappola si presenta in Gate B.
   L'editor è ora `.pf-screen-wide` come l'elenco da cui si apre — il tetto di
   1560px lo dà quella classe, e a scorrere torna la pagina invece di un
   riquadro dentro la card. `.invest-overlay`/`.cash-overlay` restano sul
   markup di elenco ed editor senza più regole di layout proprie, ma NON sono
   morte: `.cash-overlay .commessa-table th` (C5, più sotto) le usa come
   contenitore comune dei due pannelli Cash per non toccare le `.commessa-table`
   di Plan. Toglierle qui avrebbe spento gli header sticky dell'editor piano. */
.inv-badges{display:flex;gap:6px;flex-wrap:wrap;margin:2px 0 0;}
.inv-badge{font-size:10px;text-transform:uppercase;letter-spacing:.07em;font-weight:700;
  padding:3px 8px;border-radius:10px;background:rgba(120,120,120,.12);color:#666;}
.inv-badge.gold{background:rgba(4,120,87,.14);color:var(--gold,#9a7b3f);}
.inv-scen-prob{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px;}
.inv-import-overlay{position:fixed;inset:0;z-index:var(--z-modal);display:none;align-items:center;justify-content:center;
  background:rgba(14,27,46,.55);padding:20px;}
.inv-import-box{background:var(--paper,#fff);border-radius:var(--radius-lg,6px);padding:20px 22px;max-width:720px;width:100%;
  box-shadow:0 20px 60px rgba(0,0,0,.4);max-height:88vh;overflow:auto;}
.inv-import-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;justify-content:flex-end;}
.inv-import-actions .inv-q-opt{margin-right:auto;}
.inv-guided-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px 14px;}
.inv-guided-grid.pairs{grid-template-columns:repeat(2,minmax(190px,1fr));max-width:640px;}
/* campo a riga intera: non fa parte di una coppia data+importo e non deve
   sfalsare quelle che seguono (INV-A7) */
.inv-guided-field.wide{grid-column:1/-1;}
.inv-flow-debtrow input[readonly]{cursor:default;}
.inv-flow-debtrow input[type="date"][readonly]::-webkit-calendar-picker-indicator{display:none;}
.inv-matrix th,.inv-matrix td{text-align:center;}
.inv-matrix th:first-child,.inv-matrix td:first-child{text-align:left;white-space:nowrap;}
/* indicatori bancari (INV-A4): semaforo su DSCR/ICR/LTV */
.inv-cov{font-weight:700;}
.inv-cov.ok{color:#059669;}
.inv-cov.warn{color:#c9a227;}
.inv-cov.bad{color:var(--red,#b0392f);}

/* sensitività (INV-A5): barra del tornado, ampiezza relativa della leva */
.inv-tornado{display:inline-block;vertical-align:middle;width:120px;height:8px;
  background:rgba(0,0,0,.06);border-radius:4px;overflow:hidden;}
.inv-tornado span{display:block;height:100%;background:#9a7b3f;}
.inv-tornado-val{margin-left:8px;font-variant-numeric:tabular-nums;}

/* Monte Carlo (INV-A11): la distribuzione degli esiti. Le colonne sotto
   il rendimento minimo sono rosse — è la coda che decide se l'operazione
   si fa, e deve saltare all'occhio senza leggere una tabella. */
.inv-mc-hist{display:flex;align-items:flex-end;gap:3px;height:110px;margin:10px 0 4px;}
.inv-mc-bin{flex:1 1 0;display:flex;flex-direction:column;justify-content:flex-end;height:100%;}
.inv-mc-bin i{display:block;background:#9a7b3f;border-radius:2px 2px 0 0;min-height:1px;}
.inv-mc-bin.below i{background:var(--red,#b0392f);}
.inv-mc-axis{display:flex;justify-content:space-between;font-size:11px;
  color:var(--ink-soft,#8a8477);font-variant-numeric:tabular-nums;}
.inv-mc-head{display:flex;gap:22px;flex-wrap:wrap;align-items:baseline;margin:4px 0 2px;}
.inv-mc-prob{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;}
.inv-mc-prob.ok{color:#059669;}
.inv-mc-prob.warn{color:#c9a227;}
.inv-mc-prob.bad{color:var(--red,#b0392f);}
.inv-guided-field .start-input{padding:9px 10px;font-size:13.5px;}
/* Sottostante del credito single name a gruppi (giro 12/09 punto 3): tre
   colonne fisse con celle ancorate in alto ed etichette da due righe, così
   gli input stanno allineati anche quando un campo ha la spiegazione sotto;
   le garanzie sono una tabella tipo | descrizione | valore */
.inv-asset-group{margin-top:16px;}
.inv-asset-group-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  color:var(--ink-soft,#8a8477);padding-bottom:6px;margin-bottom:10px;border-bottom:1px solid var(--line,#d8d0c0);}
.inv-guided-grid.cols3{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;}
.inv-guided-grid.cols3 .start-field-label{min-height:30px;display:flex;align-items:flex-end;}
.inv-gar-grid{display:grid;grid-template-columns:minmax(110px,150px) minmax(0,1fr) minmax(150px,220px);gap:8px 14px;align-items:center;}
.inv-gar-h{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft,#8a8477);}
.inv-gar-lbl{font-size:13.5px;font-weight:600;}
.inv-gar-grid .start-input{padding:9px 10px;font-size:13.5px;}
@media (max-width:760px){
  .inv-guided-grid.cols3{grid-template-columns:1fr;}
  .inv-gar-grid{grid-template-columns:1fr;}
  .inv-gar-h{display:none;}
  .inv-gar-lbl{margin-top:8px;}
}
/* spiegazione sotto i campi dei form classi/cascata: breve ma completa,
   cambia col tipo di livello scelto (vedi INV_WF_FIELD_TEXTS) */
.inv-field-help{font-size:11.5px;line-height:1.45;color:var(--ink-soft,#8a8477);margin-top:4px;}
/* i form della struttura del capitale hanno etichette e spiegazioni di
   lunghezza diversa per cella: con l'ancoraggio in basso della griglia le
   celle partivano ad altezze diverse. Qui le celle si allineano in alto,
   le etichette occupano un'altezza fissa da due righe ancorate in basso
   (min-height che cresce se serve una terza riga) e così input, select e
   pulsanti stanno tutti sulla stessa riga; le spiegazioni sotto possono
   avere lunghezze diverse senza spostare nulla. */
.inv-cap-grid{align-items:start;}
.inv-cap-grid .start-field-label{min-height:30px;display:flex;align-items:flex-end;}
.inv-cap-grid .inv-q-opt{min-height:39px;display:flex;align-items:center;}
.inv-scen-tabs{display:flex;gap:6px;flex-wrap:wrap;}
.inv-scen-tab{font-size:13px;font-weight:600;padding:7px 16px;border-radius:16px;cursor:pointer;
  border:1px solid var(--line,#d8d0c0);background:#fff;color:var(--ink-soft,#6b6455);font-family:inherit;}
.inv-scen-tab:hover{border-color:var(--gold,#9a7b3f);}
.inv-scen-tab.sel{border-color:var(--gold,#9a7b3f);background:rgba(4,120,87,.1);color:var(--ink,#1a1a1a);}
.inv-flow-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line,#d8d0c0);
  border-radius:var(--radius-lg,6px);overflow:hidden;}
/* intestazioni: banda scura con testo chiaro (prima erano oro su bianco,
   illeggibili con i temi scuri del browser — richiesta 25/08) */
.inv-flow-table th{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:#f3efe6;
  background:var(--ink,#2c2a26);text-align:left;padding:8px 10px;border-bottom:1px solid var(--line,#d8d0c0);}
/* colonne numeriche: intestazione e celle allineate a destra */
.inv-flow-table th.num,.inv-flow-table td.num{text-align:right;}
/* intestazione di gruppo (es. un finanziamento con 3 sotto-colonne) */
.inv-flow-table th.grp{text-align:center;}
/* separatore verticale fra gruppi di colonne */
.inv-flow-table td.colsep{border-left:1px solid var(--line,#d8d0c0);}
.inv-flow-table th.colsep{border-left:1px solid rgba(255,255,255,.25);}
.inv-flow-table td{padding:5px 6px;border-bottom:1px solid var(--line,#eee);}
.inv-flow-table input,.inv-flow-table select{width:100%;padding:7px 8px;font-size:13.5px;
  border:1px solid transparent;border-radius:3px;background:transparent;font-family:inherit;box-sizing:border-box;}
.inv-flow-table input:focus,.inv-flow-table select:focus{outline:none;border-color:var(--gold,#9a7b3f);background:#fff;}
.inv-flow-table input.neg{color:var(--red,#b0392f);}
.inv-flow-table input.pos{color:#059669;}
.inv-flow-del{background:none;border:none;cursor:pointer;font-size:14px;opacity:.55;padding:4px 6px;}
.inv-flow-del:hover{opacity:1;}
.inv-flow-tot{font-size:12.5px;color:var(--ink-soft,#6b6455);margin:8px 2px 0;}
/* punto 6 (01/09): griglia orizzontale dei flussi — il tempo sulle colonne,
   le voci sulle righe. La colonna delle voci resta ferma mentre si scorre
   lungo gli anni; le cifre sono a larghezza fissa cosi' le colonne si
   leggono incolonnate. */
.inv-grid-wrap{overflow-x:auto;border:1px solid var(--line,#d8d0c0);border-radius:var(--radius-lg,6px);background:#fff;}
.inv-flow-grid{border-collapse:separate;border-spacing:0;min-width:100%;font-variant-numeric:tabular-nums;}
.inv-flow-grid th,.inv-flow-grid td{padding:5px 8px;border-bottom:1px solid var(--line,#eee);white-space:nowrap;}
.inv-flow-grid thead th{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:#e9f3f1;
  background:#0b2a2e;text-align:right;position:sticky;top:0;z-index:2;}
.inv-flow-grid th.inv-grid-voce{text-align:left;position:sticky;left:0;z-index:3;background:#0b2a2e;}
.inv-flow-grid tbody th.inv-grid-voce{font-size:12.5px;font-weight:600;text-transform:none;letter-spacing:0;
  color:var(--ink,#1a1a1a);background:#fff;border-right:1px solid var(--line,#d8d0c0);z-index:1;}
.inv-flow-grid td.num,.inv-flow-grid th.num{text-align:right;}
.inv-flow-grid td.inv-grid-totcol,.inv-flow-grid th.inv-grid-totcol{border-left:1px solid var(--line,#d8d0c0);font-weight:600;}
.inv-flow-grid input{width:100%;min-width:88px;padding:5px 6px;font-size:13px;text-align:right;
  border:1px solid transparent;border-radius:3px;background:transparent;font-family:inherit;box-sizing:border-box;}
.inv-flow-grid input:focus{outline:none;border-color:var(--gold,#9a7b3f);background:#fff;}
.inv-flow-grid input.neg,.inv-flow-grid .neg{color:var(--red,#b0392f);}
.inv-flow-grid input.pos,.inv-flow-grid .pos{color:#059669;}
.inv-flow-grid .inv-grid-zero{color:#b6b0a2;}
/* cella con piu' flussi: un pulsante, non un campo — il numero e' la somma
   e si apre l'elenco per correggere la voce giusta */
.inv-flow-grid .inv-grid-multi{width:100%;text-align:right;padding:4px 6px;font-family:inherit;font-size:13px;
  border:1px dashed var(--line,#d8d0c0);border-radius:3px;background:transparent;cursor:pointer;}
.inv-flow-grid .inv-grid-multi:hover{border-style:solid;border-color:var(--gold,#9a7b3f);}
.inv-flow-grid .inv-grid-n{display:inline-block;min-width:16px;margin-left:5px;padding:0 4px;border-radius:8px;
  background:var(--line,#d8d0c0);color:var(--ink,#1a1a1a);font-size:10.5px;font-weight:700;}
.inv-flow-grid tr.inv-grid-somma td,.inv-flow-grid tr.inv-grid-somma th.inv-grid-voce{
  border-top:1px solid var(--line,#d8d0c0);background:rgba(154,123,63,.07);font-weight:600;}
.inv-q{background:#fff;border:1px solid var(--line,#d8d0c0);border-radius:var(--radius-lg,6px);
  padding:12px 14px;margin-bottom:10px;}
.inv-q-area{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--gold,#9a7b3f);font-weight:700;}
.inv-q-text{font-size:13.5px;color:var(--ink,#1a1a1a);margin:3px 0 8px;}
.inv-q-anchors{display:flex;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--ink-soft,#6b6455);margin:-3px 0 8px;}
.inv-q-anchor b{color:var(--gold,#9a7b3f);font-weight:700;}
.inv-q-opts{display:flex;gap:6px;flex-wrap:wrap;}
.inv-q-opt{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--ink-soft,#6b6455);
  border:1px solid var(--line,#d8d0c0);border-radius:14px;padding:5px 10px;cursor:pointer;background:#fff;}
.inv-q-opt:hover{border-color:var(--gold,#9a7b3f);}
.inv-q-opt input{margin:0;cursor:pointer;}
.inv-q-opt.sel{border-color:var(--gold,#9a7b3f);background:rgba(4,120,87,.08);color:var(--ink,#1a1a1a);font-weight:600;}
.inv-kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;}
/* editor operazione a schede (Fase 1 redesign) */
.inv-tabwrap{position:sticky;top:0;z-index:30;background:var(--paper,#f6f3ec);padding:10px 0 8px;margin-bottom:6px;border-bottom:1px solid var(--line,#d8d0c0);display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;}
.inv-tabbar{display:flex;flex-wrap:wrap;gap:6px;}
.inv-tab{border:1px solid var(--line,#d8d0c0);background:#fff;border-radius:999px;padding:7px 14px;font-size:13px;cursor:pointer;color:var(--ink,#1a1a1a);}
.inv-tab:hover{border-color:var(--gold,#9a7b3f);}
.inv-tab.sel{background:var(--ink,#1a1a1a);border-color:var(--ink,#1a1a1a);color:#fff;font-weight:600;}
.inv-headkpis{font-size:13px;color:var(--ink-soft,#6b6455);white-space:nowrap;overflow-x:auto;}
/* 01/09 sera: il selettore degli scenari e' passato in «Assunzioni e
   flussi», dove stanno le cose che cambia. Perche' da Rischio e Risultati
   si sappia comunque di chi sono i numeri, il nome dello scenario resta
   sempre in vista nella barra fissa. */
.inv-head-scen{font-size:12px;font-weight:600;padding:4px 12px;border-radius:14px;white-space:nowrap;
  border:1px solid var(--gold,#9a7b3f);background:rgba(154,123,63,.1);color:var(--ink,#1a1a1a);}
/* 02/09: il semaforo di stato dell'operazione sta nella barra fissa (P1),
   e dove la scheda non dipende dallo scenario la targhetta si spegne e lo
   dice a parole invece di mostrare un nome fuorviante (P2). */
.inv-head-scen.op{border-color:var(--line,#d8d0c0);background:#fff;color:var(--ink-soft,#6b6455);font-weight:500;}
.inv-head-stato{font-size:12px;font-weight:600;padding:4px 12px;border-radius:14px;white-space:nowrap;
  border:1px solid var(--line,#d8d0c0);background:#fff;color:var(--ink-soft,#6b6455);}
.inv-head-stato.att{border-color:#c9a227;background:rgba(201,162,39,.14);color:var(--ink,#1a1a1a);}
.inv-head-stato.ok{border-color:#059669;background:rgba(5,150,105,.12);color:var(--ink,#1a1a1a);}
.inv-head-stato.no{border-color:var(--red,#b0392f);background:rgba(176,57,47,.1);color:var(--ink,#1a1a1a);}
.inv-headkpis b{font-family:var(--sans);font-size:14.5px;color:var(--ink,#1a1a1a);}
.inv-headkpis b.pos{color:#059669;}
.inv-headkpis b.neg{color:var(--red,#b0392f);}
/* sintesi esecutiva con badge (Fase 3) */
.inv-execsum{display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--line,#d8d0c0);border-left-width:5px;border-radius:var(--radius-lg,6px);padding:14px 16px;margin-bottom:12px;}
.inv-execsum.ok{border-left-color:#059669;}
.inv-execsum.warn{border-left-color:#c9a227;}
.inv-execsum.bad{border-left-color:var(--red,#b0392f);}
.inv-execsum-badge{flex:0 0 auto;font-size:11px;font-weight:800;letter-spacing:.08em;padding:5px 10px;border-radius:999px;color:#fff;white-space:nowrap;margin-top:2px;}
.inv-execsum.ok .inv-execsum-badge{background:#047857;}
.inv-execsum.warn .inv-execsum-badge{background:#c9a227;}
.inv-execsum.bad .inv-execsum-badge{background:var(--red,#b0392f);}
.inv-execsum-text{font-size:14px;line-height:1.5;color:var(--ink,#1a1a1a);}
.inv-execsum-notes{font-size:12.5px;color:var(--ink-soft,#6b6455);margin-top:4px;}
.inv-chart-caption{font-size:12px;color:var(--ink-soft,#8a8477);margin:2px 0 6px;}
.inv-chartkey{display:inline-block;width:10px;height:10px;border-radius:2px;vertical-align:baseline;margin-right:2px;}
.inv-tabpanel{display:none;}
.inv-tabpanel.on{display:block;}
/* elenco operazioni a pipeline */
.inv-oplist-group{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--gold,#9a7b3f);font-weight:700;margin:14px 0 6px;}
.inv-oplist-group:first-child{margin-top:0;}
.inv-oplist-count{display:inline-block;background:rgba(4,120,87,.12);border-radius:999px;padding:1px 8px;margin-left:4px;}
.inv-kpirows{background:#fff;border:1px solid var(--line,#d8d0c0);border-radius:var(--radius-lg,6px);padding:2px 16px;}
.inv-kpirow{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:11px 0;border-bottom:1px solid #f0ece2;}
.inv-kpirow:last-child{border-bottom:none;}
.inv-kpirow-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--gold,#9a7b3f);font-weight:700;}
.inv-kpirow-sub{font-size:11.5px;color:var(--ink-soft,#8a8477);margin-top:2px;max-width:680px;}
.inv-kpirow-val{font-size:21px;font-weight:700;color:var(--ink,#1a1a1a);font-family:var(--sans);white-space:nowrap;}
.inv-kpirow-val.pos{color:#059669;}
.inv-kpirow-val.neg{color:var(--red,#b0392f);}
.inv-kpi{background:#fff;border:1px solid var(--line,#d8d0c0);border-radius:var(--radius-lg,6px);padding:12px 14px;}
.inv-kpi-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--gold,#9a7b3f);font-weight:700;}
.inv-kpi-val{font-size:19px;font-weight:700;color:var(--ink,#1a1a1a);margin-top:3px;font-family:var(--sans);}
.inv-kpi-val.pos{color:#059669;}
.inv-kpi-val.neg{color:var(--red,#b0392f);}
.inv-kpi-sub{font-size:11px;color:var(--ink-soft,#8a8477);margin-top:2px;}
.inv-breakdown{background:#fff;border:1px solid var(--line,#d8d0c0);border-radius:var(--radius-lg,6px);
  padding:12px 14px;font-size:13px;color:var(--ink,#1a1a1a);}
.inv-breakdown-row{display:flex;justify-content:space-between;gap:10px;padding:3px 0;}
.inv-breakdown-row.tot{border-top:1px solid var(--line,#d8d0c0);margin-top:6px;padding-top:8px;font-weight:700;}
.inv-warn{background:rgba(192,57,43,.07);border:1px solid rgba(192,57,43,.25);border-radius:var(--radius-lg,6px);
  padding:10px 14px;font-size:12.5px;color:var(--ink,#1a1a1a);margin-bottom:10px;}
.inv-note{font-size:11.5px;color:var(--ink-soft,#8a8477);margin-top:8px;}

/* ============ SCHERMATA DI LOGIN ============
   Modale per scelta, non residuo (O7c, 21/08/2026): lo stesso DOM è la porta
   d'ingresso da sloggato e l'editor del profilo aperto sopra la Home da
   loggato, quindi deve coprire — in-flow finirebbe accanto al pannello. */
.auth-overlay{position:fixed;inset:0;z-index:var(--z-auth);display:none;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#0b2a2e 0%,#15434a 100%);padding:20px;}
.auth-overlay.on{display:flex;}
/* a schermo intero il contenuto sottostante (sidebar/dashboard) non deve generare una barra
   di scorrimento sulla pagina: la schermata di login/progetti resta sempre perfettamente centrata */
body:has(.auth-overlay.on){overflow:hidden;}
.auth-error{text-align:left;font-size:12.5px;color:var(--red,#b0392f);margin:-10px 2px 14px;min-height:16px;}
/* INF-019: avviso di scadenza per inattività — sopra tutto, schermata di
   login inclusa (con cui di norma non convive: appare solo da loggati) */
.idle-warn{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:calc(var(--z-auth) + 1);display:none;
  align-items:center;gap:14px;width:max-content;max-width:calc(100vw - 28px);padding:10px 14px;border-radius:var(--radius-lg);
  background:var(--card);color:var(--ink);border:1px solid var(--amber);border-left:4px solid var(--amber);
  box-shadow:var(--shadow);font-size:13.5px;}
.idle-warn.on{display:flex;}
.idle-warn strong{font-variant-numeric:tabular-nums;}
.idle-warn .btn{margin:0;white-space:nowrap;}
/* INF-019: modale di step-up (riconferma password/TOTP prima delle
   operazioni sensibili) — sopra qualunque schermata, avviso idle incluso */
.stepup-modal{position:fixed;inset:0;z-index:calc(var(--z-auth) + 2);display:none;align-items:center;justify-content:center;
  padding:16px;background:rgba(10,14,20,.55);}
.stepup-modal.on{display:flex;}
.stepup-card{background:var(--card);color:var(--ink);border-radius:var(--radius-lg);box-shadow:var(--shadow);
  padding:22px 24px;width:min(420px,100%);text-align:left;}
.stepup-title{margin:0 0 6px;font-size:18px;font-weight:600;}
.stepup-reason{margin:0 0 16px;font-size:13.5px;color:var(--ink-soft,var(--ink));line-height:1.45;}
.stepup-card .start-input{margin-bottom:10px;}
.stepup-card .auth-error{margin:0 2px 4px;}
.stepup-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:10px;}
.stepup-actions .btn{margin:0;}
.auth-forgot{text-align:right;font-size:12.5px;margin:10px 2px 14px;}
.auth-forgot a{color:#0b2a2e;font-weight:600;cursor:pointer;text-decoration:none;}
.auth-forgot a:hover{text-decoration:underline;text-decoration-color:#0fa38f;text-decoration-thickness:2px;}
.auth-switch{font-size:13px;color:var(--ink-soft,#6b6455);margin-top:18px;}
.auth-switch a{color:#0b2a2e;font-weight:600;text-decoration:none;cursor:pointer;}
.auth-switch a:hover{text-decoration:underline;text-decoration-color:#0fa38f;text-decoration-thickness:2px;}
/* 14/09: login nei colori del marchio — etichette petrolio, fuoco e link in acqua */
.auth-overlay .start-field-label,.auth-screen .start-field-label{color:#0b2a2e;}
.auth-overlay .start-input:focus,.auth-screen .start-input:focus{border-color:#0fa38f;box-shadow:0 0 0 3px rgba(15,163,143,.18);}
.auth-discover a{color:#0b2a2e;font-weight:600;text-decoration:none;}
.auth-discover a:hover{text-decoration:underline;text-decoration-color:#0fa38f;text-decoration-thickness:2px;}
.auth-owner{font-size:10px;line-height:1.45;text-align:center;color:var(--ink-soft,#6b6455);margin-top:30px;opacity:.7;}
.start-card.wide{max-width:560px;}

/* ============ PLANCIA PRINCIPALE (post-login) ============ */
.dashboard-card{max-width:780px;text-align:left;padding:28px 30px 22px;}
.dash-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding-bottom:18px;margin-bottom:8px;border-bottom:1px solid var(--line);}
.dash-brand{display:flex;align-items:center;gap:12px;}
/* 14/09: icona ritagliata (viewBox 32 32 88 80), alta quanto titolo + sottotitolo (39px) */
.dash-brand-icon{width:43px;height:39px;flex-shrink:0;color:#0b2a2e;}
.dash-brand-word{font-size:22px;line-height:1;margin-bottom:2px;}
/* 19/09 (Matteo): testata del piano Cash — nome del piano grande, sotto la
   società ben leggibile e il gruppo; valuta e orizzonte stanno nelle Impostazioni */
#cashPlanOverlay #cashPlanTitle{font-size:30px;font-weight:800;line-height:1.1;margin-bottom:6px;}
#cashPlanOverlay #cashPlanSubtitle{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;font-size:16px;color:#3d4a55;}
#cashPlanOverlay #cashPlanSubtitle:empty{display:none;}
.cash-plan-company{font-weight:700;font-size:17px;color:#0b2a2e;}
.cash-plan-group{font-size:14px;font-weight:600;color:#1e7f86;background:rgba(30,127,134,.10);border-radius:999px;padding:2px 10px;}
@media (max-width:600px){#cashPlanOverlay #cashPlanTitle{font-size:24px;}.cash-plan-company{font-size:16px;}}
/* 14/09: marchio del modulo in cima a ogni pagina di B-Plan, Invest e Cash (module-brand.js) */
.mod-brand{display:flex;align-items:center;gap:8px;margin:0 0 12px;}
.mod-brand-icon{width:24px;height:22px;flex-shrink:0;color:#0b2a2e;}
.brand-word.mod-brand-word{font-size:15px;line-height:1;margin:0;}
.dash-logout{flex:0 0 auto;color:var(--red)!important;}
.dash-section{margin:20px 0 0;}
.dash-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;
  flex-wrap:wrap;margin-bottom:12px;}
.dash-section-title{font-size:15px;font-weight:700;color:var(--ink);margin:0;
  font-family:var(--sans);}
.dash-section-actions{display:flex;gap:8px;flex-wrap:wrap;}
.dash-proj-tools{display:flex;gap:10px;margin-bottom:12px;flex-wrap:wrap;}
.dash-search{flex:1;min-width:200px;padding:9px 12px;font-size:14px;}
.dash-sort{flex:0 0 auto;width:auto;padding:9px 12px;font-size:13.5px;cursor:pointer;}
.dash-profile{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);padding:14px 16px;}
.dash-profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px 24px;}
.dash-profile-item{display:flex;flex-direction:column;gap:2px;min-width:0;}
.dash-profile-lbl{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--gold);font-weight:700;}
.dash-profile-val{font-size:var(--fs-lg);color:var(--ink);font-weight:600;overflow:hidden;text-overflow:ellipsis;}
/* 19/09: «Dati personali» modificabili nella pagina, con la foto
   (profile-data.js). La pagina del profilo e' sempre .shell-dark. */
.prof-head{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:14px;}
.prof-foto{width:88px;height:88px;border-radius:50%;overflow:hidden;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  background:rgba(44,201,178,.16);border:2px solid rgba(44,201,178,.45);}
.prof-foto img{width:100%;height:100%;object-fit:cover;display:block;}
.prof-foto-ini{font-size:28px;font-weight:700;letter-spacing:.02em;color:#2cc9b2;}
.prof-foto-az{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.prof-foto-az .fld-hint{flex-basis:100%;margin:0;}
.prof-foto-carica{cursor:pointer;position:relative;}
.prof-foto-file{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;pointer-events:none;}
.prof-foto-carica:focus-within{outline:2px solid #2cc9b2;outline-offset:2px;}
.prof-campi{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px 18px;}
.prof-campo{display:flex;flex-direction:column;gap:4px;min-width:0;}
.prof-campo.wide{grid-column:span 2;}
.prof-in{width:100%;box-sizing:border-box;padding:7px 9px;font-size:14px;border:1px solid var(--line);border-radius:4px;background:#fff;color:var(--ink);font-family:inherit;}
.prof-in.up{text-transform:uppercase;}
.prof-ro{padding:7px 0;font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;}
.prof-sotto{margin-top:16px;padding-top:12px;border-top:1px solid rgba(128,128,128,.25);}
.prof-sotto > .dash-profile-lbl{display:block;margin-bottom:8px;}
.prof-facolt{text-transform:none;letter-spacing:0;font-weight:400;opacity:.8;margin-left:6px;}
.prof-salva{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;}
.prof-salva .fld-hint{margin:0;}
table.prof-org-tab{min-width:0;width:100%;max-width:680px;table-layout:fixed;border-collapse:separate;border-spacing:0;font-size:14px;
  border:1px solid rgba(128,128,128,.3);border-radius:8px;overflow:hidden;}
.prof-org-tab col.c-org{width:58%;}
.prof-org-tab col.c-ruolo{width:42%;}
.prof-org-tab th,.prof-org-tab td{text-align:left;vertical-align:middle;padding:9px 14px;border-bottom:1px solid rgba(128,128,128,.2);}
.prof-org-tab td{overflow-wrap:anywhere;}
.prof-org-tab tbody tr:last-child td{border-bottom:0;}
.prof-org-tab th + th,.prof-org-tab td + td{border-left:2px solid rgba(44,201,178,.45);}
.prof-org-tab th{position:static;white-space:normal;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em;font-weight:700;
  background:rgba(44,201,178,.12);color:#0b2a2e;}
.prof-org-tab td.prof-org-nome{font-weight:600;}
.prof-ruolo{display:inline-block;padding:2px 10px;border-radius:999px;background:rgba(11,42,46,.08);border:1px solid rgba(11,42,46,.18);
  font-size:13px;font-weight:600;white-space:nowrap;}
.shell-dark .prof-in{background:var(--shell-paper);border-color:var(--shell-line-strong);color:var(--shell-ink);}
.shell-dark .prof-in:focus{outline:none;border-color:#2cc9b2;}
.shell-dark .prof-ro,.shell-dark .prof-org-tab td{color:var(--shell-ink);}
.shell-dark .prof-org-tab th{color:var(--shell-ink-faint);background:rgba(44,201,178,.10);}
.shell-dark .prof-ruolo{background:rgba(44,201,178,.14);border-color:rgba(44,201,178,.4);color:var(--shell-ink);}
@media (max-width:600px){
  .prof-org-tab col.c-org,.prof-org-tab col.c-ruolo{width:50%;}
  .prof-ruolo{white-space:normal;}
  .prof-org-tab th{letter-spacing:.03em;padding:9px 10px;}
}
/* 19/09 sera: la foto si centra nel cerchio prima di salvarla */
.prof-crop-frame{position:relative;width:200px;height:200px;border-radius:50%;overflow:hidden;flex:0 0 auto;background:#fff;
  cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;box-shadow:0 0 0 3px rgba(44,201,178,.6);}
.prof-crop-frame.presa{cursor:grabbing;}
.prof-crop-frame:focus-visible{outline:2px solid #2cc9b2;outline-offset:5px;}
.prof-crop-img{position:absolute;left:0;top:0;max-width:none;pointer-events:none;}
.prof-crop-az{max-width:360px;}
.prof-crop-zoom{display:flex;align-items:center;gap:8px;flex-basis:100%;}
.prof-crop-zoom input{flex:1;min-width:0;accent-color:#2cc9b2;}
@media (max-width:600px){
  .prof-campo.wide{grid-column:auto;}
  .prof-campi{grid-template-columns:1fr;}
}
.dash-new-actions{display:flex;gap:10px;flex-wrap:wrap;}
.dash-new-actions .start-btn{flex:1;min-width:200px;width:auto;}
.dash-new-actions .start-open-btn{flex:1;min-width:200px;width:auto;}
/* variante compatta: il bottone non si allarga su tutta la riga */
.dash-new-actions .start-btn-compact{flex:0 0 auto;min-width:150px;margin:0;padding:11px 28px;}
.overlay-footer-row{display:flex;align-items:center;gap:10px;margin-top:14px;}
.overlay-footer-row .start-open-btn{flex:1;}
@media(max-width:560px){
  .dashboard-card{padding:22px 18px;}
  .dash-new-actions .start-btn,.dash-new-actions .start-open-btn{min-width:100%;}
}

/* ============ AREA AMMINISTRAZIONE ============ */
.admin-card{max-width:760px;}
/* `.admin-topbar-actions` è sparita con l'ultimo comando della testata
   ("← Progetti", O4): nessun altro elemento la usava. */
.admin-content{text-align:left;margin-top:18px;}
/* Hub: schede delle sezioni */
.admin-hub{display:grid;grid-template-columns:1fr;gap:10px;}
.admin-hub-card{display:flex;align-items:center;gap:14px;width:100%;text-align:left;cursor:pointer;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 18px;
  transition:border-color .15s,background .15s,box-shadow .15s;font-family:inherit;}
.admin-hub-card:hover{border-color:var(--gold);background:var(--paper);box-shadow:var(--shadow);}
.admin-hub-icon{font-size:26px;line-height:1;flex-shrink:0;}
.admin-hub-txt{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0;}
.admin-hub-title{font-size:15px;font-weight:700;color:var(--ink);}
.admin-hub-desc{font-size:12.5px;color:var(--ink-soft);}
.admin-hub-arrow{font-size:18px;color:var(--ink-soft);flex-shrink:0;}
/* Intestazione sotto-sezione */
.admin-sec-head{display:flex;align-items:center;gap:12px;margin-bottom:14px;}
.admin-sec-title{font-size:16px;font-weight:700;color:var(--ink);margin:0;
  font-family:var(--sans);display:flex;align-items:center;gap:8px;}
.admin-sec-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:20px;
  padding:0 7px;border-radius:10px;background:var(--band);color:#fff;font-size:11px;font-weight:600;
  font-family:var(--sans);}
.admin-search{width:100%;padding:9px 12px;font-size:13.5px;margin-bottom:12px;}
.admin-row-open{flex:0 0 auto;font-size:12px;font-weight:600;color:var(--gold);opacity:0;transition:opacity .15s;}
.cloud-project-row.admin-row:hover .admin-row-open{opacity:1;}
/* PF9: classi proprie di admin.js, non condivise con lo scheletro Home.
   Topbar, pulsanti, righe e badge arrivano gia' da PF7/PF8 per discendenza. */
.shell-dark .admin-card{background:var(--shell-paper);}
.shell-dark .admin-hub-card{background:var(--shell-paper-2);border-color:var(--shell-line);}
.shell-dark .admin-hub-card:hover{background:var(--shell-paper-3);border-color:var(--shell-accent);box-shadow:none;}
.shell-dark .admin-hub-title{color:var(--shell-ink);}
.shell-dark .admin-hub-desc,
.shell-dark .admin-hub-arrow{color:var(--shell-ink-faint);}
.shell-dark .admin-sec-title{color:var(--shell-ink);}
.shell-dark .admin-sec-count{background:var(--shell-accent);color:var(--shell-paper);}
.shell-dark .admin-row-open{color:var(--shell-accent);}
.shell-dark .cloud-project-name{color:var(--shell-ink);}
.shell-dark .cloud-project-date{color:var(--shell-ink-faint);}
/* Occhio «mostra password»: l'utente controlla quello che ha scritto prima di
   premere Accedi o Registrati. Il tasto sta dentro il campo, a destra. */
.pwd-wrap{position:relative;}
.pwd-wrap .start-input{padding-right:44px;}
.pwd-eye{position:absolute;top:0;right:0;height:100%;width:42px;display:flex;align-items:center;
  justify-content:center;background:none;border:0;padding:0;margin:0;cursor:pointer;
  color:var(--ink-soft,#8a8477);}
.pwd-eye:hover{color:var(--gold,#9a7b3f);}
.pwd-eye:focus-visible{outline:2px solid var(--gold,#9a7b3f);outline-offset:-3px;border-radius:3px;}
.pwd-ico{display:block;width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round;}
.pwd-eye .pwd-ico-barrato{display:none;}
.pwd-eye.is-on .pwd-ico-occhio{display:none;}
.pwd-eye.is-on .pwd-ico-barrato{display:block;}
@media(max-width:520px){.pwd-eye{width:34px;}.pwd-wrap .start-input{padding-right:36px;}.pwd-ico{width:17px;height:17px;}}
.auth-fieldrow{display:flex;gap:12px;margin-bottom:0;}
.auth-fieldrow>div{flex:1;min-width:0;}
.auth-hint{text-align:left;font-size:12px;color:var(--ink-soft,#8a8477);margin:6px 2px 16px;}
.auth-checkbox-row{display:flex;align-items:flex-start;gap:8px;text-align:left;font-size:12.5px;
  color:var(--ink-soft,#6b6455);margin:6px 2px 18px;line-height:1.4;}
.auth-checkbox-row input{margin-top:2px;flex:0 0 auto;}
.auth-checkbox-row a{color:#0b2a2e;font-weight:600;text-decoration-color:#0fa38f;}
.auth-btn-row{display:flex;gap:10px;}
.auth-btn-row .btn{flex:1;padding:13px;font-size:15px;font-weight:600;}

.btn.mini{padding:5px 10px;font-size:12px;border-radius:3px;}

/* selettore destinazione apporto soci (leva) */
.fin-leva-eq-dest{display:flex;align-items:center;gap:10px;margin:8px 0;flex-wrap:wrap;}
.fin-leva-eq-dest-lbl{font-size:12.5px;font-weight:600;color:var(--ink);}
.fin-leva-eq-dest select{min-width:240px;}

/* banner disponibilità liquide negative */
.cash-warning{background:rgba(176,0,0,.07);border:1px solid var(--red);border-radius:3px;
  padding:12px 14px;margin:10px 0;color:var(--red);font-size:13px;line-height:1.5;}
.cash-warning strong{font-weight:700;}

/* Leva: campo imposte con selettore euro/% */
.fin-leva-imp-wrap{display:flex;gap:8px;align-items:center;}
.fin-leva-imp-wrap input{flex:1;}
.fin-leva-imp-mode{min-width:120px;flex:0 0 auto;}
.fin-leva-iva-toggle{margin:10px 0;font-size:13px;background:rgba(4,120,87,.08);padding:8px 10px;border-radius:3px;}

/* menu riempimento assistito driver */
.driver-fill-select{font-size:11px;padding:2px 4px;border:1px solid var(--line);border-radius:3px;background:#fff;color:var(--gold);cursor:pointer;max-width:130px;}
.driver-fill-select:hover{background:rgba(4,120,87,.06);}

/* Pannello variazioni fiscali (riprese in aumento/diminuzione) */
.riprese-panel{margin-top:18px;background:var(--paper-2,#f3ede0);border:1px solid var(--line);border-radius:3px;padding:16px 18px;}
.riprese-head h3{margin:0 0 6px;font-size:16px;color:var(--ink);font-family:var(--sans);}
.riprese-intro{font-size:12.5px;color:var(--ink-soft);line-height:1.5;margin:0 0 14px;}
.riprese-table{width:100%;border-collapse:collapse;font-size:13.5px;margin-bottom:12px;}
.riprese-table th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--gold);padding:4px 6px;border-bottom:1px solid var(--line);}
.riprese-table td{padding:4px 6px;vertical-align:middle;}
.rip-in{width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:3px;background:#fff;font:inherit;font-size:13px;box-sizing:border-box;}
.rip-in:focus{outline:none;border-color:var(--gold);}
.rip-importo{text-align:right;}
.riprese-table td:nth-child(2){width:120px;}
.riprese-table td:nth-child(3),.riprese-table td:nth-child(4),.riprese-table td:nth-child(5){width:130px;}
.riprese-table td:last-child{width:36px;text-align:center;}
.riprese-empty{font-size:13px;color:var(--ink-soft);padding:10px 0 14px;font-style:italic;}

/* Barra importazione PDF nell'apertura */
.import-pdf-bar{margin:10px 0 16px;padding:12px 14px;background:rgba(4,120,87,.06);border:1px dashed var(--gold);border-radius:3px;}
.import-pdf-hint{display:block;font-size:12px;color:var(--ink-soft);margin-top:6px;line-height:1.4;}

/* Overlay assistente importazione */
.import-overlay{position:fixed;inset:0;z-index:var(--z-modal);display:none;align-items:center;justify-content:center;background:rgba(43,43,43,.55);padding:20px;}
.import-overlay.on{display:flex;}
.import-card{background:var(--paper,var(--paper-2));border-radius:3px;max-width:720px;width:100%;max-height:88vh;display:flex;flex-direction:column;box-shadow:0 24px 60px rgba(0,0,0,.4);}
.import-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line);}
.import-head h2{margin:0;font-size:20px;font-family:var(--sans);color:var(--ink);}
.import-close{background:none;border:none;font-size:26px;cursor:pointer;color:var(--ink-soft);line-height:1;}
.import-body{padding:18px 22px;overflow-y:auto;}
.import-loading{text-align:center;padding:40px;font-size:15px;color:var(--ink-soft);}
.import-empty{padding:20px;font-size:14px;color:var(--ink-soft);line-height:1.5;}
.import-intro{font-size:13px;color:var(--ink-soft);line-height:1.5;margin:0 0 16px;}
.import-grid{display:flex;flex-direction:column;gap:2px;}
.import-group{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--gold);font-weight:700;margin:14px 0 6px;}
.import-line{display:grid;grid-template-columns:1fr 1.3fr auto;gap:10px;align-items:center;padding:3px 0;}
.import-lbl{font-size:13px;color:var(--ink);}
.import-sel{padding:6px 8px;border:1px solid var(--line);border-radius:3px;background:#fff;font-size:12px;max-width:100%;}
.import-preview{font-size:12px;font-weight:600;color:var(--green);min-width:80px;text-align:right;}
.import-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;padding-top:16px;border-top:1px solid var(--line);}

/* Pannello del bilancio di apertura letto da un PDF: una riga per voce del
   prospetto, con la tendina di destinazione. Serve piu' larghezza della
   scheda normale, e su schermo stretto la tabella scorre da sola. */
.import-card-larga{max-width:1100px;}
.obpdf-top{display:flex;align-items:center;gap:10px;margin:0 0 14px;flex-wrap:wrap;}
.obpdf-top label{font-size:12px;font-weight:600;color:var(--ink);}
.obpdf-colsel{padding:6px 8px;border:1px solid var(--line);border-radius:3px;background:#fff;font-size:12px;}
.obpdf-tab{width:100%;border-collapse:collapse;font-size:12.5px;}
.obpdf-tab th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-weight:700;padding:6px 8px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--paper,var(--paper-2));}
.obpdf-tab td{padding:4px 8px;border-bottom:1px solid var(--line-soft,var(--line));vertical-align:middle;}
.obpdf-tab tr.obpdf-no td{opacity:.5;}
.obpdf-ck{width:28px;text-align:center;}
.obpdf-cod{white-space:nowrap;font-family:var(--mono,monospace);font-size:11.5px;color:var(--ink-soft);}
.obpdf-imp{text-align:right;white-space:nowrap;font-weight:600;}
.obpdf-sel{width:100%;max-width:360px;padding:4px 6px;border:1px solid var(--line);border-radius:3px;background:#fff;font-size:12px;}
@media(max-width:820px){.obpdf-tab{min-width:680px;}.import-card-larga .import-body{overflow-x:auto;}}

/* Ambiti di attività */
.ambiti-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px;}
@media(max-width:820px){.ambiti-grid{grid-template-columns:1fr;}}
.ambito-card{display:flex;gap:11px;align-items:flex-start;padding:14px 15px;border:1px solid var(--line);border-radius:3px;background:var(--card);cursor:pointer;transition:border-color .15s,background .15s;}
.ambito-card:hover{border-color:var(--line-strong);}
.ambito-card.on{border-color:var(--gold);background:rgba(4,120,87,.05);}
.ambito-card input{margin-top:2px;flex-shrink:0;width:16px;height:16px;cursor:pointer;accent-color:var(--gold);}
.ambito-body{display:flex;flex-direction:column;gap:5px;}
.ambito-tit{font-size:13.5px;font-weight:700;color:var(--ink);letter-spacing:-.01em;}
.ambito-desc{font-size:12px;color:var(--ink-soft);line-height:1.45;}

/* Sezione commesse immobiliari */
.commessa-card{padding:18px 20px;}
.commessa-head{display:flex;align-items:center;gap:10px;margin-bottom:16px;}
.commessa-nome{flex:1;font-size:16px;font-weight:700;letter-spacing:-.01em;padding:8px 10px;border:1px solid transparent;border-radius:3px;background:transparent;color:var(--ink);font-family:var(--serif);}
.commessa-nome:hover{border-color:var(--line);}
.commessa-nome:focus{outline:none;border-color:var(--gold);background:#fff;}
.commessa-grid{display:grid;grid-template-columns:2fr 1.2fr 1fr;gap:14px;margin-bottom:16px;}
@media(max-width:820px){.commessa-grid{grid-template-columns:1fr;}}
.commessa-summary{display:flex;flex-wrap:wrap;gap:22px;padding:14px 16px;background:var(--paper-2);border-radius:3px;margin-bottom:14px;}
.cs-item{display:flex;flex-direction:column;gap:3px;}
.cs-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft);font-weight:600;}
.cs-val{font-size:15px;font-weight:700;color:var(--ink);}
.cs-val.pos{color:var(--green);}
.cs-val.neg{color:var(--red);}
.cs-margin{margin-left:auto;padding-left:22px;border-left:1px solid var(--line);}
.commessa-dett{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);}
.commessa-table{width:100%;border-collapse:collapse;font-size:13.5px;}
.commessa-table th{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);padding:7px 6px;text-align:center;border-bottom:1px solid var(--line);font-weight:600;}
.commessa-table th:first-child{text-align:left;width:150px;}
.commessa-table td{padding:5px 6px;}
.ct-lbl{font-size:13.5px;color:var(--ink);font-weight:600;white-space:nowrap;}
.ct-hint{font-weight:400;color:var(--ink-soft);font-size:12px;}
.ct-in{width:100%;min-width:62px;padding:5px 6px;border:1px solid var(--line);border-radius:3px;font-size:13.5px;text-align:right;background:#fff;box-sizing:border-box;}
.ct-in:focus{outline:none;border-color:var(--gold);}
/* Schede di amministratori, sindaci e soci (12/09 sera): prima erano tabelle
   a 5-6 colonne che nella card «Modifica società» (560px) lasciavano 50px al
   nome; ora una scheda per persona con i campi etichettati su righe. */
.anag-schede{display:flex;flex-direction:column;gap:10px;margin-bottom:10px;}
.anag-scheda{border:1px solid var(--line);border-radius:var(--radius-lg);padding:8px 12px 0;background:rgba(0,0,0,.015);}
.anag-scheda-testa{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;}
.anag-scheda-n{font-size:10.5px;font-weight:700;color:var(--ink-soft);letter-spacing:.05em;text-transform:uppercase;}
.anag-scheda .del-row-btn{float:none;opacity:.6;margin:0;}
.anag-scheda .del-row-btn:hover{opacity:1;}
.anag-scheda .field,.anag-scheda .field-row .field{margin-bottom:10px;}
.anag-scheda .anag-check{display:flex;align-items:center;gap:6px;min-height:34px;margin:0;}
.anag-check{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink);cursor:pointer;padding:6px 0;}
.anag-check input{width:15px;height:15px;accent-color:var(--gold);cursor:pointer;flex-shrink:0;}
.anag-check .hint{font-size:11px;color:var(--ink-soft);}
.anag-estera{margin:2px 0 6px;}
.empty-state{text-align:center;padding:26px 20px;}

/* pro-rata IVA */
.prorata-box{padding:4px;}
.prorata-tit{font-size:13.5px;font-weight:700;color:var(--ink);margin-bottom:6px;letter-spacing:-.01em;}
.prorata-desc{font-size:12px;color:var(--ink-soft);line-height:1.45;margin-bottom:12px;}
.prorata-anni{display:flex;gap:10px;flex-wrap:wrap;}
.pa-item{display:flex;flex-direction:column;gap:2px;padding:8px 14px;background:var(--paper-2);border-radius:3px;min-width:80px;}
.pa-anno{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);font-weight:600;}
.pa-val{font-size:16px;font-weight:700;color:var(--gold);}
/* commesse: campi aggiuntivi */
.chk-inline{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink);cursor:pointer;padding:7px 0;}
.chk-inline input{width:15px;height:15px;accent-color:var(--gold);cursor:pointer;}
.fld-hint{font-size:11px;color:var(--ink-soft);line-height:1.4;margin-top:3px;}
.ct-descr{width:100%;min-width:130px;padding:5px 7px;border:1px solid var(--line);border-radius:3px;font-size:12px;box-sizing:border-box;}
.ct-sel{width:100%;min-width:120px;padding:5px 6px;border:1px solid var(--line);border-radius:3px;font-size:11.5px;background:#fff;box-sizing:border-box;}
.ct-descr:focus,.ct-sel:focus{outline:none;border-color:var(--gold);}
.wc-in-wide{min-width:110px;}

/* ============================================================
   COMPONENTI BASE (INF-014/B4) — estratti dai pattern ricorrenti
   (fin-in, cesp-in, wc-in, ct-in/ct-descr/ct-sel, rip-in, import-sel,
   ecc. sopra ripetono lo stesso input di testo con piccole varianti).
   Adozione opportunistica: i moduli esistenti restano sulle proprie
   classi finché non vengono ritoccati; il codice nuovo usa queste.
   ============================================================ */
.ds-input{
  font-family:var(--sans);font-size:var(--text-base);color:var(--ink);
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:6px 8px;outline:none;width:100%;box-sizing:border-box;
  transition:border-color .15s,box-shadow .15s;
}
.ds-input:focus{border-color:var(--gold);box-shadow:0 0 0 2px rgba(4,120,87,.15);}
.ds-input.num{text-align:right;font-variant-numeric:tabular-nums;}
select.ds-input{
  -webkit-appearance:none;appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%235b574c' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 8px center;padding-right:26px;
}

.ds-card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:var(--space-5);box-shadow:var(--shadow);
}

/* Modulo Verifiche ("Revisore") — docs/piano-fase1-modulo-verifiche.md */
.ver-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--red);color:#fff;font-size:10px;font-weight:700;margin-left:6px;}
.ver-summary{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px;}
.ver-chip{font-size:11.5px;font-weight:600;padding:4px 10px;border-radius:12px;background:var(--paper-2);border:1px solid var(--line);color:var(--ink-soft);}
.ver-chip.ver-err{color:var(--red);border-color:var(--red);}
.ver-chip.ver-warn{color:var(--gold);border-color:var(--gold);}
.ver-chip.ver-ok{color:var(--green);border-color:var(--green);}

/* C1: badge stato colorati versioni Cash, sul modello di .ver-chip sopra */
.cash-vstatus-badge{display:inline-flex;align-items:center;font-size:11.5px;font-weight:600;padding:4px 10px;border-radius:12px;background:var(--paper-2);border:1px solid var(--line);color:var(--ink-soft);white-space:nowrap;}
.cash-vstatus-badge.review{color:var(--amber);border-color:var(--amber);}
.cash-vstatus-badge.approved{color:var(--green);border-color:var(--green);}
.cash-vstatus-badge.operative{background:var(--green);border-color:var(--green);color:#fff;}
.cash-vstatus-badge.superseded{color:var(--ink-soft);border-color:var(--line);opacity:.65;}
.cash-vstatus-badge.archived{color:var(--ink-soft);border-color:var(--line);opacity:.5;}

/* C3: matrice pivot categorie×periodi Cash, sticky header riga + sticky
   prima colonna sul modello di .stmt-table th{position:sticky;top:0} e
   th.voce-col{position:sticky;left:0} (tabelle statement Plan). */
.cash-pivot-wrap{overflow:auto;max-height:420px;border:1px solid var(--line);border-radius:var(--radius);margin-bottom:12px;}
.cash-pivot-table{width:100%;border-collapse:collapse;font-size:13.5px;}
.cash-pivot-table th{position:sticky;top:0;z-index:2;background:#0b2a2e;color:#e9f3f1;padding:8px 10px;text-align:right;font-size:12px;letter-spacing:.03em;text-transform:uppercase;font-weight:600;border-bottom:1px solid var(--line);white-space:nowrap;}
.cash-pivot-table td{padding:6px 10px;border-bottom:1px solid var(--line);white-space:nowrap;}
.cash-pivot-rowhead{position:sticky;left:0;z-index:1;background:var(--paper);border-right:1px solid var(--line);font-weight:600;}
.cash-pivot-corner{position:sticky;left:0;top:0;z-index:3;background:#0b2a2e;color:#e9f3f1;border-right:1px solid var(--line);}

/* C5: stesso trattamento sticky (header riga, sul modello di P1
   .stmt-table th) esteso a tutte le commessa-table di Cash, per coerenza
   visiva di fine modulo. Scoping a .cash-overlay (contenitore comune ai
   due overlay Cash) per non toccare .commessa-table altrove (Plan:
   commesse.js, setup.js). Sfondo/z-index identici a .cash-pivot-table th
   (C3) per restare coerenti fra le tabelle Cash. */
.cash-overlay .commessa-table th{position:sticky;top:0;z-index:2;background:#0b2a2e;color:#e9f3f1;}
.cash-pivot-total td{border-top:2px solid var(--line-strong);background:var(--paper-2);}
.cash-pivot-total .cash-pivot-rowhead{background:var(--paper-2);}
.ver-area{margin-bottom:20px;}
.ver-area h3{font-size:14px;margin:0 0 8px;color:var(--ink);}
.ver-row{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:3px;background:var(--card);margin-bottom:6px;}
.ver-icon{flex-shrink:0;font-size:14px;line-height:1.4;width:18px;text-align:center;}
.ver-row.ver-err .ver-icon{color:var(--red);}
.ver-row.ver-warn .ver-icon{color:var(--gold);}
.ver-row.ver-info .ver-icon{color:var(--ink-soft);}
.ver-row.ver-ok .ver-icon{color:var(--green);}
.ver-row.ver-na .ver-icon{color:var(--ink-soft);}
.ver-row.ver-na{opacity:.6;}
.ver-titolo{font-size:13px;font-weight:600;color:var(--ink);}
.ver-rif{font-weight:400;color:var(--ink-soft);font-size:11.5px;}
.ver-dettaglio{font-size:12.5px;color:var(--ink-soft);line-height:1.5;margin-top:2px;}

/* Relazione descrittiva — capitoli narrativi del business plan */
.rel-group{margin-bottom:26px;}
.rel-group>h3{font-size:14px;margin:0 0 4px;color:var(--ink);}
.rel-group>p.rel-group-sub{font-size:12.5px;color:var(--ink-soft);line-height:1.5;margin:0 0 12px;}
.rel-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 18px;}
.rel-cap{border:1px solid var(--line);border-radius:3px;background:var(--card);padding:14px 16px;margin-bottom:10px;}
.rel-cap-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:6px;}
.rel-cap-num{font-size:11px;font-weight:700;color:var(--gold);letter-spacing:.06em;}
.rel-cap-tit{font-size:13.5px;font-weight:600;color:var(--ink);}
.rel-cap-count{margin-left:auto;font-size:11px;color:var(--ink-soft);white-space:nowrap;}
.rel-cap-hint{font-size:12px;color:var(--ink-soft);line-height:1.5;margin:0 0 8px;}
.rel-cap textarea{
  width:100%;box-sizing:border-box;display:block;resize:vertical;min-height:90px;line-height:1.6;
  font-family:var(--sans);font-size:14px;color:var(--ink);
  background:var(--paper-2);border:1px solid var(--line);border-radius:3px;
  padding:9px 12px;outline:none;transition:border-color .15s,box-shadow .15s;
}
.rel-cap textarea:focus{background:var(--card);border-color:var(--gold);box-shadow:0 0 0 3px rgba(4,120,87,.15);}
.rel-all{display:flex;flex-wrap:wrap;gap:8px 18px;}
.rel-all label{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--ink);cursor:pointer;}
.rel-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;border-top:1px solid var(--line);padding-top:18px;}
.rel-actions-hint{font-size:12px;color:var(--ink-soft);line-height:1.5;}
.rel-actions button[disabled]{opacity:.6;cursor:progress;}

/* Cash #23 — cruscotto multi-piano: righe cliccabili e sparkline */
.cash-dashboard-table td{padding:6px 4px;vertical-align:middle;border-bottom:1px solid var(--line);}
.cash-dashboard-table th:first-child{width:auto;}
.cash-dashboard-row:hover td{background:var(--paper-2);}
.cash-sparkline{display:inline-block;vertical-align:middle;}

/* ============================================================
   Cash #27 — onboarding e mobile
   ============================================================ */
/* onboarding: empty state della home e box "Primi passi" nel piano */
.cash-onboard{
  position:relative;background:var(--paper-2);border:1px solid var(--line);
  border-left:3px solid var(--gold);border-radius:var(--radius);
  padding:18px 20px;line-height:1.6;
}
.cash-onboard-plan{margin:18px 0 0;}
.cash-onboard-title{font-weight:700;font-size:15px;color:var(--ink);margin:0 0 4px;}
.cash-onboard-sub{font-size:13px;color:var(--ink-soft);margin:0 0 6px;}
.cash-onboard-steps{margin:0;padding-left:20px;font-size:13px;color:var(--ink);}
.cash-onboard-steps li{margin:4px 0;}
.cash-onboard-actions{margin-top:12px;}
.cash-onboard-close{
  position:absolute;top:8px;right:10px;border:none;background:none;cursor:pointer;
  font-size:13px;line-height:1;color:var(--ink-soft);padding:4px;
}
.cash-onboard-close:hover{color:var(--ink);}

/* mobile: solo dentro Cash (percorso e markup invariati, cambia la resa).
   Le tabelle scorrono già nei loro wrapper overflow-x. */
@media (max-width: 700px){
  .cash-overlay .dashboard-card{padding:18px 14px;}
  .cash-overlay .dash-section-head{flex-wrap:wrap;gap:8px;}
  .cash-overlay .dash-section-actions{width:100%;}
  /* tocco: bersagli più comodi e niente zoom automatico iOS (font < 16px) */
  .cash-overlay .btn{min-height:40px;}
  .cash-overlay input,
  .cash-overlay select,
  .cash-overlay textarea{font-size:16px;}
  .cash-overlay .cash-pivot-wrap{max-height:60vh;}
}

/* #28 — chip degli aggiustamenti per categoria nel pannello scenario */
.cash-scen-chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:3px 8px;border:1px solid var(--line);border-radius:999px;background:var(--paper-2)}
.cash-scen-chip-x{border:0;background:none;cursor:pointer;color:var(--ink-soft);font-size:11px;padding:0 2px;line-height:1}
.cash-scen-chip-x:hover{color:var(--red)}

/* ============================================================
   HOME DI PIATTAFORMA — riscrittura (cruscotto, non catalogo)

   In coda al foglio di proposito: sovrascrive per specificita' e ordine il
   blocco .shell-dark di PF5/PF6/PF7 piu' sopra, senza doverlo riaprire.

   Tre problemi che si vedevano a occhio nudo sulla vecchia Home:
     - larghezza. La card di piattaforma arriva a 1560px: su un monitor
       largo una lista di tre righe si stirava per un metro e la riga di
       lettura diventava impraticabile. Qui il corpo si ferma a 1120px.
     - gerarchia. Tutti i titoli di sezione erano maiuscoletto 11px grigio
       tenue: nulla era piu' importante di nient'altro, e la pagina si
       leggeva come un modulo da compilare.
     - semaforo. Non esisteva un colore che dicesse "questo va guardato
       adesso": rosso/ambra/blu sono ora riservati alla fascia di
       attenzione, tutto il resto resta grigio.
   ============================================================ */

/* Riga di lettura. Si stringe la SCHEDA, non solo il corpo: testata del
   profilo, contenuto e piè di pagina devono restare incolonnati, e il
   fondo scuro continua a coprire tutta la finestra perche' lo dipinge
   .shell-dark.pf-screen-wide, non la scheda. Il profilo (#/profile) usa
   la stessa misura della Home, e ha bisogno delle stesse regole di
   fondo/padding perche' il blocco PF7 le aveva scritte sull'ID
   #homeBody: uscendo dalla Home se le sarebbe perse tutte. */
#homeOverlay.pf-screen-wide > .start-card,
#profileOverlay.pf-screen-wide > .start-card{max-width:1180px;}
.shell-dark #homeBody,
.shell-dark #profileBody{background:var(--shell-paper);padding:0 30px 40px;}
.shell-dark #homeBody{padding-top:4px;}

/* Titoli di sezione: restano piccoli e maiuscoletti (sono etichette, non
   intestazioni di documento), ma con un filo di contrasto in piu' — sul
   fondo scuro --shell-ink-faint spariva. */
.shell-dark .dash-section-title{color:var(--shell-ink-soft);letter-spacing:.09em;}
.shell-dark .dash-section{margin-top:36px;}

/* ---- Richiede la tua attenzione ----
   L'unica zona colorata della schermata. Il colore e' portato da una barra
   verticale a sinistra della riga (.home-att-dot), non dal fondo: su fondo
   scuro un riempimento rosso a tutta riga urla e diventa illeggibile, una
   costa di 3px si vede con la coda dell'occhio e basta. */
.shell-dark .home-att-count{font-family:var(--sans);font-size:var(--fs-sm);font-weight:700;
  min-width:20px;height:20px;padding:0 6px;border-radius:999px;display:inline-flex;
  align-items:center;justify-content:center;background:var(--shell-danger);color:#fff;}
.shell-dark .home-att-list{border:1px solid var(--shell-line);border-radius:var(--radius-lg);
  overflow:hidden;}
.shell-dark .home-att-row{display:flex;align-items:center;gap:12px;padding:14px 18px 14px 0;
  border-bottom:1px solid var(--shell-line);background:var(--shell-paper);cursor:pointer;
  transition:background .12s;text-align:left;width:100%;border-left:none;border-right:none;
  border-top:none;}
.shell-dark .home-att-row:last-child{border-bottom:none;}
.shell-dark .home-att-row:hover{background:var(--shell-paper-3);}
.shell-dark .home-att-dot{width:3px;align-self:stretch;flex:0 0 auto;margin-right:6px;
  background:var(--shell-accent);}
.shell-dark .home-att-row.sev-danger .home-att-dot{background:var(--shell-danger);}
.shell-dark .home-att-row.sev-warn .home-att-dot{background:var(--shell-warn);}
.shell-dark .home-att-icon{width:30px;height:30px;flex:0 0 auto;border-radius:8px;display:flex;
  align-items:center;justify-content:center;font-size:var(--fs-lg);background:var(--shell-accent-soft);}
.shell-dark .home-att-row.sev-danger .home-att-icon{background:rgba(255,107,94,.14);}
.shell-dark .home-att-row.sev-warn .home-att-icon{background:var(--shell-warn-soft);}
.shell-dark .home-att-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.shell-dark .home-att-name{font-family:var(--sans);font-weight:700;font-size:15px;
  color:var(--shell-ink);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;}
.shell-dark .home-att-sub{font-size:var(--fs-md);color:var(--shell-ink-soft);}
.shell-dark .home-att-row.sev-danger .home-att-sub{color:var(--shell-danger);}
.shell-dark .home-att-row.sev-warn .home-att-sub{color:var(--shell-warn);}
.shell-dark .home-att-go{color:var(--shell-ink-faint);font-size:15px;flex:0 0 auto;}
.shell-dark .home-att-row:hover .home-att-go{color:var(--shell-accent);}
.shell-dark .home-att-more{font-size:var(--fs-md);color:var(--shell-ink-faint);margin-top:10px;}

/* ---- Primo accesso: tre inviti, uno per modulo ----
   13/09 (chiesto da Matteo): schede in evidenza — filetto acqua in testa,
   ombra, bordo pieno — e simbolo del modulo accanto a un titolo grande. */
.shell-dark .home-start-grid{display:grid;gap:16px;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));}
.shell-dark .home-start-card{display:flex;flex-direction:column;gap:12px;text-align:left;
  padding:22px 22px 20px;border:1px solid var(--shell-line-strong);border-top:3px solid #2cc9b2;
  border-radius:var(--radius-lg);background:var(--shell-paper-2);cursor:pointer;font-family:var(--sans);
  box-shadow:0 8px 24px rgba(0,0,0,.32);transition:border-color .12s,background .12s,transform .12s,box-shadow .12s;}
.shell-dark .home-start-card:hover{border-color:#2cc9b2;background:var(--shell-paper-3);
  transform:translateY(-2px);box-shadow:0 12px 30px rgba(0,0,0,.4);}
.shell-dark .home-start-head{display:flex;align-items:center;gap:12px;}
.shell-dark .home-start-icon{font-size:32px;line-height:1;flex:0 0 auto;}
.shell-dark .home-start-name{font-family:var(--sans);font-size:20px;font-weight:700;line-height:1.2;
  color:var(--shell-ink);letter-spacing:-.015em;}
.shell-dark .home-start-desc{font-size:var(--fs-lg);color:var(--shell-ink-soft);line-height:1.45;}

/* ---- Il mio profilo (#/profile) ----
   Le regole di fondo scuro erano scritte su #homeBody: la sezione, uscita
   dalla Home, se le sarebbe portate via tutte. */
.shell-dark #profileBody .dash-section:first-child{margin-top:28px;}

/* ---- Progetti (#/projects) — elenco trasversale ----
   Righe e liste riusano .home-recent-* (PF6): stessa anatomia di
   "Riprendi da dove hai lasciato", solo senza il limite di un elemento
   per modulo. Qui solo il corpo e il conteggio nel titolo di sezione. */
.shell-dark #projectsBody,
.shell-dark #companiesBody{background:var(--shell-paper);padding:0 30px 40px;}
.shell-dark .companies-sub{margin:28px 0 16px;font-size:var(--fs-lg);color:var(--shell-ink-soft);line-height:1.5;}
.shell-dark #projectsBody .dash-section:first-child{margin-top:28px;}
.shell-dark .proj-count{margin-left:8px;font-size:var(--fs-sm);font-weight:600;color:var(--shell-ink-faint);}

/* ---- Schermi stretti ---- */
@media (max-width:720px){
  .shell-dark #homeBody,
  .shell-dark #profileBody,
  .shell-dark #projectsBody,
  .shell-dark #companiesBody{padding:0 16px 28px;}
  .shell-dark .home-att-row{padding:12px 14px 12px 0;gap:10px;}
  .shell-dark .home-att-name{white-space:normal;}
  .shell-dark .home-recent-list{grid-template-columns:1fr;}
}
/* sezioni richiudibili della scheda Assunzioni (13/09): chiusa resta la testata */
.dash-section.inv-sez-chiusa > :not(.dash-section-head){display:none !important;}
.dash-section.inv-sez-chiusa .dash-section-actions{display:none;}
.dash-section.inv-sez-chiusa .dash-section-head{margin-bottom:0;}
.inv-sez-toggle{flex:0 0 auto;width:22px;margin-right:6px;padding:0;border:0;background:transparent;color:var(--gold,#9a7b3f);
  font-size:14px;line-height:1;cursor:pointer;font-family:inherit;}
.inv-sez-toggle:hover{color:var(--ink,#1a1a1a);}
.inv-sez-toggle:focus-visible{outline:1px solid var(--gold,#9a7b3f);border-radius:2px;}
.inv-sez .dash-section-head{justify-content:flex-start;}
.inv-sez .dash-section-head .dash-section-actions{margin-left:auto;}
/* calendario delle date di recupero delle altre società (13/09) */
.inv-member-line{border:1px solid var(--border,#e4dfd3);border-radius:8px;padding:10px 12px;margin-bottom:10px;}
.inv-member-line-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px;}
.inv-member-line .inv-member-dates{width:auto;min-width:360px;margin-bottom:6px;}
/* dettaglio esplodibile della griglia (richiesta 03/09): il ▸ apre le voci
   di dettaglio sotto la riga, sempre in griglia */
.inv-flow-grid .inv-grid-toggle{display:inline-block;width:18px;margin-right:4px;padding:0;border:0;background:transparent;
  color:var(--gold,#9a7b3f);font-size:12px;line-height:1;cursor:pointer;font-family:inherit;vertical-align:middle;}
.inv-flow-grid .inv-grid-toggle:hover{color:var(--ink,#1a1a1a);}
.inv-flow-grid .inv-grid-toggle:focus-visible{outline:1px solid var(--gold,#9a7b3f);border-radius:2px;}
.inv-flow-grid .inv-grid-toggle-vuoto{cursor:default;}
.inv-flow-grid tr.inv-grid-sub th.inv-grid-voce{padding-left:30px;font-weight:400;font-size:13px;color:#5f5a50;
  background:#faf8f3;max-width:340px;overflow:hidden;text-overflow:ellipsis;}
.inv-flow-grid tr.inv-grid-sub td{background:#faf8f3;font-size:13px;}
.inv-flow-grid tr.inv-grid-sub input{font-size:12.5px;}

/* ---- Cash 04/09: chiusura del mese (striscia dei mesi + scheda a tre
   blocchi) e prospetto B/P/C esplodibile ---- */
.cash-month-strip{ display:flex; gap:7px; flex-wrap:wrap; margin:6px 0 14px }
/* 18/09 (Matteo, punto 1): i mesi hanno la forma dei tasti delle schede
   (.cash-tab): angoli a 8px, fondo carta, ombra leggera, il mese scelto in
   petrolio; chiuso = verde con ✓, da chiudere = ambra */
.cash-month-chip{ font:inherit; font-size:13px; font-weight:600; padding:7px 13px; border-radius:8px; border:1px solid var(--line); background:var(--card); color:var(--ink-soft); cursor:pointer; letter-spacing:.01em; box-shadow:0 1px 2px rgba(14,27,46,.06); transition:transform .08s,background .15s,border-color .15s,box-shadow .15s }
.cash-month-chip:hover{ border-color:#0fa38f; color:var(--ink); box-shadow:var(--shadow) }
.cash-month-chip:active{ transform:translateY(1px); box-shadow:none }
.cash-month-chip:focus-visible{ outline:2px solid #0fa38f; outline-offset:2px }
.cash-month-chip.closed{ color:var(--green); border-color:color-mix(in srgb, var(--green) 40%, var(--line)) }
.cash-month-chip.due{ color:var(--amber); border-color:color-mix(in srgb, var(--amber) 55%, var(--line)); background:color-mix(in srgb, var(--amber) 6%, var(--card)) }
.cash-month-chip.current{ color:var(--ink); border-color:var(--line-strong) }
.cash-month-chip.future{ font-weight:500; color:var(--ink-soft) }
.cash-month-chip.sel{ background:#0b2a2e; color:#e9f3f1; border-color:#0b2a2e; opacity:1 }
.cash-month-chip.sel:hover{ background:#15434a; border-color:#15434a }
.cash-month-chip .cash-month-tick{ font-size:12px; margin-left:2px }
.cash-month-chip.sel .cash-month-tick{ color:#7fd8c9 }
/* oltre i 12 mesi: una riga di anni, sotto i mesi dell'anno aperto */
.cash-month-strip[data-years]{ flex-direction:column; gap:8px }
.cash-month-years, .cash-month-row{ display:flex; gap:7px; flex-wrap:wrap }
.cash-month-row{ padding:10px; border:1px solid var(--line); border-radius:10px; background:var(--paper-2) }
.cash-month-year{ font:inherit; font-size:13.5px; font-weight:600; padding:6px 12px 6px 6px; border-radius:8px; border:1px solid var(--line); background:var(--card); color:var(--ink); cursor:pointer; display:inline-flex; align-items:center; gap:8px; box-shadow:0 1px 2px rgba(14,27,46,.06); transition:transform .08s,background .15s,border-color .15s,box-shadow .15s }
.cash-month-year:hover{ border-color:#0fa38f; box-shadow:var(--shadow) }
.cash-month-year:active{ transform:translateY(1px); box-shadow:none }
.cash-month-year:focus-visible{ outline:2px solid #0fa38f; outline-offset:2px }
.cash-month-year-n{ display:inline-flex; align-items:center; justify-content:center; min-width:44px; height:26px; padding:0 6px; border-radius:6px; background:#e3f4f1; color:#0b2a2e; font-variant-numeric:tabular-nums }
.cash-month-year-info{ font-size:12px; font-weight:500; color:var(--ink-soft) }
.cash-month-year.closed .cash-month-year-info{ color:var(--green) }
.cash-month-year-due{ display:inline-flex; align-items:center; justify-content:center; min-width:18px; height:18px; padding:0 5px; border-radius:999px; background:var(--amber); color:#fff; font-size:11px; font-weight:700 }
.cash-month-year-caret{ font-size:11px; color:var(--ink-soft) }
.cash-month-year.open{ background:#0b2a2e; border-color:#0b2a2e; color:#e9f3f1 }
.cash-month-year.open:hover{ background:#15434a; border-color:#15434a }
.cash-month-year.open .cash-month-year-n{ background:#0fa38f; color:#fff }
.cash-month-year.open .cash-month-year-info, .cash-month-year.open .cash-month-year-caret{ color:#bfe3dc }
.cash-month-year.has-sel:not(.open){ border-color:#0fa38f }
.cash-month-card{ border:1px solid var(--line); border-radius:var(--radius); background:var(--paper); padding:12px 14px }
.cash-month-title{ font-size:15px; font-weight:600; color:var(--ink); margin-bottom:10px; display:flex; align-items:center; gap:8px }
.cash-month-state{ font-size:11px; font-weight:500; padding:2px 8px; border-radius:999px; border:1px solid var(--line); color:var(--ink-soft) }
.cash-month-state.closed{ color:var(--green); border-color:color-mix(in srgb, var(--green) 40%, var(--line)) }
.cash-month-state.due{ color:var(--amber); border-color:color-mix(in srgb, var(--amber) 50%, var(--line)) }
.cash-month-grid{ display:grid; grid-template-columns:minmax(180px,1fr) minmax(320px,2fr) minmax(260px,1.6fr); gap:12px; align-items:start }
.cash-month-block{ border:1px solid var(--line); border-radius:var(--radius); background:var(--paper-2); padding:10px 12px; font-size:13.5px; min-width:0 }
.cash-month-block-title{ font-size:12px; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-soft); margin-bottom:8px }
.cash-month-big{ font-size:26px; font-weight:600; color:var(--ink); font-variant-numeric:tabular-nums; line-height:1.1 }
.cash-month-big-unit{ font-size:12.5px; font-weight:400; color:var(--ink-soft) }
.cash-month-warn{ color:var(--amber); font-weight:600; margin-top:4px }
.cash-month-ok{ color:var(--green); font-weight:600; margin-top:4px }
.cash-month-actions{ display:flex; gap:6px; flex-wrap:wrap; margin-top:10px }
.cash-month-table{ font-size:13.5px; white-space:nowrap }

/* ---- Cash 05/09 «Prevedi, registra, chiudi»: 10/09 la striscia «Adesso» in
   testa al piano e' stata tolta (punto 2 del terzo giro). ---- */

/* ---- Cash 09/09: le quattro schede (Impostazioni · Budget · Mese ·
   Lettura). Barra appiccicosa come le schede di Invest; un pannello per
   scheda, uno solo visibile; il puntino oro segna dove sta «Adesso». ---- */
.cash-tabs{ position:sticky; top:0; z-index:30; background:var(--paper); padding:10px 0 10px; margin:14px 0 6px; border-bottom:1px solid var(--line); display:flex; flex-wrap:wrap; gap:8px }
/* 18/09 (proposta B scelta da Matteo): tasti veri, con l'icona a tratto su una
   tessera acqua; la scheda aperta è tutta petrolio, con la tessera in acqua pieno */
.cash-tab{ font:inherit; font-size:13.5px; font-weight:600; padding:6px 15px 6px 6px; border-radius:8px; border:1px solid var(--line); background:var(--card); color:var(--ink); cursor:pointer; display:inline-flex; align-items:center; gap:9px; position:relative; box-shadow:0 1px 2px rgba(14,27,46,.06); transition:transform .08s,background .15s,border-color .15s,box-shadow .15s }
.cash-tab:hover{ border-color:#0fa38f; box-shadow:var(--shadow) }
.cash-tab:active{ transform:translateY(1px); box-shadow:none }
.cash-tab:focus-visible{ outline:2px solid #0fa38f; outline-offset:2px }
.cash-tab.sel{ background:#0b2a2e; border-color:#0b2a2e; color:#e9f3f1 }
.cash-tab.sel:hover{ background:#15434a; border-color:#15434a }
.cash-tab-ico{ flex:none; width:28px; height:28px; border-radius:6px; background:#e3f4f1; color:#0b2a2e; display:inline-flex; align-items:center; justify-content:center; font-size:15px; transition:background .15s,color .15s }
.cash-tab-ico svg{ width:17px; height:17px; display:block }
.cash-tab.sel .cash-tab-ico{ background:#0fa38f; color:#fff }
/* 18/09: riquadri di testo per l'AI con il contatore; aggiornamenti del piano */
/* 19/09 (Matteo, punto 1): larghi quanto la pagina, come le altre sezioni */
.cash-textbox{ display:block; resize:vertical; min-height:72px; width:100%; font:inherit; font-size:13px; box-sizing:border-box }
.cash-counter{ margin-top:3px; font-variant-numeric:tabular-nums }
.cash-counter.low{ color:#b45309; font-weight:600 }
.dash-section-title label{ font:inherit; color:inherit; cursor:pointer }
.cash-upd-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-bottom:2px }
.cash-upd-item{ border:1px solid var(--line); border-radius:8px; background:var(--card); padding:8px 10px; margin-top:8px }
.cash-upd-edit{ border-color:#0fa38f }
.cash-upd-meta{ font-size:12.5px; color:var(--ink-soft) }
.cash-upd-meta b{ color:var(--ink) }
.cash-upd-body{ margin-top:4px; font-size:13px; white-space:pre-wrap; overflow-wrap:anywhere }
.cash-upd-actions{ display:flex; gap:6px; flex-wrap:wrap; margin-top:6px }
.cash-upd-ai{ display:inline-block; font-size:11px; font-weight:600; padding:1px 7px; border-radius:999px; background:#e3f4f1; color:#0b2a2e }
.cash-upd-old{ display:inline-block; font-size:11px; padding:1px 7px; border-radius:999px; background:var(--paper); color:var(--ink-soft) }
.cash-tab-dot{ width:8px; height:8px; border-radius:50%; background:var(--gold); box-shadow:0 0 0 2px var(--paper); display:inline-block }
.cash-tab.sel .cash-tab-dot{ background:#2cc9b2; box-shadow:0 0 0 2px #0b2a2e }
/* 18/09 (Matteo): «Elimina piano» sulla riga delle schede, a destra e ben
   visibile; il selettore ~ lo mostra solo quando _cashTabShow accende .sel
   sul tasto di ⚙️ Impostazioni */
.cash-tab-del{ font:inherit; font-size:13.5px; font-weight:600; margin-left:auto; padding:6px 15px; border-radius:8px; border:1px solid var(--red); background:var(--red); color:#fff; cursor:pointer; display:none; align-items:center; gap:8px; box-shadow:0 1px 2px rgba(14,27,46,.06); transition:transform .08s,background .15s,box-shadow .15s }
#cashTabBtn_impostazioni.sel ~ .cash-tab-del{ display:inline-flex }
.cash-tab-del:hover{ background:#a63324; border-color:#a63324; box-shadow:var(--shadow) }
.cash-tab-del:active{ transform:translateY(1px); box-shadow:none }
.cash-tab-del:focus-visible{ outline:2px solid var(--red); outline-offset:2px }
.cash-panel{ margin-top:4px }

/* ---- Organizzazione a schede (11/09/2026, punto 1) + piramide (punto 2) ---- */
.oa-tabs{ display:flex; flex-wrap:wrap; gap:6px; padding:8px 0 10px; margin:4px 0 10px; border-bottom:1px solid var(--line) }
.oa-tab{ font:inherit; font-size:13px; padding:7px 14px; border-radius:999px; border:1px solid var(--line); background:#fff; color:var(--ink); cursor:pointer; display:inline-flex; align-items:center; gap:7px }
.oa-tab:hover{ border-color:var(--gold) }
.oa-tab:focus-visible{ outline:2px solid var(--gold); outline-offset:2px }
.oa-tab.sel{ background:var(--ink); border-color:var(--ink); color:#fff; font-weight:600 }
.oa-tab-ico{ font-size:13px }
.oa-panel[hidden]{ display:none }
.oa-help-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(260px, 1fr)); gap:10px }
.oa-help{ border:1px solid var(--line); border-radius:10px; padding:10px 12px; font-size:12.5px; line-height:1.45; background:#fff; color:var(--ink) }
.oa-help > b{ display:block; margin-bottom:4px; font-size:13px }
/* 19/09 sera: piramidi ridisegnate, coerenti con la piattaforma. Ogni
   piramide è una carta con la testata del colore del suo modulo (struttura
   petrolio, B-Plan acqua, Invest arancio, Cash verde, come nella Home),
   fili dello stesso colore su un fondo a puntini, persone come tessere con
   il cerchio delle iniziali; chi guida la piramide sta su fondo petrolio. */
.oa-pyramid{ --oa-acc:#0b2a2e; --oa-acc-ink:#0b2a2e; --oa-acc-soft:rgba(11,42,46,.07); --oa-wire:rgba(11,42,46,.32);
  margin-bottom:16px; background:var(--card); border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow); overflow:hidden }
.oa-pyramid[data-mod="plan"]{ --oa-acc:#2cc9b2; --oa-acc-ink:#0f8a7a; --oa-acc-soft:rgba(44,201,178,.12); --oa-wire:rgba(20,168,150,.55) }
.oa-pyramid[data-mod="invest"]{ --oa-acc:#ff7a3d; --oa-acc-ink:#c2521c; --oa-acc-soft:rgba(255,122,61,.11); --oa-wire:rgba(232,105,47,.5) }
.oa-pyramid[data-mod="cash"]{ --oa-acc:#059669; --oa-acc-ink:#047857; --oa-acc-soft:rgba(5,150,105,.10); --oa-wire:rgba(5,150,105,.5) }
.oa-pyr-head{ display:flex; align-items:center; gap:11px; padding:11px 14px; border-bottom:1px solid var(--line); border-left:4px solid var(--oa-acc); background:linear-gradient(90deg, var(--oa-acc-soft), transparent 75%) }
.oa-pyr-ico{ flex:none; width:32px; height:32px; border-radius:9px; display:grid; place-items:center; background:var(--oa-acc); color:#fff; font-size:15px; font-weight:700; box-shadow:0 2px 6px rgba(14,27,46,.18) }
.oa-pyramid[data-mod="org"] .oa-pyr-ico{ background:var(--band); font-size:16px }
.oa-pyr-htxt{ min-width:0 }
.oa-pyramid-title{ font-size:14.5px; font-weight:700; color:var(--ink); line-height:1.25 }
.oa-pyr-sub{ font-size:11.5px; color:var(--ink-soft); margin-top:1px }
.oa-pyr-body{ padding:10px 14px 12px }
.oa-pyr-note{ margin:0 0 8px }
.oa-tree{ overflow-x:auto; padding:18px 10px 14px; border-radius:10px; background-color:var(--paper); background-image:radial-gradient(rgba(14,27,46,.09) 1px, transparent 1.2px); background-size:16px 16px; border:1px solid var(--line) }
.oa-tree ul{ padding-top:22px; position:relative; display:flex; justify-content:center; margin:0; padding-left:0; list-style:none; width:max-content; min-width:100% }
.oa-tree li{ text-align:center; list-style:none; position:relative; padding:22px 7px 0 7px }
.oa-tree li::before, .oa-tree li::after{ content:''; position:absolute; top:0; right:50%; border-top:2px solid var(--oa-wire); width:50%; height:22px }
.oa-tree li::after{ right:auto; left:50%; border-left:2px solid var(--oa-wire) }
.oa-tree li:only-child::after, .oa-tree li:only-child::before{ display:none }
.oa-tree li:only-child{ padding-top:0 }
.oa-tree li:first-child::before, .oa-tree li:last-child::after{ border:0 none }
.oa-tree li:last-child::before{ border-right:2px solid var(--oa-wire); border-radius:0 10px 0 0 }
.oa-tree li:first-child::after{ border-radius:10px 0 0 0 }
.oa-tree ul ul::before{ content:''; position:absolute; top:0; left:50%; border-left:2px solid var(--oa-wire); width:0; height:22px; margin-left:-1px }
.oa-tree > ul{ padding-top:0 }
.oa-tree > ul > li{ padding-top:0 }
.oa-tree > ul > li::before, .oa-tree > ul > li::after{ display:none }
.oa-node{ position:relative; display:inline-flex; align-items:center; gap:9px; text-align:left; vertical-align:top; padding:8px 12px 8px 8px; border:1px solid var(--line); border-bottom:3px solid var(--oa-acc); border-radius:11px; background:#fff; color:var(--ink); font-size:12.5px; font-weight:600; min-width:150px; max-width:230px; line-height:1.3; box-shadow:0 1px 2px rgba(14,27,46,.06), 0 3px 10px rgba(14,27,46,.06); transition:transform .12s ease, box-shadow .12s ease, border-color .12s ease }
.oa-txt{ min-width:0; overflow-wrap:anywhere }
.oa-node small{ display:block; font-size:11px; font-weight:400; color:var(--ink-soft); margin-top:2px }
.oa-node.top{ background:var(--band); color:var(--band-text); border-color:var(--band); border-bottom-color:var(--oa-acc) }
.oa-node.top small{ color:rgba(233,243,241,.72) }
.oa-node.me{ box-shadow:0 0 0 2px #2cc9b2, 0 3px 12px rgba(44,201,178,.25) }
.oa-you{ display:inline-block; margin-left:6px; padding:0 6px; border-radius:999px; background:#2cc9b2; color:#062a26; font-size:10px; font-weight:700; line-height:16px; vertical-align:1px; text-transform:uppercase; letter-spacing:.03em }
.oa-av{ flex:none; width:32px; height:32px; border-radius:50%; display:inline-grid; place-items:center; font-size:12px; font-weight:700; letter-spacing:.02em; color:#fff; background:#0b2a2e }
.oa-av.sm{ width:20px; height:20px; font-size:9px; margin-right:6px; vertical-align:middle }
.oa-av.t0{ background:#0b2a2e } .oa-av.t1{ background:#14a896 } .oa-av.t2{ background:#e8692f }
.oa-av.t3{ background:#059669 } .oa-av.t4{ background:#3b5b8c } .oa-av.t5{ background:#7a5a9e } .oa-av.t6{ background:#b7791f }
.oa-node.top .oa-av{ box-shadow:0 0 0 2px rgba(233,243,241,.85) }
.oa-node.top .oa-av.t0{ background:#2cc9b2; color:#062a26 }
.oa-grip{ position:absolute; top:3px; right:5px; font-size:12px; line-height:1; color:var(--ink-soft); opacity:.45 }
.oa-node.top .oa-grip{ color:var(--band-text) }
/* 19/09: la struttura si modifica trascinando i riquadri (org-admin.js, _oaDragWire) */
.oa-pyr-drag .oa-pyramid{ position:relative }
.oa-pyr-drag .oa-node, .oa-chip{ user-select:none; -webkit-user-select:none; -webkit-touch-callout:none }
.oa-node.can-move, .oa-chip.can-move{ cursor:grab }
.oa-node.can-move{ padding-right:22px }
.oa-node.can-move:hover{ transform:translateY(-2px); box-shadow:0 6px 16px rgba(14,27,46,.16) }
.oa-node.me.can-move:hover{ box-shadow:0 0 0 2px #2cc9b2, 0 6px 16px rgba(44,201,178,.3) }
.oa-node.can-move:hover .oa-grip{ opacity:1 }
.oa-node.locked, .oa-chip.locked{ cursor:not-allowed }
.oa-node.dragging-src, .oa-chip.dragging-src{ opacity:.35 }
body.oa-dragging, body.oa-dragging *{ cursor:grabbing !important }
.oa-node.drop-ok, .oa-chip.drop-ok{ outline:3px solid var(--green); outline-offset:3px; background:#ecfdf5; color:var(--ink); transform:scale(1.04) }
.oa-node.drop-bad, .oa-chip.drop-bad, .oa-drop-none.drop-bad{ outline:3px solid var(--red); outline-offset:3px; background:#fdecea; color:var(--ink) }
.oa-node.drop-ok small, .oa-node.drop-bad small{ color:var(--ink-soft) }
/* sopra titolo e nota, senza spostare l'albero: il riquadro puntato resta dov'è */
.oa-drop-none{ visibility:hidden; position:absolute; left:8px; right:8px; top:6px; height:44px; z-index:5; display:flex; align-items:center; justify-content:center; text-align:center; padding:0 8px; border:2px dashed var(--line-strong); border-radius:10px; background:rgba(255,255,255,.96); font-size:12px; color:var(--ink-soft) }
body.oa-dragging .oa-drop-none[data-active="1"]{ visibility:visible }
.oa-drop-none.drop-ok{ border-color:var(--green); color:var(--green); background:#ecfdf5 }
.oa-outside{ margin-top:10px; padding:8px 10px; border:1px dashed var(--line-strong); border-radius:10px; font-size:11.5px; color:var(--ink-soft); display:flex; flex-wrap:wrap; gap:6px; align-items:center }
.oa-outside-lbl{ margin-right:2px }
.oa-chip{ display:inline-flex; align-items:center; padding:3px 10px 3px 3px; border:1px solid var(--line); border-radius:999px; background:#fff; color:var(--ink); font-size:11.5px; font-weight:600; box-shadow:0 1px 2px rgba(14,27,46,.06) }
.oa-chip.can-move:hover{ border-color:var(--oa-acc); box-shadow:0 3px 10px rgba(14,27,46,.14) }
.oa-chip.me{ box-shadow:0 0 0 2px #2cc9b2 }
.oa-chip .oa-you{ margin-left:5px }
.oa-drag-hint{ display:flex; gap:12px; align-items:flex-start; margin:0 0 14px; padding:12px 14px; border-radius:12px; background:var(--band); color:var(--band-text); font-size:12.5px; line-height:1.5; box-shadow:var(--shadow) }
.oa-drag-hint b{ color:#fff; font-size:13.5px }
.oa-drag-hint-ico{ flex:none; width:34px; height:34px; border-radius:50%; display:grid; place-items:center; background:#2cc9b2; font-size:17px }
.oa-drag-hint-tel{ display:block; margin-top:4px; color:#8fe3d6; font-weight:600 }
@media (max-width:600px){ .oa-node{ min-width:130px } }
.oa-ghost{ position:fixed; z-index:1200; pointer-events:none; transform:translate(-50%,-120%) rotate(-2deg); background:#fff; color:var(--ink); border:1px solid #2cc9b2; border-radius:11px; padding:7px 12px 7px 8px; font-size:12.5px; font-weight:600; box-shadow:0 12px 28px rgba(14,27,46,.28); max-width:320px }
.oa-ghost .why{ font-weight:400 }
.oa-ghost .why{ display:block; font-size:11px; margin-top:3px; color:var(--ink-soft) }
.oa-ghost.bad{ border-color:var(--red) }
.oa-ghost.bad .why{ color:var(--red) }
.oa-ghost.ok .why{ color:var(--green) }
.oa-drag-bar{ position:fixed; left:50%; bottom:18px; transform:translateX(-50%); z-index:1200; background:var(--band); color:var(--band-text); border-radius:12px; padding:12px 14px; box-shadow:0 10px 30px rgba(0,0,0,.3); display:none; gap:10px; align-items:center; flex-wrap:wrap; width:max-content; max-width:min(760px, calc(100% - 32px)); font-size:13px }
.oa-drag-bar.show{ display:flex }
.oa-drag-bar .txt{ flex:1 1 280px }
.oa-drag-bar .txt small{ display:block; opacity:.75; margin-top:2px }
.oa-drag-bar .btn.ghost{ color:var(--band-text); border-color:rgba(233,243,241,.4) }
.oa-drag-toast{ position:fixed; left:50%; top:14px; transform:translateX(-50%); z-index:1300; background:#fff; color:var(--ink); border:1px solid var(--line-strong); border-radius:10px; padding:8px 12px; font-size:12.5px; box-shadow:var(--shadow); display:none; max-width:min(560px, calc(100% - 32px)) }
.oa-drag-toast.show{ display:block }

.cash-panel[hidden]{ display:none !important }
.cash-grid{ font-size:13.5px }
.cash-grid th, .cash-grid td{ white-space:nowrap }
.cash-grid td.cash-grid-cell.sel{ background:rgba(44,201,178,.10) }
/* 19/09 (Matteo: «quando seleziono un mese il colore nasconde la
   descrizione della colonna»): il fondo chiaro del mese scelto copriva
   quello petrolio dell'intestazione e il testo chiaro spariva. Ora il mese
   scelto è una tessera acqua con testo petrolio; intestazioni più grandi. */
.cash-grid th{ font-size:13px; letter-spacing:.02em; padding:9px 7px }
.cash-grid th.cash-grid-vth{ font-size:13.5px; vertical-align:bottom }
.cash-overlay .cash-grid th.sel{ background:#2cc9b2; color:#0b2a2e; box-shadow:inset 0 -3px 0 #0b6b5e }
.cash-grid th.closed{ color:#a9c4c0 }
.cash-grid-mbtn{ font:inherit; font-size:14px; font-weight:700; border:0; background:transparent; color:inherit; cursor:pointer; padding:2px 0; text-decoration:underline dotted rgba(233,243,241,.45); text-underline-offset:4px }
.cash-grid-mbtn:hover{ text-decoration:underline solid; color:#2cc9b2 }
.cash-grid th.sel .cash-grid-mbtn{ font-size:14.5px; text-decoration:none }
.cash-grid th.sel .cash-grid-mbtn:hover{ color:#0b2a2e }
.cash-grid-mbtn:focus-visible, .cash-grid-ybtn:focus-visible{ outline:2px solid #2cc9b2; outline-offset:2px; border-radius:3px }
.cash-grid th.num{ text-align:right }
/* 19/09: oltre i 12 mesi, la riga degli anni e le colonne «Totale 2027» */
.cash-grid .ystart{ border-left:2px solid rgba(44,201,178,.55) }
.cash-overlay .cash-grid tr.cash-grid-yrow th{ background:#123e43; border-bottom:1px solid rgba(233,243,241,.14) }
.cash-grid th.cash-grid-yth{ text-align:left; padding:6px 8px }
.cash-grid-ybtn{ font:inherit; font-size:15px; font-weight:700; letter-spacing:.03em; border:0; border-radius:999px; background:rgba(44,201,178,.16); color:#e9f3f1; cursor:pointer; padding:3px 12px }
.cash-grid-ybtn small{ font-size:11px; font-weight:600; opacity:.75; margin-left:4px; text-transform:none; letter-spacing:0 }
.cash-grid-ybtn:hover{ background:#2cc9b2; color:#0b2a2e }
.cash-grid th.cash-grid-yth.has-sel .cash-grid-ybtn{ box-shadow:0 0 0 2px #2cc9b2 }
.cash-grid th.cash-grid-yth.shut .cash-grid-ybtn{ background:#2cc9b2; color:#0b2a2e }
.cash-overlay .cash-grid th.cash-grid-ycol{ background:#0b6b5e }
.cash-grid th.cash-grid-ycol.has-sel{ box-shadow:inset 0 -3px 0 #2cc9b2 }
.cash-grid td.cash-grid-ycell{ background:rgba(44,201,178,.08); font-weight:700; min-width:110px }
/* 19/09 sera: la colonna «Totale» di tutto il periodo, sempre in fondo */
.cash-overlay .cash-grid th.cash-grid-gtot, .cash-overlay .cash-grid tr.cash-grid-yrow th.cash-grid-gtot{ background:#2cc9b2; color:#0b2a2e; font-size:14px; font-weight:800; vertical-align:bottom }
.cash-grid td.cash-grid-gcell{ background:rgba(11,42,46,.07); border-left:2px solid #0b6b5e; font-weight:800 }
.cash-grid td.cash-grid-cell{ text-align:right; font-variant-numeric:tabular-nums; min-width:92px; padding:3px 5px }
.cash-grid-in{ width:88px; text-align:right; background:#fff2cc; font-variant-numeric:tabular-nums }
.cash-grid-ro{ display:inline-block; min-width:60px; text-align:right }
.cash-grid-doc{ margin-left:4px; font-size:10px; color:var(--ink-soft); cursor:help }
/* 09/09 (quattro schede, passo 3): mese chiuso = consuntivo con lucchetto;
   scarto dal budget sotto la cella */
.cash-grid td.cash-grid-cell.closed{ background:rgba(0,0,0,.025) }
.cash-grid-real{ opacity:.85 }
.cash-grid-lock{ font-size:9px; opacity:.6 }
.cash-grid-delta{ display:block; font-size:10px; line-height:1.2; margin-top:1px; font-variant-numeric:tabular-nums; cursor:help }
.cash-grid-delta.good{ color:var(--green, #2e7d32) }
.cash-grid-delta.bad{ color:var(--red) }
/* 12/09 (Matteo: «quando aggiungo un flusso dovrei avere un tasto per
   integrare il flusso nel piano e avere la certezza che sia recepito»):
   striscia di conferma sotto il modulo dei flussi o sopra la griglia. */
.cash-flow-added{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px;
  margin:0 0 10px; padding:8px 10px; font-size:13px; line-height:1.35;
  border:1px solid var(--gold); border-radius:8px; background:rgba(212,175,55,.08) }
.cash-flow-added.ok{ border-color:var(--green, #2e7d32); background:rgba(46,125,50,.08) }
.cash-flow-added > div:first-child{ flex:1 1 260px; min-width:200px }
.cash-flow-added-act{ display:flex; flex-wrap:wrap; gap:6px; flex:0 0 auto }
.cash-grid tr.cash-grid-tot td{ font-weight:600; border-top:1px solid var(--line-strong) }
.cash-grid tr.cash-grid-cum td{ font-weight:600; border-top:1px dashed var(--line-strong); background:var(--surface-2, #f6f6f6) }
.cash-grid tr.cash-grid-cum td.warn{ color:#b45309 }
.cash-grid tr.cash-grid-cum td.neg{ color:var(--red, #b91c1c) }
.cash-grid td.neg{ color:var(--red) }
.cash-grid tr.cash-grid-row.nocat td{ color:var(--ink-soft) }
.cash-grid tr.cash-grid-sub td{ background:#faf8f3; text-align:left; white-space:normal }
.cash-grid-subtable{ font-size:13px; border-collapse:collapse; margin-bottom:4px }
.cash-grid tr.cash-grid-sub td.cash-grid-subcell{ vertical-align:top; font-size:12px; padding:3px 5px; text-align:right; min-width:92px; max-width:160px }
.cash-grid tr.cash-grid-sub td.cash-grid-subnote{ vertical-align:top; max-width:220px }
.cash-grid-subflow{ margin-bottom:4px; line-height:1.25 }
.cash-grid-subflow .num{ display:block; font-variant-numeric:tabular-nums; font-weight:600 }
.cash-grid-subflow small{ display:block; opacity:.7; overflow-wrap:anywhere }
.cash-grid-subtable td{ padding:2px 8px 2px 0; border:0; background:transparent }
.cash-grid-subtable td.num{ text-align:right; font-variant-numeric:tabular-nums }
/* 07/09: consuntivo del mese — tendina del mese grande nel titolo, intestazioni
   numeriche allineate a destra come le celle, riquadro «come si carica» */
.cash-cons-mese{ display:inline-block; width:auto; font-size:.95em; font-weight:600; vertical-align:middle; padding:3px 8px }
#cashConsVoci .commessa-table th.num{ text-align:right }
.cash-cons-howto{ font-size:12.5px; padding:8px 12px; margin:0 0 10px; border-left:3px solid var(--gold); background:var(--paper-2); border-radius:0 var(--radius) var(--radius) 0; line-height:1.5 }
.cash-cons-howto-title{ font-weight:600; margin-bottom:2px }
.cash-cons-howto ol{ margin:0; padding-left:1.3em }
.cash-cons-howto li{ margin:2px 0 }
.cash-cons-howto .btn{ margin-left:4px; vertical-align:middle }
/* 07/09: modulo «Nuovo flusso previsto» (punto 6) e pannello «Dal budget» (punto 3) */
.cash-flow-quick{ border:1px solid var(--line); border-radius:8px; padding:8px 10px; margin:0 0 10px; background:var(--surface-2, #f6f6f6) }
.cash-flow-quick-title{ font-weight:600; margin-bottom:6px }
.cash-flow-quick-row{ display:flex; gap:8px; align-items:flex-end; flex-wrap:wrap }
.cash-flow-quick-row label{ display:flex; flex-direction:column; gap:2px; font-size:12px; color:var(--ink-soft) }
.cash-flow-quick-row .fin-in{ min-width:110px }
.cash-flow-quick .fld-hint .btn{ vertical-align:middle }
.cash-cons-budget{ border:1px solid var(--line); border-radius:8px; padding:8px 10px; margin:0 0 10px }
.cash-cons-budget .cash-cons-howto-title .btn{ margin-left:6px; vertical-align:middle }
.cash-grid-add td, .cash-cons-add td{ opacity:.85 }
/* 10/09 cantiere 1a: scheda Gruppo — perimetro, striscia delle viste,
   colonna Gruppo evidenziata, avvisi */
.cash-group-picker{ display:flex; flex-wrap:wrap; gap:6px 14px; margin:0 0 10px; padding:8px 12px; border:1px solid var(--line); border-radius:var(--radius); background:var(--paper-2) }
.cash-group-pick{ display:inline-flex; align-items:center; gap:6px; font-size:13px; cursor:pointer }
.cash-group-pick small{ opacity:.65 }
.cash-group-pick.fixed{ opacity:.8; cursor:default }
.cash-group-strip{ display:flex; flex-wrap:wrap; gap:6px; margin:0 0 10px }
.cash-group-vbtn{ font:inherit; font-size:12.5px; padding:5px 12px; border-radius:999px; border:1px solid var(--line); background:#fff; color:var(--ink); cursor:pointer }
.cash-group-vbtn.sel{ background:var(--ink); border-color:var(--ink); color:#fff; font-weight:600 }
.cash-group-vbtn small{ opacity:.7; font-weight:400 }
.cash-group-table th.cash-group-gcol, .cash-group-table td.cash-group-gcol{ background:rgba(200,160,60,.12); font-weight:600 }
.cash-group-table td.num{ text-align:right; font-variant-numeric:tabular-nums }
.cash-group-warns{ margin:0 0 8px; padding-left:18px }
.cash-group-warn{ color:var(--red) }
.cash-group-ok{ color:var(--green, #2e7d32) }
.cash-group-check{ margin:6px 0 0; opacity:.8 }
.cash-group-elim summary{ cursor:pointer; font-size:13px }
/* 11/09: gruppi nella Home di Cash — la scheda del gruppo contiene le schede delle sue società */
.cash-home-group{ border:1px solid var(--line); border-radius:12px; padding:12px 14px }
.cash-home-group .cash-home-member{ margin:8px 0 0 10px; padding:6px 0 0 12px; border-left:3px solid var(--line) }
.cash-home-group-add{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin:0 0 8px }
.cash-home-group-add:empty{ display:none }
.cash-home-group-add select{ font:inherit; padding:4px 8px; border:1px solid var(--line); border-radius:8px }
/* 11/09 sei punti 1-2: schede di gruppi e società nella Home, cruscotto */
.cash-home-kind{ font-size:12px; letter-spacing:.04em; text-transform:uppercase; color:var(--ink-soft,#8a8477); margin:14px 0 6px }
.cash-home-kind:first-child{ margin-top:0 }
.cash-home-card{ text-decoration:none; color:inherit }
.cash-home-card-main{ display:flex; flex-direction:column; gap:6px; min-width:0 }
.cash-home-chips{ display:flex; flex-wrap:wrap; gap:6px }
.cash-home-chip{ font-size:12px; padding:2px 9px; border-radius:999px; border:1px solid var(--line); background:var(--paper); color:var(--ink) }
.cash-home-back{ margin-bottom:10px }
.cash-home-riepilogo{ margin-bottom:12px }
.cash-ver-row{ display:flex; gap:8px; align-items:center; flex-wrap:wrap }
.cash-ver-chip{ font:inherit; font-size:12.5px; padding:5px 10px; border-radius:999px; border:1px solid var(--line); background:var(--paper); color:var(--ink); cursor:pointer; display:inline-flex; align-items:center; gap:6px }
.cash-ver-chip:hover{ border-color:var(--line-strong) }
.cash-ver-chip.sel{ border-color:var(--ink); box-shadow:inset 0 0 0 1px var(--ink) }
.cash-ver-role{ font-size:10.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-soft) }
/* 09/09 passo 2: riquadro «Approvazione del budget» in testa alla scheda Budget */
.cash-approval{ border-left:3px solid var(--accent, #2e6fdb) }
.cash-approval-state{ font-size:13.5px; line-height:1.5 }
.cash-approval-note, .cash-approval-returned{ margin-top:6px; padding:8px 10px; border-radius:8px; background:rgba(128,128,128,.10); font-size:13px }
.cash-approval-returned{ background:rgba(230,150,30,.14) }
/* 19/09 «✉️ Mandalo anche per email»: la richiesta dalla casella dell'utente (mail-compose.js) */
.cash-approval-mail, .px-mail-box{ margin-top:10px; display:flex; align-items:center; gap:10px 14px; flex-wrap:wrap; padding:12px 14px; border:1px solid rgba(44,201,178,.55); border-left:4px solid #2cc9b2; border-radius:10px; background:rgba(44,201,178,.10); font-size:13.5px; line-height:1.45; color:var(--ink) }
.cash-approval-mail-ico, .px-mail-box-ico{ font-size:24px; line-height:1; flex:0 0 auto }
.cash-approval-mail-txt, .px-mail-box-txt{ flex:1 1 260px; min-width:0 }
.cash-approval-mail-txt b, .px-mail-box-txt b{ display:block; font-size:14.5px; color:#0b2a2e; margin-bottom:2px }
.cash-approval-mail .px-mail .btn, .px-mail-box .px-mail .btn{ font-size:13.5px; font-weight:700; padding:8px 16px; border-radius:6px }
.cash-approval-mail .px-mail .btn.primary, .px-mail-box .px-mail .btn.primary{ background:#2cc9b2; border-color:#2cc9b2; color:#0b2a2e; box-shadow:0 2px 6px rgba(11,42,46,.18) }
.cash-approval-mail .px-mail .btn.primary:hover, .px-mail-box .px-mail .btn.primary:hover{ background:#22b39e; border-color:#22b39e }
.cash-approval-mail .px-mail-more > summary.btn.ghost, .px-mail-box .px-mail-more > summary.btn.ghost{ padding:8px 12px; border-color:#2cc9b2; color:#0b2a2e; background:var(--card) }
.px-mail{ display:inline-flex; align-items:stretch; gap:4px; position:relative; flex-wrap:wrap }
.px-mail-more{ position:relative }
.px-mail-more > summary{ list-style:none; cursor:pointer; user-select:none }
.px-mail-more > summary::-webkit-details-marker{ display:none }
.px-mail-menu{ position:absolute; right:0; top:calc(100% + 4px); z-index:50; min-width:250px; max-width:calc(100vw - 32px); padding:6px; background:var(--card); border:1px solid var(--line-strong); border-radius:var(--radius-lg); box-shadow:var(--shadow); display:flex; flex-direction:column; gap:2px }
.px-mail-menu-head{ padding:4px 8px 6px; font-size:12px; color:var(--ink-soft) }
.px-mail-item{ display:flex; flex-direction:column; align-items:flex-start; gap:1px; width:100%; padding:7px 9px; border:0; border-radius:var(--radius); background:transparent; color:var(--ink); font:inherit; text-align:left; cursor:pointer }
.px-mail-item:hover, .px-mail-item:focus-visible{ background:var(--paper) }
.px-mail-item.on{ box-shadow:inset 3px 0 0 var(--acqua, #2cc9b2) }
.px-mail-item-lbl{ font-size:13.5px; font-weight:500 }
.px-mail-item-hint{ font-size:11.5px; color:var(--ink-soft) }
.cash-approval-panel{ margin-top:10px; padding:10px; border:1px solid rgba(128,128,128,.35); border-radius:8px; display:flex; flex-direction:column; gap:6px }
.cash-approval-panel textarea{ width:100%; box-sizing:border-box; resize:vertical }
.cash-approval-panel-actions{ display:flex; gap:6px; flex-wrap:wrap }
.cash-approval-hist{ margin-top:8px; font-size:12.5px }
.cash-approval-hist summary{ cursor:pointer; color:var(--ink-soft) }
.cash-approval-log{ list-style:none; margin:6px 0 0; padding:0; display:flex; flex-direction:column; gap:4px }
.cash-approval-ev{ display:flex; gap:8px; flex-wrap:wrap; align-items:baseline }
.cash-approval-ev-what{ font-weight:600 }
.cash-approval-ev-who{ color:var(--ink-soft) }
.cash-approval-ev-note{ flex-basis:100%; font-style:italic; opacity:.85 }
/* 09/09 passo 4: elenco Revisioni (scheda Budget) */
.cash-rev-table th, .cash-rev-table td{ white-space:nowrap }
.cash-rev-table .num{ text-align:right; font-variant-numeric:tabular-nums }
.cash-rev-table tr.sel td{ background:rgba(128,128,128,.08) }
.cash-rev-table tr.current td{ border-top:2px solid var(--line-strong, #999) }
.cash-rev-now{ font-weight:600 }
.cash-rev-delta{ cursor:help }
.cash-rev-delta.good{ color:var(--green, #2e7d32) }
.cash-rev-delta.bad{ color:var(--red) }
.cash-ver-adv{ margin-top:8px; font-size:12.5px }
.cash-ver-adv summary{ cursor:pointer; color:var(--ink-soft) }
.cash-month-table td.num, .cash-month-table th.num{ text-align:right; font-variant-numeric:tabular-nums }
.cash-month-table td.pos{ color:var(--green) }
.cash-month-table td.neg{ color:var(--red) }
.cash-month-prop{ display:flex; gap:8px; align-items:flex-start; margin:6px 0; font-size:12.5px; cursor:pointer; line-height:1.4 }
.cash-month-prop input[type=checkbox]{ margin-top:3px; flex:none }
.cash-month-mode{ display:inline-block; width:auto; font-size:12px; padding:2px 6px; margin-left:4px }
.cash-month-preview{ margin:8px 0; padding:8px 10px; border-left:2px solid var(--gold); background:var(--paper); font-size:12.5px; line-height:1.5 }
.cash-month-props-title{ margin-top:8px; font-weight:600 }
.cash-month-reopen-list{ margin:4px 0 6px; padding-left:18px }
.cash-bfc-caret{ font:inherit; font-size:11px; padding:0 4px; border:0; background:transparent; color:var(--ink-soft); cursor:pointer }
.cash-bfc-caret:hover{ color:var(--ink) }
.cash-bfc-table tr.cash-bfc-cat td{ background:rgba(0,0,0,.015) }
.cash-bfc-table tr.cash-bfc-item td{ color:var(--ink-soft); font-size:13px }
.cash-bfc-kind{ display:inline-block; font-size:10px; text-transform:uppercase; letter-spacing:.05em; padding:1px 5px; border-radius:3px; border:1px solid var(--line); color:var(--ink-soft) }
.cash-bfc-kind.actual{ color:var(--green); border-color:color-mix(in srgb, var(--green) 40%, var(--line)) }
.cash-bfc-kind.budget{ color:var(--gold); border-color:color-mix(in srgb, var(--gold) 50%, var(--line)) }
/* 04/09: strati della previsione — abbinato (verde), impegnato (blu), stima (tratteggio) */
.cash-bfc-kind.done{ color:var(--green); border-color:color-mix(in srgb, var(--green) 40%, var(--line)) }
.cash-bfc-kind.committed{ color:#2f5fc4; border-color:color-mix(in srgb, #2f5fc4 45%, var(--line)) }
.cash-bfc-bar{ display:flex; height:4px; margin-top:3px; border-radius:2px; overflow:hidden; background:var(--paper-2) }
.cash-bfc-bar span{ display:block; height:100%; flex:none }
.cash-bfc-bar .done{ background:var(--green) }
.cash-bfc-bar .committed{ background:#2f5fc4 }
.cash-bfc-bar .estimate{ background:repeating-linear-gradient(90deg, var(--line-strong) 0 3px, transparent 3px 6px) }
.cash-bfc-table td .neg{ color:var(--red) }
/* 12/09 (punto 12): scelta del confronto del prospetto che si spiega da sola */
.cash-bfc-picker{display:flex;flex-direction:column;gap:6px;margin-bottom:8px;font-size:12.5px}
.cash-bfc-pick-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.cash-bfc-pick-k{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);min-width:150px}
.cash-bfc-explain{font-size:12.5px;color:var(--ink-soft);margin:0 0 10px;padding:8px 10px;border-left:3px solid var(--gold);background:var(--paper-2);border-radius:0 var(--radius) var(--radius) 0}
/* 12/09 (punto 10): grafici componibili nella scheda Analisi */
.cash-chart-card{border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;margin-bottom:10px;background:var(--paper)}
.cash-chart-ctl{display:flex;gap:6px 12px;flex-wrap:wrap;align-items:center;font-size:12.5px;margin-bottom:6px}
.cash-chart-ctl label{display:inline-flex;gap:4px;align-items:center}
.cash-chart-ctl .start-input{display:inline-block;width:auto}
.cash-chart-chips{display:flex;gap:4px;flex-wrap:wrap;align-items:center;font-size:12px;margin-bottom:6px}
.cash-chart-chip{border:1px solid var(--line);border-radius:999px;padding:2px 9px;background:transparent;color:var(--ink-soft);cursor:pointer;font-size:12px;font-family:inherit}
.cash-chart-chip.on{border-color:var(--gold);color:var(--ink);background:rgba(201,162,77,.14)}
/* 18/09 notte (punto 5): legenda della Curva di liquidità con Budget, Revisioni, Consuntivo */
.cash-cmp-legend{font-size:12.5px;margin:4px 0 6px}
.cash-cmp-legend .cash-chart-chip{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;padding:3px 10px}
.cash-cmp-legend .cash-chart-chip:not(.on){opacity:.7}
.cash-cmp-legend .cash-cmp-base{cursor:default}
.cash-cmp-th{white-space:nowrap}
.cash-cmp-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:middle}
/* 18/09 notte (punto 1): Saldo finale · Entrate · Uscite */
.cash-cmp-measures{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}
.cash-cmp-m{border:0;background:transparent;color:var(--ink-soft);font:inherit;font-size:12.5px;padding:3px 10px;cursor:pointer}
.cash-cmp-m+.cash-cmp-m{border-left:1px solid var(--line)}
.cash-cmp-m.on{background:var(--band);color:var(--band-text);font-weight:600}
.cash-cmp-m:not(.on):hover{color:var(--ink);background:rgba(127,127,127,.08)}
.cash-cmp-sub{display:block;font-weight:400;font-size:11px;color:var(--ink-soft)}
/* 19/09: tabella dei periodi con il confronto a gruppi (Entrate · Uscite · Saldo finale) */
.cash-cmp-table th.cash-cmp-group{text-align:center}
.cash-cmp-table th.cash-cmp-group,.cash-cmp-table .cash-cmp-own{border-left:2px solid var(--line)}
.cash-cmp-table td.cash-cmp-td{background:rgba(127,127,127,.05)}
/* 19/09: scostamento del consuntivo rispetto al riferimento scelto (verde = meglio del previsto, rosso = peggio) */
.cash-cmp-table td.cash-cmp-delta{font-weight:600;white-space:nowrap}
.cash-cmp-table td.cash-cmp-fav{background:rgba(22,163,74,.12);color:var(--green)}
.cash-cmp-table td.cash-cmp-unfav{background:rgba(220,38,38,.10);color:var(--red)}
.cash-cmp-table td.cash-cmp-partial{font-style:italic;opacity:.75}
.cash-cmp-table th.cash-cmp-dth{white-space:nowrap}
.cash-bfc-legend{ font-size:11.5px; color:var(--ink-soft); cursor:help; white-space:nowrap }
.cash-bfc-legend i{ display:inline-block; width:10px; height:6px; border-radius:2px; margin:0 3px 0 8px; vertical-align:middle }
.cash-bfc-legend i.done{ background:var(--green) }
.cash-bfc-legend i.committed{ background:#2f5fc4 }
.cash-bfc-legend i.estimate{ background:repeating-linear-gradient(90deg, var(--line-strong) 0 3px, transparent 3px 6px) }
@media (max-width: 900px){
  .cash-month-grid{ grid-template-columns:1fr }
}

/* ---- Cash: posizione di oggi (04/09/2026, benchmark Agicap punto 8) ----
   Una colonna sola, cifre grandi, bersagli larghi: si legge dal telefono
   senza pizzicare. Stessa carta della schermata Cash (pf-screen-wide). */
.cash-today-col{max-width:560px;margin:0 auto;padding:12px 16px 40px;display:flex;flex-direction:column;gap:14px;font-variant-numeric:tabular-nums}
.cash-today-picker:empty{display:none}
.cash-today-select{width:100%;font-size:16px;padding:10px 12px}
.cash-today-hero{border-radius:14px;padding:18px 18px 16px;background:var(--ink,#1a1d24);color:#fff}
.cash-today-hero.neg{background:#8a1f1f}
.cash-today-label{font-size:12px;letter-spacing:.06em;text-transform:uppercase;opacity:.75}
.cash-today-big{font-size:34px;font-weight:700;line-height:1.15;margin-top:4px;word-break:break-word}
.cash-today-sub{font-size:13px;opacity:.8;margin-top:6px}
.cash-today-card{border:1px solid var(--line,#e3e5ea);border-radius:14px;padding:14px 16px;background:var(--paper-2,#fff)}
.cash-today-h{font-size:15px;font-weight:700;margin:0 0 10px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.cash-today-muted{font-weight:400;font-size:12px;opacity:.6}
.cash-today-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line,#e3e5ea)}
.cash-today-row:first-of-type{border-top:0}
.cash-today-row.late{background:#fff7e6;margin:0 -16px;padding-left:16px;padding-right:16px}
.cash-today-row-main{min-width:0;flex:1}
.cash-today-row-name{font-size:15px;font-weight:600;overflow-wrap:anywhere}
.cash-today-row-meta{font-size:12px;opacity:.65;margin-top:2px}
.cash-today-row-amt{font-size:17px;font-weight:700;white-space:nowrap;text-align:right}
.cash-today-row-amt .cash-today-row-meta{font-weight:400}
.cash-today-row-amt.neg,.cash-today-kpi-v.neg,.cash-today-line b.neg{color:#b42318}
.cash-today-row-amt.pos,.cash-today-kpi-v.pos,.cash-today-line b.pos{color:#1d7a46}
.cash-today-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cash-today-kpi{border-radius:10px;padding:10px 12px;background:var(--paper,#f4f5f7)}
.cash-today-kpi-l{font-size:12px;opacity:.65}
.cash-today-kpi-v{font-size:19px;font-weight:700;margin-top:2px;overflow-wrap:anywhere}
.cash-today-line{font-size:13px;margin-top:10px}
.cash-today-warn{margin-top:10px;padding:10px 12px;border-radius:10px;background:#fff3cd;color:#6b4b00;font-size:13px}
.cash-today-empty{font-size:13px;opacity:.65;padding:6px 0}
.cash-today-foot{text-align:center;font-size:14px;padding:8px 0}
.cash-today .dash-topbar-actions .btn{min-height:40px}
@media (max-width: 700px){
  .cash-today-col{padding:8px 12px 32px}
  .cash-today-big{font-size:30px}
  .cash-today-kpi-v{font-size:17px}
  .cash-today .dash-topbar{flex-wrap:wrap}
}

/* 07/09 — «ogni tasto porta alla sezione» (cash-state.js _cashVaiA):
   margine per lo scroll verso sezioni, pannelli e righe con id, così la
   meta non finisce sotto il bordo; su mobile sotto l'hamburger fisso. */
#cashPlanBody .dash-section, #cashPlanBody [id]{scroll-margin-top:12px}
@media (max-width:900px){
  #cashPlanBody .dash-section, #cashPlanBody [id]{scroll-margin-top:64px}
}

/* 11/09 (sei punti, 3): colonna del mese consuntivato nel prospetto B/F/C */
.cash-bfc-closed{display:block;font-weight:400;color:var(--green,#2e7d32);letter-spacing:.02em}

/* 11/09 (sei punti, 5): pannello di scelta del report */
.cash-rpt-secs{display:flex;flex-wrap:wrap;gap:6px 16px;margin:4px 0 2px}
.cash-rpt-sec{display:inline-flex;align-items:center;gap:6px;font-size:13px;cursor:pointer}

/* ============ Home 18/09: «I tuoi grafici» (home-widgets.js) ============
   Testata con saluto e frasi d'arrivo, poi i grafici che ognuno si sceglie
   (uno per società, operazione o progetto: mai somme fra soggetti), poi
   attenzione e lavori recenti su due colonne. Tutto dentro #homeOverlay,
   con classi hw-* e modificatori is-*: niente di qui tocca Profilo o
   Progetti, che riusano ancora .home-recent-* / .home-start-*.
   Colori dei moduli: Cash verde, Invest arancio, B-Plan acqua. */
#homeOverlay{
  --n-bg:#081d20;--n-surf:#0f2a2e;--n-surf2:#143539;
  --n-ink:#e9f3f1;--n-soft:#b3cdc9;--n-faint:#8fb0ab;
  --n-line:rgba(233,243,241,.10);--n-line2:rgba(233,243,241,.18);
  --n-good:#5cd696;--n-warn:#e0b13c;--n-danger:#ff6b5e;
  --acqua:#2cc9b2;--orange:#ff7a3d;
  background:
    radial-gradient(1200px 500px at 85% -10%,rgba(44,201,178,.10),transparent 60%),
    radial-gradient(900px 400px at -10% 110%,rgba(255,122,61,.05),transparent 60%),
    var(--n-bg);
  color:var(--n-ink);}
#homeOverlay.shell-dark .home-card,
#homeOverlay.shell-dark #homeBody{background:transparent;}
#homeOverlay #homeBody{color:var(--n-ink);font-family:var(--sans);}
#homeOverlay [hidden]{display:none!important;}
#homeOverlay button{font-family:inherit;}

/* ---- testata ---- */
#homeOverlay .hw-hero{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;
  gap:18px 24px;padding:30px 0 0;margin-bottom:28px;}
#homeOverlay .hw-hero-main{min-width:0;}
#homeOverlay .hw-hero-date{font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--acqua);}
#homeOverlay .hw-hero h1{font-size:34px;line-height:1.15;font-weight:700;letter-spacing:-.01em;
  margin:6px 0 10px;color:var(--n-ink);}
#homeOverlay .hw-hero h1 .hw-name{color:var(--acqua);}
#homeOverlay .hw-hero-none{font-size:14px;color:var(--n-warn);margin-bottom:8px;}
#homeOverlay .hw-pulse{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-height:1px;}
#homeOverlay .hw-chip{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:999px;
  background:var(--n-surf);border:1px solid var(--n-line);font-size:13.5px;font-weight:500;color:var(--n-ink);}
#homeOverlay .hw-chip b{font-weight:700;}
#homeOverlay .hw-dot{width:7px;height:7px;border-radius:50%;background:var(--n-warn);flex-shrink:0;}
#homeOverlay .hw-chip.is-danger .hw-dot{background:var(--n-danger);}
#homeOverlay .hw-chip.is-ok .hw-dot{background:var(--n-good);}
#homeOverlay .hw-quick{display:flex;flex-wrap:wrap;gap:8px;}
#homeOverlay .hw-qbtn{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:8px;
  border:1px solid var(--n-line2);background:rgba(15,42,46,.7);color:var(--n-ink);font-size:13.5px;font-weight:600;
  cursor:pointer;transition:background .15s,border-color .15s,transform .15s;}
#homeOverlay .hw-qbtn:hover{border-color:var(--acqua);background:var(--n-surf2);transform:translateY(-1px);}
#homeOverlay .hw-plus{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;
  border-radius:5px;background:rgba(44,201,178,.16);color:var(--acqua);font-weight:700;}
#homeOverlay .hw-qbtn.is-primary{background:var(--acqua);border-color:var(--acqua);color:#0b2a2e;}
#homeOverlay .hw-qbtn.is-primary .hw-plus{background:rgba(11,42,46,.16);color:#0b2a2e;}

/* ---- testata della sezione grafici ---- */
#homeOverlay .hw-sec{margin-bottom:24px;}
#homeOverlay .hw-sec-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-bottom:14px;min-height:40px;}
#homeOverlay .hw-sec-head h2{margin:0;font-size:16px;font-weight:700;color:var(--n-ink);}
#homeOverlay .hw-hint{font-size:13px;color:var(--n-faint);}
#homeOverlay .hw-sp{flex:1;}
#homeOverlay .hw-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 13px;border-radius:8px;
  border:1px solid var(--n-line2);background:transparent;color:var(--n-ink);font-size:13px;font-weight:600;
  cursor:pointer;transition:border-color .15s,background .15s;}
#homeOverlay .hw-btn:hover{border-color:var(--acqua);}
#homeOverlay .hw-btn.is-primary{background:var(--acqua);border-color:var(--acqua);color:#0b2a2e;}
#homeOverlay .hw-btn.is-ghost{border-color:transparent;color:var(--n-soft);}
#homeOverlay .hw-btn.is-ghost:hover{color:var(--n-ink);border-color:var(--n-line2);}
#homeOverlay .hw-btn:disabled{opacity:.4;cursor:default;}
#homeOverlay .hw-btn:focus-visible,#homeOverlay .hw-qbtn:focus-visible,#homeOverlay .hw-tb:focus-visible,
#homeOverlay .hw-choice:focus-visible,#homeOverlay .hw-x:focus-visible,#homeOverlay .hw-att:focus-visible,
#homeOverlay .hw-rec:focus-visible,#homeOverlay .hw-add:focus-visible,#homeOverlay .hw-sizes button:focus-visible{
  outline:2px solid var(--acqua);outline-offset:2px;}
#homeOverlay #hwEdit[aria-pressed="true"]{background:var(--acqua);border-color:var(--acqua);color:#0b2a2e;}
#homeOverlay .hw-edit-banner{display:none;font-size:13px;color:var(--n-soft);background:rgba(44,201,178,.08);
  border:1px dashed rgba(44,201,178,.45);border-radius:9px;padding:9px 13px;margin-bottom:14px;}
#homeOverlay .hw-edit-banner b{color:var(--n-ink);}
#homeOverlay .hw-sec.is-editing .hw-edit-banner{display:block;}

/* ---- griglia dei grafici ---- */
#homeOverlay .hw-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;}
#homeOverlay .hw-w{--mc:var(--acqua);position:relative;display:flex;flex-direction:column;min-width:0;
  background:linear-gradient(180deg,var(--n-surf2),var(--n-surf));border:1px solid var(--n-line);border-radius:12px;
  padding:14px 16px 12px;cursor:pointer;transition:border-color .2s,transform .2s,opacity .2s;color:var(--n-ink);}
#homeOverlay .hw-w.is-cash{--mc:#5cd696;}
#homeOverlay .hw-w.is-invest{--mc:#ff7a3d;}
#homeOverlay .hw-w.is-plan{--mc:#2cc9b2;}
#homeOverlay .hw-grid .hw-w.is-L{grid-column:span 2;}
#homeOverlay .hw-w:hover{border-color:rgba(44,201,178,.45);transform:translateY(-2px);}
#homeOverlay .hw-w:focus-visible{outline:2px solid var(--acqua);outline-offset:2px;}
#homeOverlay .hw-w-head{display:flex;align-items:center;gap:8px;min-width:0;}
#homeOverlay .hw-w-mod{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--mc);
  background:rgba(44,201,178,.14);background:color-mix(in srgb,var(--mc) 14%,transparent);
  padding:2px 7px;border-radius:5px;flex-shrink:0;}
#homeOverlay .hw-w-subj{font-size:13.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
#homeOverlay .hw-go{margin-left:auto;color:var(--n-faint);transition:color .2s,transform .2s;}
#homeOverlay .hw-w:hover .hw-go{color:var(--acqua);transform:translateX(2px);}
#homeOverlay .hw-w-title{font-size:12.5px;color:var(--n-faint);margin-top:6px;}
#homeOverlay .hw-w-val{font-size:26px;font-weight:700;letter-spacing:-.01em;margin-top:4px;
  font-variant-numeric:tabular-nums;line-height:1.15;color:var(--n-ink);}
#homeOverlay .hw-w-val small{font-size:14px;font-weight:600;color:var(--n-soft);margin-left:3px;}
#homeOverlay .hw-w-val.is-bad{color:var(--n-danger);}
#homeOverlay .hw-w-sub{font-size:12.5px;color:var(--n-faint);margin-top:3px;}
#homeOverlay .hw-w-sub b{color:var(--n-ink);font-weight:600;}
#homeOverlay .hw-up{color:var(--n-good);font-weight:600;}
#homeOverlay .hw-dn{color:var(--n-warn);font-weight:600;}
#homeOverlay .hw-bd{color:var(--n-danger);font-weight:600;}
#homeOverlay .hw-w-body{margin-top:auto;padding-top:12px;}

/* grafici SVG e barre */
#homeOverlay .hw-chw{position:relative;}
#homeOverlay .hw-ch{display:block;width:100%;height:100%;overflow:visible;}
#homeOverlay .hw-ch .hw-area{fill:url(#sparkFill);}
#homeOverlay .hw-ch .hw-ln{fill:none;stroke:var(--acqua);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
#homeOverlay .hw-ch .hw-ln.is-alt{stroke:#ff7a3d;}
#homeOverlay .hw-ch .hw-ref{stroke:rgba(233,243,241,.22);stroke-dasharray:3 4;stroke-width:1;vector-effect:non-scaling-stroke;}
#homeOverlay .hw-ch .hw-ref.is-warn{stroke:rgba(224,177,60,.7);}
#homeOverlay .hw-ch .hw-bar{fill:rgba(44,201,178,.55);}
#homeOverlay .hw-ch .hw-bar.is-b2{fill:var(--acqua);}
#homeOverlay .hw-ch .hw-bar.is-ghost{fill:rgba(233,243,241,.16);}
#homeOverlay .hw-ch .hw-bar.is-neg{fill:rgba(255,122,61,.75);}
#homeOverlay .hw-pt{position:absolute;width:9px;height:9px;margin:-4.5px 0 0 -4.5px;border-radius:50%;
  background:var(--acqua);box-shadow:0 0 0 3px rgba(44,201,178,.25);}
#homeOverlay .hw-pt.is-bad{background:var(--n-danger);box-shadow:0 0 0 3px rgba(255,107,94,.25);}
#homeOverlay .hw-pt.is-low{background:var(--orange);box-shadow:0 0 0 3px rgba(255,122,61,.25);}
#homeOverlay .hw-ref-lab{position:absolute;right:0;transform:translateY(-120%);font-size:10.5px;color:var(--n-faint);}
#homeOverlay .hw-ref-lab.is-left{right:auto;left:0;}
#homeOverlay .hw-axis{display:flex;justify-content:space-between;font-size:10.5px;color:var(--n-faint);margin-top:5px;gap:4px;}
#homeOverlay .hw-axis.is-cols{display:grid;text-align:center;}
#homeOverlay .hw-legend{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11px;color:var(--n-faint);margin-top:6px;}
#homeOverlay .hw-legend i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:-1px;}
#homeOverlay .hw-gauge{height:9px;border-radius:99px;background:rgba(233,243,241,.08);overflow:hidden;}
#homeOverlay .hw-gauge i{display:block;height:100%;width:var(--w);border-radius:99px;
  background:linear-gradient(90deg,var(--acqua),#7fe3d3);transform-origin:left;
  animation:hw-grow 1.1s .3s cubic-bezier(.2,.7,.2,1) both;}
#homeOverlay .hw-gauge i.is-warn{background:linear-gradient(90deg,#e0b13c,#f0cf7a);}
#homeOverlay .hw-gauge i.is-bad{background:linear-gradient(90deg,#ff6b5e,#ff9a8f);}
#homeOverlay .hw-lines{display:flex;flex-direction:column;gap:9px;}
#homeOverlay .hw-lt{display:flex;justify-content:space-between;gap:8px;font-size:11.5px;color:var(--n-soft);margin-bottom:4px;}
#homeOverlay .hw-lt span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#homeOverlay .hw-lt span:last-child{color:var(--n-faint);white-space:nowrap;}
#homeOverlay .hw-lb{height:7px;border-radius:99px;background:rgba(233,243,241,.08);overflow:hidden;}
#homeOverlay .hw-lb i{display:block;height:100%;width:var(--w);background:var(--acqua);border-radius:99px;
  transform-origin:left;animation:hw-grow 1s .3s cubic-bezier(.2,.7,.2,1) both;}
#homeOverlay .hw-lb i.is-warn{background:var(--n-warn);}
#homeOverlay .hw-lb i.is-bad{background:var(--n-danger);}
#homeOverlay .hw-more{font-size:11.5px;color:var(--n-faint);}
#homeOverlay .hw-figs{display:flex;flex-wrap:wrap;gap:8px 18px;margin-bottom:10px;}
#homeOverlay .hw-figs.is-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 14px;margin-bottom:0;}
#homeOverlay .hw-fl{display:block;font-size:11px;color:var(--n-faint);text-transform:uppercase;letter-spacing:.06em;}
#homeOverlay .hw-fv{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;}
/* nel riquadro piccolo le tre cifre non stanno affiancate: righe etichetta | cifra */
#homeOverlay .hw-w.is-S .hw-figs.is-grid{grid-template-columns:1fr;gap:0;}
#homeOverlay .hw-w.is-S .hw-figs.is-grid > div{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:6px 0;border-top:1px solid var(--n-line);}
#homeOverlay .hw-w.is-S .hw-figs.is-grid .hw-fv{font-size:15px;white-space:nowrap;}
#homeOverlay .hw-irr{position:relative;height:9px;border-radius:99px;background:rgba(233,243,241,.08);}
#homeOverlay .hw-irr i{position:absolute;left:0;top:0;bottom:0;width:var(--w);border-radius:99px;
  background:linear-gradient(90deg,#ff7a3d,#ffb08a);transform-origin:left;
  animation:hw-grow 1.1s .3s cubic-bezier(.2,.7,.2,1) both;}
#homeOverlay .hw-irr b{position:absolute;top:-4px;bottom:-4px;width:2px;background:#e9f3f1;border-radius:2px;}
#homeOverlay .hw-pipe{list-style:none;margin:0;padding:0;display:flex;align-items:flex-start;}
#homeOverlay .hw-pipe li{flex:1;position:relative;text-align:center;font-size:10.5px;color:var(--n-faint);padding-top:18px;}
#homeOverlay .hw-pipe li::before{content:"";position:absolute;top:4px;left:50%;width:10px;height:10px;margin-left:-5px;
  border-radius:50%;background:rgba(233,243,241,.18);z-index:1;}
#homeOverlay .hw-pipe li::after{content:"";position:absolute;top:8px;left:-50%;width:100%;height:2px;background:rgba(233,243,241,.12);}
#homeOverlay .hw-pipe li:first-child::after{display:none;}
#homeOverlay .hw-pipe li.is-done::before,#homeOverlay .hw-pipe li.is-done::after,
#homeOverlay .hw-pipe li.is-cur::after{background:var(--acqua);}
#homeOverlay .hw-pipe li.is-cur::before{background:#ff7a3d;box-shadow:0 0 0 4px rgba(255,122,61,.22);}
#homeOverlay .hw-pipe li.is-cur{color:var(--n-ink);font-weight:600;}
#homeOverlay .is-S .hw-pipe li span{display:none;}
#homeOverlay .is-S .hw-pipe li{padding-top:14px;}
#homeOverlay .hw-empty{font-size:12.5px;color:var(--n-faint);line-height:1.45;padding:6px 0;}
#homeOverlay .hw-empty b{color:var(--n-soft);}

/* animazioni dei grafici */
#homeOverlay .hw-ch .hw-bar{transform-box:fill-box;transform-origin:50% 100%;animation:hw-barup .7s cubic-bezier(.2,.7,.2,1) both;}
#homeOverlay .hw-ch .hw-bar.is-down{transform-origin:50% 0;}
#homeOverlay .hw-ch .hw-ln{stroke-dasharray:1;stroke-dashoffset:1;animation:hw-draw 1.2s .35s ease-out forwards;}
#homeOverlay .hw-ch .hw-area{opacity:0;animation:hw-fade .8s .9s forwards;}
@keyframes hw-barup{from{transform:scaleY(0);}}
@keyframes hw-grow{from{transform:scaleX(0);}}
@keyframes hw-draw{to{stroke-dashoffset:0;}}
@keyframes hw-fade{to{opacity:1;}}
#homeOverlay .is-still .hw-ch .hw-bar,#homeOverlay .is-still .hw-ch .hw-ln,#homeOverlay .is-still .hw-ch .hw-area,
#homeOverlay .is-still .hw-gauge i,#homeOverlay .is-still .hw-lb i,#homeOverlay .is-still .hw-irr i,
#homeOverlay .hw-mini .hw-ch .hw-bar,#homeOverlay .hw-mini .hw-ch .hw-ln,#homeOverlay .hw-mini .hw-ch .hw-area,
#homeOverlay .hw-mini .hw-gauge i,#homeOverlay .hw-mini .hw-lb i,#homeOverlay .hw-mini .hw-irr i{
  animation:none;opacity:1;stroke-dashoffset:0;}
#homeOverlay .is-still .hw-rise{animation:none;opacity:1;transform:none;}

/* modalità Personalizza */
#homeOverlay .hw-sec.is-editing .hw-w{cursor:grab;border-style:dashed;border-color:rgba(44,201,178,.5);}
#homeOverlay .hw-sec.is-editing .hw-w:hover{transform:none;}
#homeOverlay .hw-sec.is-editing .hw-go{display:none;}
#homeOverlay .hw-w-tools{display:none;gap:4px;z-index:3;background:rgba(8,29,32,.92);
  border:1px solid var(--n-line2);border-radius:8px;padding:3px;}
#homeOverlay .hw-sec.is-editing .hw-w-tools{display:flex;order:-1;align-self:flex-end;margin:-6px -8px 8px 0;}
#homeOverlay .hw-tb{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:26px;padding:0 6px;
  border:0;border-radius:6px;background:transparent;color:var(--n-soft);font-size:12.5px;font-weight:600;cursor:pointer;}
#homeOverlay .hw-tb:hover{background:rgba(233,243,241,.08);color:var(--n-ink);}
#homeOverlay .hw-tb.is-rm:hover{background:rgba(255,107,94,.16);color:var(--n-danger);}
#homeOverlay .hw-tb:disabled{opacity:.3;cursor:default;background:transparent;}
#homeOverlay .hw-w.is-dragging{opacity:.35;}
#homeOverlay .hw-w.is-drop{border-color:var(--orange);box-shadow:0 0 0 2px rgba(255,122,61,.35);}
#homeOverlay .hw-add{display:none;min-height:150px;border:1.5px dashed rgba(233,243,241,.25);border-radius:12px;
  background:transparent;color:var(--n-soft);font-size:14px;font-weight:600;cursor:pointer;
  align-items:center;justify-content:center;flex-direction:column;gap:6px;padding:16px;text-align:center;}
#homeOverlay .hw-add-plus{font-size:26px;color:var(--acqua);line-height:1;}
#homeOverlay .hw-add:hover{border-color:var(--acqua);color:var(--n-ink);background:rgba(44,201,178,.05);}
#homeOverlay .hw-sec.is-editing .hw-add,#homeOverlay .hw-add.is-empty{display:flex;}
#homeOverlay .hw-add.is-empty{grid-column:1/-1;min-height:120px;}
#homeOverlay .hw-none{grid-column:1/-1;font-size:13.5px;color:var(--n-faint);line-height:1.5;
  padding:16px 18px;border:1px dashed var(--n-line2);border-radius:12px;}
#homeOverlay .hw-none b{color:var(--n-soft);}

/* ---- due colonne: attenzione e recenti ---- */
#homeOverlay .hw-cols{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:18px;align-items:start;}
#homeOverlay .hw-panel{background:rgba(15,42,46,.72);border:1px solid var(--n-line);border-radius:12px;padding:18px 18px 10px;}
#homeOverlay .hw-panel-head{display:flex;align-items:center;gap:10px;margin:0 0 12px;}
#homeOverlay .hw-panel-head h2{margin:0;font-size:15px;font-weight:700;color:var(--n-ink);}
#homeOverlay .hw-count{font-size:12px;font-weight:700;padding:2px 8px;border-radius:99px;
  background:rgba(255,122,61,.16);color:var(--orange);}
#homeOverlay .hw-att-list{display:flex;flex-direction:column;}
#homeOverlay .hw-att{display:flex;align-items:flex-start;gap:12px;width:100%;text-align:left;font:inherit;padding:12px;
  border-radius:9px;margin-bottom:8px;background:var(--n-bg);border:1px solid var(--n-line);cursor:pointer;
  color:var(--n-ink);transition:border-color .15s;}
#homeOverlay .hw-att:hover{border-color:var(--n-line2);}
#homeOverlay .hw-sev{width:10px;height:10px;border-radius:50%;margin-top:5px;flex-shrink:0;
  background:var(--n-warn);box-shadow:0 0 0 4px rgba(224,177,60,.14);}
#homeOverlay .hw-att.is-danger .hw-sev{background:var(--n-danger);box-shadow:0 0 0 4px rgba(255,107,94,.16);}
#homeOverlay .hw-att.is-info .hw-sev{background:var(--acqua);box-shadow:0 0 0 4px rgba(44,201,178,.14);}
#homeOverlay .hw-att-mid,#homeOverlay .hw-rec-mid{flex:1;min-width:0;}
#homeOverlay .hw-t{display:block;font-size:14px;font-weight:600;color:var(--n-ink);}
#homeOverlay .hw-m{display:block;font-size:12.5px;color:var(--n-faint);margin-top:2px;}
#homeOverlay .hw-cta{align-self:center;font-size:12.5px;font-weight:600;color:var(--acqua);white-space:nowrap;}
#homeOverlay .hw-att-ok{display:flex;align-items:center;gap:12px;padding:12px;margin-bottom:8px;border-radius:9px;
  background:var(--n-bg);border:1px solid var(--n-line);font-size:14px;color:var(--n-soft);}
#homeOverlay .hw-att-ok strong{color:var(--n-ink);}
#homeOverlay .hw-att-ok-icon{width:28px;height:28px;flex:0 0 auto;border-radius:999px;display:flex;align-items:center;
  justify-content:center;font-size:13px;font-weight:700;background:rgba(92,214,150,.14);color:var(--n-good);}
#homeOverlay .hw-panel .hw-more{font-size:12.5px;margin:2px 0 8px;}
#homeOverlay .hw-rec{display:flex;align-items:center;gap:12px;width:100%;text-align:left;font:inherit;padding:10px 8px;
  border:0;border-radius:9px;background:transparent;cursor:pointer;color:var(--n-ink);}
#homeOverlay .hw-rec:hover{background:rgba(233,243,241,.05);}
#homeOverlay .hw-ico{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;flex-shrink:0;background:rgba(44,201,178,.14);color:var(--acqua);}
#homeOverlay .hw-ico.is-plan{background:rgba(44,201,178,.14);color:var(--acqua);}
#homeOverlay .hw-ico.is-cash{background:rgba(92,214,150,.14);color:#5cd696;}
#homeOverlay .hw-ico.is-invest{background:rgba(255,122,61,.14);color:var(--orange);}
#homeOverlay .hw-when{font-size:12px;color:var(--n-faint);white-space:nowrap;}

/* ---- finestra «Aggiungi un grafico» ---- */
#homeOverlay .hw-modal{position:fixed;inset:0;z-index:1000;background:rgba(2,8,9,.72);display:flex;
  align-items:center;justify-content:center;padding:16px;}
#homeOverlay .hw-sheet{width:min(860px,100%);max-height:calc(100vh - 32px);display:flex;flex-direction:column;
  background:#0c2427;border:1px solid var(--n-line2);border-radius:14px;box-shadow:0 30px 80px rgba(0,0,0,.5);
  color:var(--n-ink);animation:hw-pop .22s ease-out;}
@keyframes hw-pop{from{opacity:0;transform:translateY(8px) scale(.98);}}
#homeOverlay .hw-sheet header{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--n-line);}
#homeOverlay .hw-sheet h2{margin:0;font-size:17px;font-weight:700;color:var(--n-ink);}
#homeOverlay .hw-x{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;
  border-radius:8px;border:1px solid var(--n-line2);background:transparent;color:var(--n-soft);font-size:14px;cursor:pointer;}
#homeOverlay .hw-x:hover{color:var(--n-ink);border-color:var(--acqua);}
#homeOverlay .hw-crumbs{display:flex;flex-wrap:wrap;gap:6px;padding:12px 20px 0;list-style:none;margin:0;}
#homeOverlay .hw-crumbs li{font-size:12.5px;color:var(--n-faint);padding:4px 10px;border-radius:99px;border:1px solid var(--n-line);}
#homeOverlay .hw-crumbs li.is-on{color:#0b2a2e;background:var(--acqua);border-color:var(--acqua);font-weight:600;}
#homeOverlay .hw-crumbs li.is-ok{color:var(--n-ink);border-color:rgba(44,201,178,.5);}
#homeOverlay .hw-sheet-body{padding:16px 20px;overflow:auto;}
#homeOverlay .hw-q{font-size:14px;font-weight:600;margin:0 0 12px;color:var(--n-ink);}
#homeOverlay .hw-q-note{font-size:12.5px;color:var(--n-faint);margin:-6px 0 12px;}
#homeOverlay .hw-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
#homeOverlay .hw-choice{--mc:var(--acqua);display:flex;flex-direction:column;justify-content:flex-start;text-align:left;
  font:inherit;background:var(--n-surf);border:1px solid var(--n-line);border-radius:11px;padding:14px;color:var(--n-ink);
  cursor:pointer;transition:border-color .15s,background .15s;min-width:0;}
#homeOverlay .hw-choice.is-cash{--mc:#5cd696;}
#homeOverlay .hw-choice.is-invest{--mc:#ff7a3d;}
#homeOverlay .hw-choice.is-plan{--mc:#2cc9b2;}
#homeOverlay .hw-choice:hover{border-color:var(--mc);}
#homeOverlay .hw-choice[aria-pressed="true"]{border-color:var(--mc);background:var(--n-surf2);box-shadow:0 0 0 1px var(--mc);}
#homeOverlay .hw-choice:disabled{opacity:.45;cursor:default;}
#homeOverlay .hw-choice:disabled:hover{border-color:var(--n-line);}
#homeOverlay .hw-ct{display:block;font-size:14.5px;font-weight:700;}
#homeOverlay .hw-cd{display:block;font-size:12.5px;color:var(--n-faint);margin-top:3px;line-height:1.4;}
#homeOverlay .hw-tag{display:inline-block;align-self:flex-start;margin-top:8px;font-size:11px;font-weight:600;
  color:var(--n-faint);border:1px solid var(--n-line2);border-radius:5px;padding:1px 6px;}
#homeOverlay .hw-mini{display:block;margin-top:12px;padding:10px;border-radius:8px;background:rgba(8,29,32,.7);pointer-events:none;}
#homeOverlay .hw-mini .hw-w-val{font-size:18px;margin:0 0 6px;}
#homeOverlay .hw-subj-list{display:flex;flex-direction:column;gap:8px;}
#homeOverlay .hw-subj-list .hw-choice{flex-direction:row;align-items:center;gap:12px;}
#homeOverlay .hw-choice-txt{flex:1;min-width:0;}
#homeOverlay .hw-sheet footer{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:14px 20px;border-top:1px solid var(--n-line);}
#homeOverlay .hw-sizes{display:inline-flex;align-items:center;border:1px solid var(--n-line2);border-radius:8px;overflow:hidden;}
#homeOverlay .hw-sizes > span{font-size:12px;color:var(--n-faint);padding:0 10px;}
#homeOverlay .hw-sizes button{background:transparent;border:0;border-left:1px solid var(--n-line);color:var(--n-soft);
  padding:7px 12px;font-size:12.5px;font-weight:600;cursor:pointer;}
#homeOverlay .hw-sizes button[aria-pressed="true"]{background:rgba(44,201,178,.18);color:var(--n-ink);}

/* avviso breve */
#homeOverlay .hw-toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);opacity:0;z-index:1001;
  background:#e9f3f1;color:#0b2a2e;font-size:13.5px;font-weight:600;padding:10px 16px;border-radius:9px;
  box-shadow:0 10px 30px rgba(0,0,0,.4);transition:opacity .2s,transform .2s;pointer-events:none;max-width:calc(100% - 32px);}
#homeOverlay .hw-toast.is-on{opacity:1;transform:translateX(-50%);}

/* entrata a scaglioni e scheletro di caricamento */
#homeOverlay .hw-rise{opacity:0;transform:translateY(10px);animation:hw-rise .55s cubic-bezier(.2,.7,.2,1) forwards;
  animation-delay:calc(var(--i,0) * 60ms);}
@keyframes hw-rise{to{opacity:1;transform:none;}}
#homeOverlay .hw-skel .hw-sk{position:relative;overflow:hidden;min-height:150px;cursor:default;
  background:rgba(233,243,241,.07)!important;border-color:transparent!important;border-radius:12px;}
#homeOverlay .hw-skel .hw-sk:hover{transform:none;}
#homeOverlay .hw-skel .hw-sk > *{visibility:hidden;}
#homeOverlay .hw-skel .hw-sk::after{content:"";position:absolute;inset:0;transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,rgba(233,243,241,.08),transparent);animation:hw-shimmer 1.3s infinite;}
@keyframes hw-shimmer{to{transform:translateX(100%);}}

@media (prefers-reduced-motion:reduce){
  #homeOverlay .hw-rise,#homeOverlay .hw-ch .hw-ln,#homeOverlay .hw-ch .hw-area,#homeOverlay .hw-ch .hw-bar,
  #homeOverlay .hw-gauge i,#homeOverlay .hw-lb i,#homeOverlay .hw-irr i,#homeOverlay .hw-sheet{
    animation:none!important;opacity:1;transform:none;stroke-dashoffset:0;}
  #homeOverlay .hw-skel .hw-sk::after{animation:none;}
  #homeOverlay .hw-w,#homeOverlay .hw-qbtn{transition:none;}
  #homeOverlay .hw-w:hover,#homeOverlay .hw-qbtn:hover{transform:none;}
}

@media (max-width:1100px){
  #homeOverlay .hw-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  #homeOverlay .hw-choices{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:900px){
  #homeOverlay .hw-cols{grid-template-columns:minmax(0,1fr);}
}
@media (max-width:620px){
  #homeOverlay .hw-hero{padding-top:22px;}
  #homeOverlay .hw-hero h1{font-size:26px;}
  #homeOverlay .hw-grid{grid-template-columns:1fr;}
  #homeOverlay .hw-grid .hw-w.is-L{grid-column:auto;}
  /* su una colonna sola piccolo e largo coincidono */
  #homeOverlay .hw-tb.is-size{display:none;}
  #homeOverlay .hw-choices{grid-template-columns:1fr;}
  #homeOverlay .hw-quick{width:100%;}
  #homeOverlay .hw-qbtn{flex:1 1 auto;justify-content:center;}
  #homeOverlay .hw-cta{display:none;}
  #homeOverlay .hw-sheet footer .hw-sp{flex-basis:100%;height:0;}
  #homeOverlay .hw-figs.is-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  /* «Modificato 6 giorni fa alle 12:00» va a capo lui, non il nome */
  #homeOverlay .hw-when{white-space:normal;max-width:40%;text-align:right;}
  /* sei tappe in 320px non si leggono: resta la cifra grande con lo stato attuale */
  #homeOverlay .hw-pipe li span{display:none;}
  #homeOverlay .hw-pipe li{padding-top:14px;}
}

/* ============ 🏢 Società (#/companies), 19/09 ============
   Matteo: «sezioni e tasti più accattivanti e più coerenti con la
   piattaforma». Stesso fondo petrolio e stessi colori della Home (hw-*):
   testata con occhiello acqua e titolo grande, poi le società in tessere
   con le iniziali, dove sono usate in pastiglie col colore del modulo
   (B-Plan acqua, Invest arancio, Cash verde) e i tasti in basso. La
   conferma dell'eliminazione e il motivo del blocco stanno nella tessera. */
#companiesOverlay{
  --n-bg:#081d20;--n-surf:#0f2a2e;--n-surf2:#143539;
  --n-ink:#e9f3f1;--n-soft:#b3cdc9;--n-faint:#8fb0ab;
  --n-line:rgba(233,243,241,.10);--n-line2:rgba(233,243,241,.18);
  --n-good:#5cd696;--n-danger:#ff6b5e;
  --acqua:#2cc9b2;--orange:#ff7a3d;
  background:
    radial-gradient(1200px 500px at 85% -10%,rgba(44,201,178,.10),transparent 60%),
    radial-gradient(900px 400px at -10% 110%,rgba(255,122,61,.05),transparent 60%),
    var(--n-bg);
  color:var(--n-ink);}
#companiesOverlay.shell-dark .home-card,
#companiesOverlay.shell-dark #companiesBody{background:transparent;}
#companiesOverlay #companiesBody{font-family:var(--sans);color:var(--n-ink);}
#companiesOverlay button{font-family:inherit;}

/* ---- testata ---- */
#companiesOverlay .soc-hero{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;
  gap:16px 24px;padding:30px 0 0;margin-bottom:26px;}
#companiesOverlay .soc-hero-main{min-width:0;max-width:760px;}
#companiesOverlay .soc-kicker{font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--acqua);}
#companiesOverlay .soc-hero h1{font-size:34px;line-height:1.15;font-weight:700;letter-spacing:-.01em;
  margin:6px 0 10px;color:var(--n-ink);}
#companiesOverlay .soc-hero h1 span{color:var(--acqua);}
#companiesOverlay .companies-sub{margin:0;font-size:15px;color:var(--n-soft);line-height:1.5;}
#companiesOverlay .soc-back{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:8px;
  border:1px solid var(--acqua);background:var(--acqua);color:#0b2a2e;font-size:13.5px;font-weight:700;cursor:pointer;
  transition:transform .15s,filter .15s;}
#companiesOverlay .soc-back:hover{filter:brightness(1.08);transform:translateY(-1px);}

/* ---- griglia e tessere ---- */
#companiesOverlay .soc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;}
#companiesOverlay .soc-card{display:flex;flex-direction:column;gap:14px;min-width:0;padding:18px 18px 14px;
  background:linear-gradient(180deg,var(--n-surf2),var(--n-surf));border:1px solid var(--n-line);
  border-top:3px solid var(--acqua);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.28);
  transition:border-color .2s,transform .2s,box-shadow .2s;}
#companiesOverlay .soc-card:hover{border-color:rgba(44,201,178,.45);border-top-color:var(--acqua);
  transform:translateY(-2px);box-shadow:0 12px 30px rgba(0,0,0,.36);}
#companiesOverlay .soc-card.is-asking,
#companiesOverlay .soc-card.is-asking:hover{border-color:rgba(255,107,94,.55);border-top-color:var(--n-danger);transform:none;}
#companiesOverlay .soc-card.is-blocked{border-top-color:var(--n-danger);}
#companiesOverlay .soc-head{display:flex;align-items:center;gap:13px;min-width:0;}
#companiesOverlay .soc-mono{flex:0 0 auto;width:46px;height:46px;border-radius:11px;display:flex;align-items:center;
  justify-content:center;font-size:16px;font-weight:700;letter-spacing:.03em;color:var(--acqua);
  background:rgba(44,201,178,.14);border:1px solid rgba(44,201,178,.30);}
#companiesOverlay .soc-id{min-width:0;}
#companiesOverlay .soc-name{font-size:17px;font-weight:700;letter-spacing:-.01em;color:var(--n-ink);line-height:1.25;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#companiesOverlay .soc-meta{font-size:13px;color:var(--n-faint);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* dove è usata: una pastiglia per modulo, col suo colore */
#companiesOverlay .soc-uses{display:flex;flex-wrap:wrap;gap:6px;}
#companiesOverlay .soc-use{--mc:var(--acqua);display:inline-flex;align-items:center;gap:7px;padding:4px 11px;border-radius:999px;
  font-size:12.5px;font-weight:600;color:var(--n-ink);
  background:rgba(44,201,178,.12);background:color-mix(in srgb,var(--mc) 12%,transparent);
  border:1px solid rgba(44,201,178,.30);border-color:color-mix(in srgb,var(--mc) 32%,transparent);}
#companiesOverlay .soc-use i{width:7px;height:7px;border-radius:50%;background:var(--mc);flex-shrink:0;}
#companiesOverlay .soc-use.is-invest{--mc:#ff7a3d;}
#companiesOverlay .soc-use.is-cash{--mc:#5cd696;}
#companiesOverlay .soc-use.is-none{--mc:#8fb0ab;color:var(--n-faint);font-weight:500;background:transparent;border-style:dashed;}

/* tasti */
#companiesOverlay .soc-foot{display:flex;align-items:center;gap:8px;margin-top:auto;padding-top:12px;border-top:1px solid var(--n-line);}
#companiesOverlay .soc-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:8px;
  border:1px solid var(--n-line2);background:rgba(15,42,46,.7);color:var(--n-ink);font-size:13.5px;font-weight:600;
  cursor:pointer;transition:background .15s,border-color .15s,color .15s,transform .15s;}
#companiesOverlay .soc-btn:hover{border-color:var(--acqua);background:var(--n-surf2);transform:translateY(-1px);}
#companiesOverlay .soc-btn.is-edit:hover{color:var(--acqua);}
#companiesOverlay .soc-btn.is-del{margin-left:auto;border-color:transparent;background:transparent;color:var(--n-faint);}
#companiesOverlay .soc-btn.is-del:hover{color:var(--n-danger);border-color:rgba(255,107,94,.45);background:rgba(255,107,94,.08);}
#companiesOverlay .soc-btn.is-danger{background:var(--n-danger);border-color:var(--n-danger);color:#2b0d0a;font-weight:700;}
#companiesOverlay .soc-btn.is-danger:hover{filter:brightness(1.08);background:var(--n-danger);border-color:var(--n-danger);}
#companiesOverlay .soc-btn.is-ghost{border-color:transparent;background:transparent;color:var(--n-soft);}
#companiesOverlay .soc-btn.is-ghost:hover{color:var(--n-ink);border-color:var(--n-line2);}
#companiesOverlay .soc-btn:focus-visible,#companiesOverlay .soc-x:focus-visible,#companiesOverlay .soc-back:focus-visible{
  outline:2px solid var(--acqua);outline-offset:2px;}

/* conferma nella tessera */
#companiesOverlay .soc-ask{margin-top:auto;padding:12px 14px;border-radius:9px;background:rgba(255,107,94,.09);border:1px solid rgba(255,107,94,.35);}
#companiesOverlay .soc-ask-q{font-size:14.5px;font-weight:700;color:var(--n-ink);overflow-wrap:anywhere;}
#companiesOverlay .soc-ask-sub{font-size:12.5px;color:var(--n-soft);margin-top:2px;}
#companiesOverlay .soc-ask-btns{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:11px;}
#companiesOverlay .soc-busy{display:inline-flex;align-items:center;gap:9px;font-size:13.5px;color:var(--n-soft);padding:8px 0;}
#companiesOverlay .soc-busy i{width:14px;height:14px;border-radius:50%;border:2px solid rgba(233,243,241,.2);
  border-top-color:var(--n-danger);animation:socGira .8s linear infinite;}
@keyframes socGira{to{transform:rotate(360deg);}}

/* motivo del blocco, avviso di eliminazione riuscita, elenco vuoto */
#companiesOverlay .soc-msg{display:flex;align-items:flex-start;gap:10px;padding:11px 12px 11px 14px;border-radius:9px;
  background:rgba(255,107,94,.10);border:1px solid rgba(255,107,94,.35);border-left:3px solid var(--n-danger);
  font-size:13.5px;line-height:1.45;color:var(--n-ink);}
#companiesOverlay .soc-msg > div{flex:1;min-width:0;}
#companiesOverlay .soc-notice{grid-column:1/-1;display:flex;align-items:center;gap:10px;padding:11px 12px 11px 16px;
  border-radius:10px;background:rgba(92,214,150,.10);border:1px solid rgba(92,214,150,.35);border-left:3px solid var(--n-good);
  font-size:14px;font-weight:600;color:var(--n-ink);}
#companiesOverlay .soc-notice > span{flex:1;min-width:0;}
#companiesOverlay .soc-x{flex:0 0 auto;width:26px;height:26px;border-radius:6px;border:1px solid transparent;background:transparent;
  color:var(--n-faint);font-size:13px;line-height:1;cursor:pointer;}
#companiesOverlay .soc-x:hover{color:var(--n-ink);border-color:var(--n-line2);}
#companiesOverlay .soc-empty{grid-column:1/-1;padding:28px 20px;border:1px dashed rgba(44,201,178,.45);border-radius:12px;
  background:rgba(44,201,178,.05);color:var(--n-soft);font-size:14.5px;line-height:1.5;text-align:center;}
#companiesOverlay .soc-empty b{color:var(--n-ink);}
#companiesOverlay .soc-empty-ico{font-size:30px;margin-bottom:6px;}

@media (max-width:720px){
  #companiesOverlay .soc-hero{padding-top:22px;margin-bottom:20px;}
  #companiesOverlay .soc-hero h1{font-size:27px;}
  #companiesOverlay .soc-grid{grid-template-columns:minmax(0,1fr);}
  #companiesOverlay .soc-card{padding:16px 14px 12px;}
}

/* ============ 📁 Progetti (#/projects), 19/09 ============
   Matteo: «anche qui i box coerenti con la struttura grafica della
   piattaforma». Come 🏢 Società: fondo petrolio e colori della Home,
   testata con occhiello acqua e titolo grande, poi una sezione per modulo
   con i lavori in tessere. Il colore del modulo (--mc: B-Plan acqua,
   Invest arancio, Cash verde) segna il bordo alto, le iniziali, il tipo e
   «Apri →». */
#projectsOverlay{
  --n-bg:#081d20;--n-surf:#0f2a2e;--n-surf2:#143539;
  --n-ink:#e9f3f1;--n-soft:#b3cdc9;--n-faint:#8fb0ab;
  --n-line:rgba(233,243,241,.10);--n-line2:rgba(233,243,241,.18);
  --acqua:#2cc9b2;--orange:#ff7a3d;
  background:
    radial-gradient(1200px 500px at 85% -10%,rgba(44,201,178,.10),transparent 60%),
    radial-gradient(900px 400px at -10% 110%,rgba(255,122,61,.05),transparent 60%),
    var(--n-bg);
  color:var(--n-ink);}
#projectsOverlay.shell-dark .home-card,
#projectsOverlay.shell-dark #projectsBody{background:transparent;}
#projectsOverlay #projectsBody{font-family:var(--sans);color:var(--n-ink);}
#projectsOverlay button{font-family:inherit;}

/* ---- testata ---- */
#projectsOverlay .prj-hero{padding:30px 30px 0;margin-bottom:28px;}  /* stesso margine di #projectsBody */
#projectsOverlay .prj-hero-main{min-width:0;max-width:760px;}
#projectsOverlay .prj-kicker{font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--acqua);}
#projectsOverlay .prj-hero h1{font-size:34px;line-height:1.15;font-weight:700;letter-spacing:-.01em;
  margin:6px 0 10px;color:var(--n-ink);}
#projectsOverlay .prj-hero h1 span{color:var(--acqua);}
#projectsOverlay .prj-sub{margin:0;font-size:15px;color:var(--n-soft);line-height:1.5;}

/* ---- una sezione per modulo ---- */
#projectsOverlay .prj-sec{--mc:var(--acqua);margin-bottom:32px;}
#projectsOverlay .prj-sec.is-invest,#projectsOverlay .prj-card.is-invest{--mc:#ff7a3d;}
#projectsOverlay .prj-sec.is-cash,#projectsOverlay .prj-card.is-cash{--mc:#5cd696;}
#projectsOverlay .prj-sec-head{display:flex;align-items:center;gap:10px;margin:0 0 14px;}
#projectsOverlay .prj-sec-head h2{margin:0;font-size:17px;font-weight:700;color:var(--n-ink);}
#projectsOverlay .prj-sec-dot{width:9px;height:9px;border-radius:50%;background:var(--mc);flex-shrink:0;
  box-shadow:0 0 0 4px rgba(44,201,178,.16);box-shadow:0 0 0 4px color-mix(in srgb,var(--mc) 18%,transparent);}
#projectsOverlay .prj-sec-count{font-size:12px;font-weight:700;padding:2px 9px;border-radius:99px;color:var(--mc);
  background:rgba(44,201,178,.14);background:color-mix(in srgb,var(--mc) 15%,transparent);}

/* ---- tessere ---- */
#projectsOverlay .prj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;}
#projectsOverlay .prj-card{--mc:var(--acqua);display:flex;flex-direction:column;gap:13px;min-width:0;width:100%;
  margin:0;padding:17px 17px 12px;text-align:left;font:inherit;color:var(--n-ink);cursor:pointer;
  background:linear-gradient(180deg,var(--n-surf2),var(--n-surf));border:1px solid var(--n-line);
  border-top:3px solid var(--mc);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.28);
  transition:border-color .2s,transform .2s,box-shadow .2s;}
#projectsOverlay .prj-card:hover{border-color:rgba(44,201,178,.45);border-color:color-mix(in srgb,var(--mc) 50%,transparent);
  border-top-color:var(--mc);transform:translateY(-2px);box-shadow:0 12px 30px rgba(0,0,0,.36);}
#projectsOverlay .prj-card:focus-visible{outline:2px solid var(--mc);outline-offset:2px;}
#projectsOverlay .prj-head{display:flex;align-items:center;gap:13px;min-width:0;}
#projectsOverlay .prj-mono{flex:0 0 auto;width:44px;height:44px;border-radius:11px;display:flex;align-items:center;
  justify-content:center;font-size:15px;font-weight:700;letter-spacing:.03em;color:var(--mc);
  background:rgba(44,201,178,.14);background:color-mix(in srgb,var(--mc) 14%,transparent);
  border:1px solid rgba(44,201,178,.30);border-color:color-mix(in srgb,var(--mc) 32%,transparent);}
#projectsOverlay .prj-id{display:flex;flex-direction:column;min-width:0;}
#projectsOverlay .prj-name{font-size:16.5px;font-weight:700;letter-spacing:-.01em;line-height:1.25;color:var(--n-ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#projectsOverlay .prj-kind{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--mc);margin-top:4px;}
#projectsOverlay .prj-tags{display:flex;flex-wrap:wrap;gap:6px;}
#projectsOverlay .prj-tag{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:4px 11px;border-radius:999px;
  font-size:12.5px;font-weight:600;color:var(--n-ink);overflow-wrap:anywhere;
  background:rgba(233,243,241,.06);border:1px solid var(--n-line2);}
#projectsOverlay .prj-tag i{font-style:normal;font-size:12px;line-height:1;}
#projectsOverlay .prj-tag.is-group{background:rgba(92,214,150,.10);border-color:rgba(92,214,150,.32);}
#projectsOverlay .prj-tag.is-org{font-weight:500;color:var(--n-soft);background:transparent;border-style:dashed;}
#projectsOverlay .prj-foot{display:flex;align-items:center;gap:10px;margin-top:auto;padding-top:11px;border-top:1px solid var(--n-line);}
#projectsOverlay .prj-when{flex:1;min-width:0;font-size:12.5px;color:var(--n-faint);}
#projectsOverlay .prj-go{font-size:13px;font-weight:700;color:var(--mc);white-space:nowrap;transition:transform .15s;}
#projectsOverlay .prj-card:hover .prj-go{transform:translateX(3px);}

/* caricamento, errore, elenco tagliato */
#projectsOverlay .prj-empty{padding:28px 20px;border:1px dashed rgba(44,201,178,.45);border-radius:12px;
  background:rgba(44,201,178,.05);color:var(--n-soft);font-size:14.5px;text-align:center;}
#projectsOverlay .prj-more{font-size:13px;color:var(--n-faint);margin:-12px 0 24px;}

/* primo accesso: i tre inviti della Home, sulle tessere petrolio */
#projectsOverlay .home-start-card{background:linear-gradient(180deg,var(--n-surf2),var(--n-surf));
  border:1px solid var(--n-line);border-top:3px solid var(--acqua);border-radius:12px;color:var(--n-ink);
  box-shadow:0 8px 24px rgba(0,0,0,.28);}
#projectsOverlay .home-start-card:hover{border-color:rgba(44,201,178,.45);border-top-color:var(--acqua);background:var(--n-surf2);}
#projectsOverlay .home-start-name{color:var(--n-ink);}
#projectsOverlay .home-start-desc{color:var(--n-soft);}

@media (max-width:720px){
  #projectsOverlay .prj-hero{padding:22px 16px 0;margin-bottom:22px;}
  #projectsOverlay .prj-hero h1{font-size:27px;}
  #projectsOverlay .prj-grid{grid-template-columns:minmax(0,1fr);}
  #projectsOverlay .prj-card{padding:15px 14px 11px;}
}

/* Cash 18/09: «🏦 Conti bancari» — saldo di partenza, saldo banca, saldo Pianexa */
.cash-acc-sub{display:block;font-size:11.5px;font-weight:400;color:var(--ink-soft);margin-top:1px;white-space:normal}
.cash-acc-chip{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid var(--line);white-space:nowrap}
.cash-acc-chip.ok{color:var(--green);border-color:color-mix(in srgb, var(--green) 40%, var(--line));background:color-mix(in srgb, var(--green) 8%, transparent)}
.cash-acc-chip.bad{color:var(--red);border-color:color-mix(in srgb, var(--red) 45%, var(--line));background:color-mix(in srgb, var(--red) 7%, transparent)}
.cash-acc-chip.warn{color:var(--amber);border-color:color-mix(in srgb, var(--amber) 50%, var(--line));background:color-mix(in srgb, var(--amber) 8%, transparent)}
.cash-acc-chip.mute{color:var(--ink-soft);font-weight:400}
.cash-acc-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:12px 0 14px}
.cash-acc-step{display:flex;gap:11px;align-items:flex-start;padding:12px 14px;border:1px solid var(--line);border-top:3px solid #2cc9b2;border-radius:10px;background:var(--card);box-shadow:0 1px 2px rgba(14,27,46,.06)}
.cash-acc-step b.n{flex:0 0 28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:13px;background:#0b2a2e;color:#e9f3f1}
.cash-acc-step-t{display:block;font-size:14px;color:var(--ink);margin-bottom:2px}
.cash-acc-step.done{opacity:.72;border-top-color:var(--green)}
.cash-acc-step.done b.n{background:var(--green);color:#fff}
.cash-acc-table th .cash-acc-sub{font-weight:400;text-transform:none;letter-spacing:0;color:inherit;opacity:.8}
.cash-acc-table{min-width:0}
.cash-acc-table td{vertical-align:top}
/* 18/09 notte (Matteo, punto 2): i conti del piano sono schede, non righe
   di tabella. 19/09 sera (Matteo: «i box dei conti coerenti con il resto
   della piattaforma, più accattivanti»): tessere in griglia come le schede
   del piano (📅 Il periodo, 💶 La cassa) — filo acqua in testa, logo della
   banca, saldo di partenza grande col simbolo della valuta; il totale è una
   fascia petrolio sotto le tessere */
.cash-acc-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:12px;margin:12px 0 4px}
.cash-acc-card{display:flex;flex-direction:column;gap:10px;min-width:0;padding:14px 14px 12px;border:1px solid var(--line);border-top:3px solid #2cc9b2;border-radius:10px;background:var(--card);box-shadow:0 1px 2px rgba(14,27,46,.06);transition:box-shadow .15s,border-color .15s}
.cash-acc-card:hover{box-shadow:0 4px 14px rgba(14,27,46,.10)}
.cash-acc-card.editing{grid-column:1 / -1;border-color:#0fa38f;border-top-color:#0fa38f;box-shadow:0 0 0 3px rgba(44,201,178,.18)}
.cash-acc-card.bad{border-top-color:var(--red)}
.cash-acc-card.missing{border-top-color:var(--amber)}
.cash-acc-card.other{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;background:var(--paper);box-shadow:none;border:1px dashed var(--line-strong,var(--line))}
.cash-acc-card.other .cash-acc-head{flex:1 1 200px}
.cash-acc-card.other .cash-acc-main b{color:var(--ink-soft)}
.cash-acc-head{display:flex;align-items:flex-start;gap:11px;min-width:0}
.cash-acc-ico{flex:none;width:36px;height:36px;border-radius:8px;background:#e3f4f1;display:inline-flex;align-items:center;justify-content:center;font-size:18px}
.cash-acc-main{flex:1 1 auto;min-width:0;font-size:14.5px;line-height:1.3}
.cash-acc-main > b{display:block;font-size:15px;color:var(--ink);overflow-wrap:anywhere}
.cash-acc-main .cash-acc-sub{font-size:12.5px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.cash-acc-amt{display:flex;flex-direction:column;gap:1px;padding:10px 12px;border-radius:8px;background:var(--paper-2,var(--paper));font-variant-numeric:tabular-nums}
.cash-acc-lbl{display:block;font-size:12px;font-weight:600;color:var(--ink-soft)}
.cash-acc-money{font-size:21px;font-weight:700;color:#0b2a2e;letter-spacing:-.01em;line-height:1.25;white-space:nowrap}
.cash-acc-money.none{color:var(--ink-soft);font-weight:600}
.cash-acc-cur{color:#0fa38f;font-size:.8em}
.cash-acc-flag{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:13.5px}
.cash-acc-flag-bad{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.cash-acc-flag-t{font-weight:600;color:var(--red)}
.cash-acc-flag-bad .cash-acc-sub{flex-basis:100%;margin:0}
.cash-acc-co .cash-acc-lbl{margin-bottom:5px}
.cash-acc-btns{flex:0 0 auto;display:flex;gap:6px;margin-left:auto}
.cash-acc-edit{margin:2px -14px -12px;padding:14px;background:var(--paper-2,var(--paper));border-top:1px solid var(--line);border-radius:0 0 10px 10px;text-align:left;display:flex;flex-direction:column;gap:10px}
.cash-acc-editgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:12px;align-items:end}
.cash-acc-editbtns{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
.cash-acc-h3{display:flex;flex-wrap:wrap;align-items:center;gap:6px 11px;margin:20px 0 10px}
.cash-acc-h3t{margin:0;font-size:15.5px;font-weight:700;color:#0b2a2e;line-height:1.2}
.cash-acc-detailhead{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.cash-acc-disclose{font:inherit;font-size:14px;font-weight:700;color:#0b2a2e;background:#e3f4f1;border:1px solid transparent;border-radius:99px;padding:6px 14px;cursor:pointer;transition:border-color .15s}
.cash-acc-disclose:hover{border-color:#0fa38f}
.cash-acc-disclose:focus-visible{outline:2px solid #0fa38f;outline-offset:2px}
.cash-acc-count{display:inline;font-size:12.5px}
.cash-acc-empty{padding:14px 16px;border:1px dashed var(--line-strong,var(--line));border-radius:10px;background:var(--paper);color:var(--ink-soft);font-size:13.5px}
.cash-acc-snapform{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));gap:12px;align-items:end;margin:4px 0 12px;padding:14px;border:1px solid var(--line);border-top:3px solid #2cc9b2;border-radius:10px;background:var(--card)}
.cash-acc-snapbtns{display:flex;gap:6px;flex-wrap:wrap}
.cash-acc-snapnote{grid-column:1 / -1}
/* il totale: fascia petrolio sotto le tessere, sulla riga intera */
.cash-acc-total{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;padding:12px 16px;border-radius:10px;background:#0b2a2e;color:#e9f3f1;box-shadow:0 1px 2px rgba(14,27,46,.12)}
.cash-acc-total .cash-acc-main{flex:1 1 200px}
.cash-acc-total .cash-acc-main > b{color:#fff}
.cash-acc-total .cash-acc-sub{color:rgba(233,243,241,.72)}
.cash-acc-total .cash-acc-ico{background:rgba(44,201,178,.18);color:#2cc9b2;font-weight:700}
.cash-acc-total .cash-acc-amt{padding:0;background:transparent}
.cash-acc-total .cash-acc-money{color:#fff;font-size:23px}
.cash-acc-total .cash-acc-cur{color:#2cc9b2}
.cash-acc-total .cash-acc-flag{flex:0 1 auto}
.cash-acc-total .cash-acc-chip.mute{color:rgba(233,243,241,.8);border-color:rgba(233,243,241,.3)}
/* 19/09 (Matteo, punto 2): coincide = solo un ✓ verde, che lo dice al passaggio del mouse;
   non coincide = riga rossa con l'avviso per esteso */
.cash-acc-okmark{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--green);color:#fff;font-weight:700;font-size:14px;cursor:help}
.cash-acc-okmark:focus-visible{outline:2px solid #0fa38f;outline-offset:2px}
.cash-acc-total.bad{background:color-mix(in srgb, var(--red) 7%, var(--card));color:var(--ink);border:1px solid var(--red);box-shadow:0 0 0 1px color-mix(in srgb, var(--red) 35%, transparent)}
.cash-acc-total.bad .cash-acc-main > b{color:var(--ink)}
.cash-acc-total.bad .cash-acc-sub{color:var(--ink-soft)}
.cash-acc-total.bad .cash-acc-ico{background:color-mix(in srgb, var(--red) 12%, transparent);color:var(--red)}
.cash-acc-total.bad .cash-acc-money, .cash-acc-total.bad .cash-acc-cur{color:var(--red)}
.cash-acc-totwarn{display:flex;flex-direction:column;gap:2px;color:var(--red);font-size:13.5px}
.cash-acc-totwarn span{color:var(--ink)}
/* 19/09 (Matteo, punto 3): il menù delle banche con i monogrammi */
.cash-acc-ico.bank{background:transparent}
.cash-bank-badge{display:inline-flex;align-items:center;justify-content:center;flex:none;width:36px;height:36px;border-radius:8px;font-weight:700;font-size:13px;letter-spacing:-.02em;line-height:1;font-family:var(--sans, inherit)}
.cash-bank-badge.long{font-size:10.5px}
.cash-bank-badge.sm{width:24px;height:24px;border-radius:6px;font-size:10px}
.cash-bank-badge.sm.long{font-size:8px}
/* 19/09: il logo vero (css/img/banks/) su una tessera bianca, anche in tema scuro */
.cash-bank-badge.logo{background:#ffffff;border:1px solid var(--line);padding:3px;box-sizing:border-box;overflow:hidden}
.cash-bank-badge.logo.sm{padding:2px}
.cash-bank-badge.logo img{display:block;width:100%;height:100%;object-fit:contain}
.cash-bank-opt-n{display:flex;flex-direction:column;min-width:0;line-height:1.25}
.cash-bank-opt-n small{font-size:11px;font-weight:400;color:var(--ink-soft)}
.cash-bank-tag{margin-left:auto;padding:1px 7px;border-radius:999px;background:#e3f4f1;color:#0b6b5e;font-size:10.5px;font-weight:600;white-space:nowrap}
.cash-bank-more{grid-column:1/-1;padding:4px 8px}
.cash-bank-pick{position:relative}
.cash-bank-btn{display:inline-flex;align-items:center;gap:8px;min-width:220px;text-align:left;cursor:pointer;background:var(--card)}
.cash-bank-btn .cash-bank-caret{margin-left:auto;color:var(--ink-soft)}
.cash-bank-ph{color:var(--ink-soft)}
.cash-bank-menu{position:absolute;z-index:40;top:100%;left:0;margin-top:4px;width:min(560px, 86vw);padding:10px;background:var(--card);border:1px solid var(--line-strong);border-radius:10px;box-shadow:var(--shadow, 0 8px 24px rgba(14,27,46,.18))}
.cash-bank-q{width:100%;box-sizing:border-box;margin-bottom:8px}
.cash-bank-opts{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:4px;max-height:320px;overflow:auto}
.cash-bank-opt{display:flex;align-items:center;gap:8px;padding:5px 8px;border:1px solid transparent;border-radius:8px;background:transparent;font:inherit;font-size:13px;color:var(--ink);text-align:left;cursor:pointer}
.cash-bank-opt:hover, .cash-bank-opt:focus-visible{border-color:#0fa38f;background:#e3f4f1;outline:none}
.cash-bank-opt.sel{border-color:#0fa38f;font-weight:600}
.cash-bank-opt[hidden]{display:none}
.cash-bank-other{display:flex;flex-wrap:wrap;align-items:flex-end;gap:6px 8px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.cash-bank-other .cash-set-label{flex-basis:100%;margin:0}
.cash-bank-other .cash-set-input{flex:1 1 200px;width:auto}
.cash-acc-othershead{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-top:8px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.cash-acc-othershead-t{font-size:14px;color:var(--ink)}
@media (max-width:720px){ .cash-acc-total{padding:12px} .cash-acc-card.other .cash-acc-btns{margin-left:0} }
@media (max-width:720px){ .cash-acc-steps{grid-template-columns:minmax(0,1fr)} }
/* 19/09 sera (Matteo: «la tabella degli estratti conto più accattivante e
   coerente con la piattaforma»): riscontri ed estratti in una tabella con
   gli angoli tondi, l'intestazione acqua chiaro e la riga che si accende */
.cash-tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px;background:var(--card);box-shadow:0 1px 2px rgba(14,27,46,.06)}
.cash-tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.cash-tbl th{text-align:left;font-size:12px;font-weight:700;color:#0b2a2e;background:#e3f4f1;padding:9px 12px;white-space:nowrap;vertical-align:bottom}
.cash-tbl th .cash-acc-sub{font-weight:400;color:#0b6b5e}
.cash-tbl td{padding:10px 12px;border-top:1px solid var(--line);vertical-align:middle;text-align:left}
.cash-tbl tbody tr{transition:background .12s}
.cash-tbl tbody tr:hover{background:color-mix(in srgb, #2cc9b2 7%, transparent)}
.cash-tbl .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.cash-tbl .nowrap{white-space:nowrap}
.cash-tbl .strong{font-weight:600}
.cash-tbl .soft{color:var(--ink-soft);font-size:12.5px}
.cash-tbl .act{text-align:right;white-space:nowrap;width:1%}
.cash-tbl-none{color:var(--ink-soft)}
.cash-tbl-note{margin-top:6px}
.cash-stm-tbl{min-width:760px}
.cash-stm-file{display:flex;align-items:center;gap:10px;min-width:0}
.cash-stm-ico{flex:none;width:34px;height:34px;border-radius:8px;background:#e3f4f1;display:inline-flex;align-items:center;justify-content:center;font-size:16px}
.cash-stm-main{min-width:0}
.cash-stm-main > b{font-weight:600;color:var(--ink);overflow-wrap:anywhere}
.cash-stm-fmt{display:inline-block;margin-left:6px;padding:0 7px;border-radius:99px;background:var(--paper-2,var(--paper));border:1px solid var(--line);font-size:10.5px;font-weight:600;color:var(--ink-soft);vertical-align:1px;text-transform:uppercase;letter-spacing:.03em}
.cash-stm-n{font-size:15px;color:#0b2a2e}
/* 19/09 sera (Matteo: «le linee di credito coerenti con il layout della
   piattaforma»): una scheda per linea, come le schede del piano */
.cash-cl-list{display:flex;flex-direction:column;gap:12px;margin:12px 0 10px}
.cash-cl-card{background:var(--card);border:1px solid var(--line);border-top:3px solid #2cc9b2;border-radius:10px;box-shadow:0 1px 2px rgba(14,27,46,.06);padding:14px 16px;display:flex;flex-direction:column;gap:12px;min-width:0}
.cash-cl-head{flex-wrap:wrap}
.cash-cl-title{flex:1 1 220px;min-width:0;display:flex;flex-direction:column}
.cash-cl-name{font:inherit;font-size:15.5px;font-weight:700;color:#0b2a2e;background:transparent;border:1px solid transparent;border-radius:7px;padding:3px 7px;margin-left:-7px;min-width:0;transition:border-color .15s,box-shadow .15s}
.cash-cl-name:hover{border-color:var(--line-strong,var(--line))}
.cash-cl-name:focus{outline:none;border-color:#0fa38f;box-shadow:0 0 0 3px rgba(44,201,178,.22);background:var(--card)}
.cash-cl-title .cash-set-sub{margin-top:0}
.cash-cl-rank{flex:none;min-width:30px;height:30px;padding:0 6px;box-sizing:border-box;border-radius:99px;background:#0b2a2e;color:#e9f3f1;font-size:12.5px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;cursor:help}
.cash-cl-auto{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--ink-soft);padding:5px 10px;border:1px solid var(--line);border-radius:99px;background:var(--paper);cursor:pointer;white-space:nowrap}
.cash-cl-auto input{accent-color:#0fa38f;margin:0}
.cash-cl-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:12px}
.cash-cl-box .cash-cl-in{flex:1 1 auto;min-width:0}
.cash-cl-box .cash-set-input{width:100%;padding-right:4px}
.cash-set-cur.suf{padding:0 12px 0 2px;color:var(--ink-soft);font-weight:600}
.cash-cl-cond{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 14px;padding:10px 12px;border-radius:8px;background:var(--paper-2,var(--paper));border:1px solid var(--line)}
.cash-cl-cond-t{flex-basis:100%;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}
.cash-cl-mini{display:flex;flex-direction:column;gap:4px;min-width:120px;flex:0 1 170px}
.cash-cl-mini-l{font-size:12px;font-weight:600;color:var(--ink-soft)}
.cash-cl-mini-note{align-self:center;font-size:12.5px;color:var(--ink-soft)}
.cash-cl-order{margin:0 0 10px;line-height:1.5}
.cash-cl-order b{margin-left:0;background:transparent;padding:0;font-size:inherit}
.cash-cl-settle{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 10px}
.cash-cl-settle .cash-set-label{margin:0}
.cash-cl-settle .cash-set-input{width:auto;min-width:220px}
.cash-cl-guide{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:6px}
.cash-cl-guide li{display:flex;gap:9px;align-items:flex-start;font-size:12.5px;line-height:1.45;color:var(--ink-soft)}
.cash-cl-guide li b{color:var(--ink)}
.cash-cl-guide-ico{flex:none;width:24px;height:24px;border-radius:6px;background:#e3f4f1;display:inline-flex;align-items:center;justify-content:center;font-size:13px}
/* 19/09 sera: le regole di classificazione a schede, «Se … Allora …» */
.cash-set-input.sm{min-height:34px;padding:5px 9px;font-size:13.5px}
.cash-set-input.bad{border-color:var(--red)}
.cash-rule-intro{margin:0 0 10px}
.cash-rule-list{display:flex;flex-direction:column;gap:10px;margin:0 0 6px}
.cash-rule-card{background:var(--card);border:1px solid var(--line);border-left:3px solid #2cc9b2;border-radius:10px;box-shadow:0 1px 2px rgba(14,27,46,.06);padding:10px 14px 12px;display:flex;flex-direction:column;gap:8px;min-width:0}
.cash-rule-card.off{border-left-color:var(--line-strong,var(--line));background:var(--paper);box-shadow:none}
.cash-rule-card.off .cash-rule-row, .cash-rule-card.off .cash-rule-name{opacity:.6}
.cash-rule-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.cash-rule-on{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:#0b6b5e;background:#e3f4f1;border-radius:99px;padding:4px 10px;cursor:pointer;white-space:nowrap}
.cash-rule-card.off .cash-rule-on{color:var(--ink-soft);background:var(--paper-2,var(--paper));border:1px solid var(--line)}
.cash-rule-on input{accent-color:#0fa38f;margin:0}
.cash-rule-name{flex:1 1 200px}
.cash-rule-prio{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--ink-soft);white-space:nowrap}
.cash-rule-prio .cash-set-input{width:74px}
.cash-rule-hits{cursor:default;font-weight:500;color:var(--ink-soft)}
.cash-rule-hits:hover{border-color:var(--line);background:var(--paper);color:var(--ink-soft)}
.cash-rule-hits.on{color:#0b2a2e;background:#e3f4f1;border-color:transparent}
.cash-rule-row{display:flex;gap:12px;align-items:flex-start}
.cash-rule-tag{flex:0 0 52px;margin-top:22px;text-align:center;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#0b2a2e;background:#e3f4f1;border-radius:6px;padding:5px 0}
.cash-rule-tag.then{background:#0b2a2e;color:#e9f3f1}
.cash-rule-fields{flex:1 1 auto;min-width:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,120px),1fr));gap:8px 10px}
.cash-rule-fields .cash-set-label{font-size:11.5px;margin-bottom:3px}
.cash-rule-fields .wide{grid-column:span 2}
@media (max-width:720px){
  .cash-cl-card{padding:12px}
  .cash-rule-row{flex-direction:column;gap:6px}
  .cash-rule-tag{flex:none;align-self:flex-start;margin-top:0;padding:3px 10px}
  .cash-rule-fields{align-self:stretch}
  .cash-rule-fields .wide{grid-column:1 / -1}
}
/* Cash 18/09: finestra d'import, i saldi dell'estratto e cosa succede */
.cash-imp-saldi{display:flex;flex-wrap:wrap;gap:12px;margin:8px 0;padding:10px 12px;background:rgba(128,128,128,.06);border-radius:8px}
.cash-imp-calc{display:grid;grid-template-columns:auto auto minmax(0,1fr);gap:4px 12px;align-items:center;flex:0 1 520px;min-width:0}
.cash-imp-calc .num{text-align:right;padding-right:10px;font-variant-numeric:tabular-nums}
.cash-imp-calc .cash-acc-sub{margin:0}
.cash-imp-verdict{flex:1 1 300px;min-width:0;padding:10px 12px;border-radius:8px;border:1px solid var(--line);background:var(--paper);font-size:13.5px;line-height:1.45}
.cash-imp-verdict ul{margin:6px 0;padding-left:18px}
.cash-imp-verdict.ok{border-color:color-mix(in srgb, var(--green) 45%, var(--line))}
.cash-imp-verdict.ok > b{color:var(--green)}
.cash-imp-verdict.bad{border-color:color-mix(in srgb, var(--red) 45%, var(--line))}
.cash-imp-verdict.bad > b{color:var(--red)}
.cash-imp-verdict.mute{color:var(--ink-soft)}
.cash-imp-effects{margin:8px 0;padding:8px 12px;border:1px solid var(--line);border-radius:8px;display:flex;flex-direction:column;gap:4px;font-size:13.5px}
.cash-imp-effects label{display:flex;gap:8px;align-items:flex-start}
.cash-imp-effects input[type=checkbox]{margin-top:3px}
@media (max-width:720px){ .cash-imp-calc{grid-template-columns:minmax(0,1fr) auto} .cash-imp-calc .cash-acc-sub{grid-column:1/-1} }
/* 19/09: il perché dei numeri alla chiusura del mese (cash-perche.js) */
.cash-perche{margin-top:10px}
.cash-perche-q{margin:8px 0;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.cash-perche-head{font-size:12.5px;line-height:1.45}
.cash-perche-piu{color:var(--green);font-weight:600}
.cash-perche-meno{color:var(--red);font-weight:600}
.cash-perche-chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.cash-perche-chip{display:inline-flex;align-items:baseline;gap:5px;padding:4px 10px;border:1px solid var(--line-strong);border-radius:999px;background:transparent;font:inherit;font-size:12.5px;color:var(--ink);cursor:pointer}
.cash-perche-chip small{font-size:11px;color:var(--ink-soft)}
.cash-perche-chip:hover,.cash-perche-chip:focus-visible{border-color:#0fa38f;outline:none}
.cash-perche-chip.sel{border-color:#0fa38f;background:#e3f4f1;color:#0b2a2e;font-weight:600}
.cash-perche-chip.sel small{color:#0b6b5e}
.cash-perche-nota{width:100%;box-sizing:border-box;font-size:12.5px}
.cash-perche-list{margin:4px 0 6px;padding-left:18px;font-size:12.5px;line-height:1.5}
/* 19/09: la spiegazione diventa previsione (🔮 Correggi la previsione, cash-perche.js) */
.cash-perche-rett{margin-top:6px;padding:6px 8px;border-left:3px solid var(--line-strong);border-radius:0 8px 8px 0;font-size:12.5px;line-height:1.5}
.cash-perche-rett.on{border-left-color:#0fa38f;background:#f0f9f7}
.cash-perche-rett .fld-hint{margin-top:3px}
.cash-perche-applica{cursor:pointer;margin-right:4px}
.cash-perche-applica input{vertical-align:-2px}
.cash-perche-mese{width:auto;display:inline-block;padding:2px 6px;font-size:12.5px}
.cash-perche-pct{width:72px;display:inline-block;padding:2px 6px;font-size:12.5px;text-align:right}
.cash-perche-rettificata{color:#0b6b5e}
.cash-month-prop-off{opacity:.6;cursor:default}
.cash-month-prop-off > span:first-of-type{text-decoration:line-through}
.cash-month-prop-off .fld-hint{text-decoration:none;display:inline}
/* 19/09: le ipotesi del budget (cash-ipotesi.js) */
.cash-ipo-item{border:1px solid var(--line);border-radius:8px;background:var(--card);padding:8px 10px;margin-top:8px}
.cash-ipo-body{font-size:14px;font-weight:600;color:var(--ink);margin-bottom:2px;overflow-wrap:anywhere}
.cash-ipo-edit{display:flex;flex-direction:column;gap:6px}
.cash-ipo-fields{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:flex-end}
.cash-ipo-fields label{display:flex;flex-direction:column;gap:3px;font-size:12.5px;color:var(--ink-soft)}
.cash-ipo-fields select.fin-in{max-width:320px}
.cash-ipo-num{width:110px;text-align:right}
.cash-ipo-checks{display:inline-flex;flex-wrap:wrap;gap:4px;vertical-align:middle}
.cash-ipo-check{display:inline-block;padding:0 7px;border-radius:999px;border:1px solid var(--line);font-size:11.5px;line-height:1.6;white-space:nowrap}
.cash-ipo-check.cash-ipo-ok{border-color:color-mix(in srgb, var(--green) 45%, var(--line));color:var(--green)}
.cash-ipo-check.cash-ipo-ko{border-color:color-mix(in srgb, var(--red) 45%, var(--line));color:var(--red)}
.cash-ipo-check.cash-ipo-na{color:var(--ink-soft)}
.cash-ipo-chiusura{margin-top:12px}
.cash-ipo-riga{display:flex;gap:8px;align-items:flex-start;margin:6px 0;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--card);font-size:12.5px;line-height:1.45}
.cash-ipo-riga .cash-perche-chips{margin:6px 0 0}
.cash-ipo-esito{flex:none;width:20px;text-align:center;font-weight:700}
.cash-ipo-riga.cash-ipo-ok{border-color:color-mix(in srgb, var(--green) 40%, var(--line))}
.cash-ipo-riga.cash-ipo-ok .cash-ipo-esito{color:var(--green)}
.cash-ipo-riga.cash-ipo-ko{border-color:color-mix(in srgb, var(--red) 40%, var(--line))}
.cash-ipo-riga.cash-ipo-ko .cash-ipo-esito{color:var(--red)}
.cash-ipo-riga.cash-ipo-na,.cash-ipo-riga.cash-ipo-attesa{color:var(--ink-soft)}
/* 19/09: conversazioni sui numeri (conversazioni.js). Arancio = da leggere,
   acqua = aperta e letta, grigio = risolta. Si deve vedere che c'e' una
   conversazione: barra in testa al piano, triangolo nell'angolo delle celle,
   pallino sui mesi, pillola sulle righe, numero rosso in barra laterale. */
.conv-nav-badge.off{display:none}
/* 19/09 sera (Matteo: «piu' chiare e visibili»): nuvoletta disegnata
   (.conv-ico, prende il colore del tasto) al posto dell'emoji, tasti pieni
   nella barra, nuvolette piene e piu' grandi su celle e righe. */
.conv-ico{width:1.15em;height:1.15em;flex:none;display:inline-block;vertical-align:-.2em}
.conv-bar{margin:12px 0 6px;border:1px solid color-mix(in srgb, #2cc9b2 45%, var(--line));border-left:5px solid #2cc9b2;border-radius:10px;background:color-mix(in srgb, #2cc9b2 8%, var(--card));padding:10px 14px;font-size:14px;box-shadow:0 1px 3px rgba(8,29,32,.08)}
.conv-bar:empty{display:none}
.conv-bar.has{background:color-mix(in srgb, #2cc9b2 13%, var(--card))}
.conv-bar.unread{border-color:#ff7a3d;border-left-color:#ff7a3d;background:color-mix(in srgb, #ff7a3d 11%, var(--card));box-shadow:0 0 0 3px rgba(255,122,61,.16)}
.conv-bar-main{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.conv-bar-ico{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:#0b2a2e;color:#2cc9b2;font-size:18px;flex:none}
.conv-bar.unread .conv-bar-ico{background:#ff7a3d;color:#fff}
.conv-bar-txt{flex:1 1 260px;color:var(--ink);line-height:1.35}
.conv-bar-txt b{font-size:15px}
.conv-bar-hint{display:block;margin-top:2px;font-size:12.5px;color:var(--ink-soft)}
.conv-bar-hint .conv-ico{color:#0b6b5e}
.conv-bar-unread{display:inline-block;margin-left:6px;padding:1px 9px;border-radius:999px;background:#ff7a3d;color:#fff;font-weight:700;font-size:12.5px}
.conv-bar-actions{display:flex;flex-wrap:wrap;gap:8px}
.conv-bar-btn{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 15px;border:1px solid #0b2a2e;border-radius:999px;background:#0b2a2e;color:#fff;font:inherit;font-size:13.5px;font-weight:600;cursor:pointer;text-decoration:none;white-space:nowrap;box-shadow:0 1px 3px rgba(8,29,32,.25);transition:background .15s,transform .08s}
.conv-bar-btn .conv-ico{color:#2cc9b2}
.conv-bar-btn:hover{background:#0f3d42;border-color:#0f3d42}
.conv-bar-btn:active{transform:translateY(1px)}
.conv-bar-btn:focus-visible{outline:3px solid #2cc9b2;outline-offset:2px}
.conv-bar-btn.all{background:var(--card);color:#0b2a2e;border-color:#0b2a2e;box-shadow:none}
.conv-bar-btn.all:hover{background:color-mix(in srgb, #2cc9b2 14%, var(--card))}
.conv-bar-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.conv-chip{display:inline-flex;align-items:center;gap:7px;border:1.5px solid color-mix(in srgb, #2cc9b2 60%, var(--line));border-radius:999px;background:var(--card);color:var(--ink);padding:5px 12px;font:inherit;font-size:13px;font-weight:600;cursor:pointer;text-decoration:none;max-width:100%}
.conv-chip .conv-ico{color:#0b6b5e}
.conv-chip:hover{border-color:#0b6b5e;background:color-mix(in srgb, #2cc9b2 10%, var(--card))}
.conv-chip.unread{border-color:#ff7a3d;background:color-mix(in srgb, #ff7a3d 14%, var(--card));font-weight:700}
.conv-chip-n{display:inline-block;min-width:18px;padding:0 5px;border-radius:9px;background:#0b2a2e;color:#fff;font-size:11.5px;font-weight:700;text-align:center;font-variant-numeric:tabular-nums}
.conv-chip.unread .conv-chip-n{background:#ff7a3d}
.conv-chip-dot{width:10px;height:10px;border-radius:50%;background:#ff7a3d;flex:none;box-shadow:0 0 0 3px rgba(255,122,61,.25)}
.conv-chip.more{color:#0b2a2e}

/* griglia voce x mese: triangolo nell'angolo + tasto 💬 al passaggio */
td.conv-cell{position:relative}
td.conv-cell.conv-unread::before,td.conv-cell.conv-open::before,td.conv-cell.conv-resolved::before{content:"";position:absolute;top:0;right:0;width:0;height:0;border-style:solid;border-width:0 11px 11px 0;border-color:transparent #2cc9b2 transparent transparent;pointer-events:none}
td.conv-cell.conv-unread::before{border-width:0 14px 14px 0;border-right-color:#ff7a3d}
td.conv-cell.conv-resolved::before{border-right-color:#b7c1d1}
td.conv-cell.conv-unread{box-shadow:inset 0 0 0 2px rgba(255,122,61,.55)}
/* nuvoletta a forma di fumetto (angolo in basso a sinistra), piena:
   petrolio = scrivi, acqua = aperta, arancio = da leggere, grigio = risolta */
.conv-cell-btn{position:absolute;left:3px;top:50%;transform:translateY(-50%);display:none;align-items:center;justify-content:center;gap:3px;min-width:26px;height:22px;padding:0 6px;border:0;border-radius:11px 11px 11px 3px;background:#0b2a2e;color:#2cc9b2;font:inherit;font-size:13px;font-weight:700;line-height:22px;cursor:pointer;z-index:2;box-shadow:0 1px 4px rgba(8,29,32,.35)}
.conv-cell-btn .conv-n{font-size:11.5px;color:#fff}
td.conv-cell:hover .conv-cell-btn,td.conv-cell:focus-within .conv-cell-btn,.conv-cell-btn.has{display:inline-flex}
td.conv-cell:hover .conv-cell-btn:not(.has){animation:convPop .12s ease-out}
@keyframes convPop{from{transform:translateY(-50%) scale(.7);opacity:.3}to{transform:translateY(-50%) scale(1);opacity:1}}
td.conv-open .conv-cell-btn.has{background:#2cc9b2;color:#062b27}
td.conv-open .conv-cell-btn.has .conv-n{color:#062b27}
td.conv-unread .conv-cell-btn.has{background:#ff7a3d;color:#fff}
td.conv-resolved .conv-cell-btn.has{background:#dfe5ee;color:#5c6b82;box-shadow:none}
td.conv-resolved .conv-cell-btn.has .conv-n{color:#5c6b82}
.conv-cell-btn:hover{filter:brightness(1.08);box-shadow:0 2px 8px rgba(8,29,32,.4)}
.conv-cell-btn:focus-visible{outline:2px solid #0b2a2e;outline-offset:1px}
/* con una conversazione la nuvoletta resta: il numero si sposta a destra */
.cash-grid td.conv-cell.conv-open,.cash-grid td.conv-cell.conv-unread,.cash-grid td.conv-cell.conv-resolved{padding-left:44px}

/* pillola sulle righe (nome voce, consuntivo, Revisioni) */
.conv-pill{display:inline-flex;align-items:center;gap:4px;margin-left:8px;padding:0 8px;height:22px;border-radius:11px 11px 11px 3px;border:1.5px solid #0b2a2e;background:var(--card);color:#0b2a2e;font:inherit;font-size:12px;font-weight:700;line-height:20px;cursor:pointer;vertical-align:middle;white-space:nowrap}
.conv-pill .conv-ico{font-size:13px}
.conv-pill.open{border-color:#2cc9b2;color:#062b27;background:#2cc9b2}
.conv-pill.unread{border-color:#ff7a3d;color:#fff;background:#ff7a3d;box-shadow:0 0 0 3px rgba(255,122,61,.2)}
.conv-pill.resolved{border-color:#dfe5ee;background:#dfe5ee;color:#5c6b82}
.conv-pill:hover{filter:brightness(1.06)}
.conv-pill.add{opacity:.55;border-color:#8fb0ab;color:#0b6b5e}
tr:hover > td > .conv-pill.add,tr:focus-within > td > .conv-pill.add,.conv-pill.add:focus-visible{opacity:1;border-color:#0b2a2e;background:#0b2a2e;color:#2cc9b2}
tr.conv-row-has > td:first-child{box-shadow:inset 3px 0 0 #2cc9b2}
tr.conv-row-has:has(.conv-pill.unread) > td:first-child{box-shadow:inset 3px 0 0 #ff7a3d}

/* pallino sui mesi (striscia e intestazioni della griglia) */
.cash-month-chip,.cash-grid-mbtn{position:relative}
.conv-dot{position:absolute;top:-4px;right:-4px;width:11px;height:11px;border-radius:50%;background:#2cc9b2;border:2px solid var(--card);pointer-events:auto}
.conv-dot.unread{background:#ff7a3d;width:13px;height:13px;box-shadow:0 0 0 2px rgba(255,122,61,.3)}
.conv-dot.resolved{background:#b7c1d1}

.conv-flash{animation:convFlash 2.2s ease-out 1}
@keyframes convFlash{0%,40%{box-shadow:0 0 0 3px #ff7a3d, 0 0 18px rgba(255,122,61,.55)}100%{box-shadow:0 0 0 0 rgba(255,122,61,0)}}

/* pannello del filo */
.conv-drawer.on{display:flex}
.conv-dr-title{display:flex;gap:10px;align-items:flex-start;min-width:0}

/* 19/09 sera (Matteo): ⚙️ Impostazioni del piano rivista. I campi del piano
   sono due schede (📅 Il periodo, 💶 La cassa) con l'icona su tessera acqua
   come i tasti delle schede, etichette in inchiostro al posto dell'oro
   maiuscolo del vecchio form, campi a 8px con l'anello acqua sul fuoco;
   l'orizzonte a tasti affiancati; in testa la riga «Vai a»; le sezioni
   della scheda separate da un filo, titoli in petrolio. */
.cash-set-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:14px}
.cash-set-card{background:var(--card);border:1px solid var(--line);border-top:3px solid #2cc9b2;border-radius:10px;box-shadow:0 1px 2px rgba(14,27,46,.06);padding:16px 18px 14px;display:flex;flex-direction:column;gap:14px;min-width:0}
.cash-set-head{display:flex;align-items:center;gap:11px}
.cash-set-ico{flex:none;width:36px;height:36px;border-radius:8px;background:#e3f4f1;color:#0b2a2e;display:inline-flex;align-items:center;justify-content:center;font-size:18px}
.cash-set-title{font-size:15.5px;font-weight:700;color:#0b2a2e;line-height:1.2}
.cash-set-sub{font-size:12.5px;color:var(--ink-soft);margin-top:2px}
.cash-set-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.cash-set-field{min-width:0}
.cash-set-label{display:block;font-size:12.5px;font-weight:600;color:var(--ink-soft);margin:0 0 5px}
.cash-set-label-note{font-weight:400}
.cash-set-input{width:100%;box-sizing:border-box;min-height:40px;padding:8px 11px;font:inherit;font-size:14.5px;color:var(--ink);background:var(--card);border:1px solid var(--line-strong,var(--line));border-radius:8px;transition:border-color .15s,box-shadow .15s}
.cash-set-input:hover:not(:disabled){border-color:#0fa38f}
.cash-set-input:focus{outline:none;border-color:#0fa38f;box-shadow:0 0 0 3px rgba(44,201,178,.22)}
.cash-set-input:disabled{background:var(--paper-2,var(--paper));color:var(--ink-soft);cursor:not-allowed}
select.cash-set-input{cursor:pointer}
.cash-set-money{display:flex;align-items:center;min-height:40px;box-sizing:border-box;background:var(--card);border:1px solid var(--line-strong,var(--line));border-radius:8px;transition:border-color .15s,box-shadow .15s}
.cash-set-money:hover{border-color:#0fa38f}
.cash-set-money:focus-within{border-color:#0fa38f;box-shadow:0 0 0 3px rgba(44,201,178,.22)}
.cash-set-cur{flex:none;padding:0 2px 0 12px;font-weight:700;color:#0fa38f;white-space:nowrap}
.cash-set-money .cash-set-input{border:0;box-shadow:none;background:transparent;min-height:0;padding-left:6px;font-variant-numeric:tabular-nums}
.cash-set-big .cash-set-money{min-height:54px}
.cash-set-big .cash-set-cur{font-size:20px;padding-left:14px}
.cash-set-big .cash-set-input{font-size:25px;font-weight:700;color:#0b2a2e;letter-spacing:-.01em}
.cash-set-seg{display:flex;flex-wrap:wrap;gap:3px;padding:3px;background:var(--paper-2,var(--paper));border:1px solid var(--line);border-radius:9px}
.cash-set-seg button{flex:1 1 auto;font:inherit;font-size:13px;font-weight:600;padding:7px 10px;border:0;border-radius:7px;background:transparent;color:var(--ink-soft);cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}
.cash-set-seg button:hover{background:var(--card);color:var(--ink)}
.cash-set-seg button:focus-visible{outline:2px solid #0fa38f;outline-offset:1px}
.cash-set-seg button[aria-pressed="true"]{background:#0b2a2e;color:#e9f3f1;cursor:default;box-shadow:0 1px 2px rgba(14,27,46,.25)}
.cash-set-span{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;font-size:13px;color:#0b2a2e;background:#e3f4f1;border-radius:8px;padding:8px 12px}
.cash-set-span b{margin-left:auto;font-weight:700;color:#0b2a2e;background:#fff;border-radius:99px;padding:1px 10px;font-size:12.5px}
.cash-set-note{font-size:12px;color:var(--ink-soft);line-height:1.45}
.cash-set-accs{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;font-size:12.5px;color:var(--ink-soft);padding:7px 8px 7px 11px;border:1px dashed var(--line-strong,var(--line));border-radius:8px}
.cash-set-accs-txt{color:var(--ink)}
.cash-set-accs-ok{color:var(--green);font-weight:600}
.cash-set-accs-diff{color:var(--amber,#b7791f);font-weight:600}
.cash-set-accs.is-diff{border-style:solid;border-color:color-mix(in srgb, var(--amber,#b7791f) 45%, var(--line))}
.cash-set-accs-btns{display:inline-flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.cash-set-nav{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;margin:14px 0 4px;padding:10px 12px;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:0 1px 2px rgba(14,27,46,.06)}
.cash-set-nav-grp{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px}
.cash-set-nav-lbl{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);margin-right:2px}
.cash-set-chip{font:inherit;font-size:12.5px;font-weight:600;display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:99px;border:1px solid var(--line);background:var(--paper);color:var(--ink);cursor:pointer;transition:border-color .15s,background .15s}
.cash-set-chip:hover{border-color:#0fa38f;background:#e3f4f1;color:#0b2a2e}
.cash-set-chip:focus-visible{outline:2px solid #0fa38f;outline-offset:2px}
.cash-set-chip-n{min-width:18px;padding:0 5px;border-radius:99px;background:#e3f4f1;color:#0b2a2e;font-size:11px;font-weight:700;text-align:center;line-height:18px}
#cashTab_impostazioni > .dash-section{scroll-margin-top:84px}
#cashTab_impostazioni > .dash-section + .dash-section{margin-top:26px;padding-top:20px;border-top:1px solid var(--line)}
#cashTab_impostazioni > .dash-section > .dash-section-head .dash-section-title{font-size:16px;color:#0b2a2e}
@media (max-width:600px){
  .cash-set-card{padding:14px 14px 12px}
  .cash-set-big .cash-set-input{font-size:21px}
  .cash-set-accs-btns{margin-left:0}
  .cash-set-nav{gap:8px}
}
.conv-msg.deleted{opacity:.6}
.conv-msg-body{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.45}
.conv-msg-tools{display:flex;gap:10px;justify-content:flex-end;margin-top:4px}
.conv-dr-foot{display:flex;align-items:center;gap:10px;margin-top:6px}
.conv-dr-compose > .conv-hint.warn{display:block;margin-bottom:6px}
/* 19/09 ✉️ dopo l'invio: il riquadro sta sopra il testo, il menu si apre verso l'alto (il pannello finisce in fondo allo schermo) */
.conv-dr-compose > .conv-mail-box{margin:0 0 10px;padding:10px 12px;font-size:13px}
.conv-dr-compose > .conv-mail-box .px-mail-box-txt{flex-basis:220px}
.conv-dr-compose > .conv-mail-box .px-mail-menu{top:auto;bottom:calc(100% + 4px)}
/* 19/09 sera: «Programma di posta» che non apre niente → avviso in basso con le altre strade */
.px-mail-hint{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:9000;width:min(620px,calc(100vw - 32px));margin:0;background:var(--card,#fff);box-shadow:0 10px 30px rgba(0,0,0,.18)}
.px-mail-hint::before{content:"";position:absolute;inset:0;border-radius:inherit;background:rgba(44,201,178,.10);pointer-events:none}
.px-mail-hint .px-mail-box-txt{flex:1 1 300px}
.px-mail-hint-alt{display:flex;flex-wrap:wrap;gap:6px;position:relative}

/* pop-up dal vivo */
.conv-toasts{position:fixed;right:18px;bottom:18px;z-index:1300;display:flex;flex-direction:column;gap:10px;width:360px;max-width:calc(100vw - 32px)}
.conv-toasts:empty{display:none}
@keyframes convIn{from{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}
.conv-toast-head{display:flex;align-items:center;gap:6px}
.conv-toast-body{margin:6px 0 8px;white-space:pre-wrap;overflow-wrap:anywhere;max-height:9em;overflow:auto;line-height:1.45;font-size:13.5px}
.conv-toast-actions{display:flex;gap:6px;justify-content:flex-end}

/* finestra all'arrivo */
.conv-modal-head{display:flex;gap:12px;align-items:flex-start}
.conv-arrival-list{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.conv-arrival-who{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:13px}
.conv-arrival-who .conv-when{margin-left:auto}
.conv-excerpt{display:block;font-size:13px;margin-top:3px;white-space:pre-wrap;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
/* 💬 pannello laterale e pop-up delle conversazioni con la grafica della
   piattaforma, 19/09 (Matteo: «allinea anche il pannello laterale e i
   pop-up»). Il foglio petrolio dei pannelli «Nuovo…» (.px-sheet) col filo
   in testa nel colore: acqua il pannello, arancio «Mentre eri via» e i
   messaggi a comparsa, che sono da leggere. Nuvoletta su tessera, occhiello
   maiuscolo, campi scuri con l'anello sul fuoco, tasti come .px-btn. */
.conv-drawer,.conv-modal,.conv-toast,.conv-toast-more{--mc:#2cc9b2;--n-bg:#081d20;--n-surf:#0f2a2e;--n-surf2:#143539;--n-ink:#e9f3f1;--n-soft:#b3cdc9;--n-faint:#8fb0ab;
  --n-line:rgba(233,243,241,.10);--n-line2:rgba(233,243,241,.18);--n-hot:#ff7a3d;--n-danger:#ff8a7a;font-family:var(--sans);color:var(--n-ink)}
.conv-modal,.conv-toast,.conv-toast-more{--mc:#ff7a3d}
.conv-kicker{font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--mc)}
.conv-x{flex:0 0 auto;width:30px;height:30px;margin-left:auto;border-radius:7px;border:1px solid transparent;background:transparent;color:var(--n-faint);font-size:14px;line-height:1;cursor:pointer}
.conv-x:hover{color:var(--n-ink);border-color:var(--n-line2)}
.conv-x:focus-visible{outline:2px solid var(--mc);outline-offset:1px}
.conv-drawer .btn,.conv-modal .btn,.conv-toast .btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:8px;font-family:inherit;font-size:13px;font-weight:600;line-height:1.2;
  background:transparent;border:1px solid var(--n-line2);color:var(--n-ink);box-shadow:none;transition:border-color .15s,color .15s,filter .15s}
.conv-drawer .btn:hover,.conv-modal .btn:hover,.conv-toast .btn:hover{background:transparent;border-color:var(--mc);color:var(--mc);box-shadow:none}
.conv-drawer .btn.primary,.conv-modal .btn.primary,.conv-toast .btn.primary{background:var(--mc);border-color:var(--mc);color:#0b2a2e;font-weight:700}
.conv-drawer .btn.primary:hover,.conv-modal .btn.primary:hover,.conv-toast .btn.primary:hover{background:var(--mc);filter:brightness(1.08);color:#0b2a2e}
.conv-drawer .btn.ghost,.conv-modal .btn.ghost,.conv-toast .btn.ghost{border-color:transparent;color:var(--n-soft)}
.conv-drawer .btn.ghost:hover,.conv-modal .btn.ghost:hover,.conv-toast .btn.ghost:hover{border-color:var(--n-line2);color:var(--n-ink)}
.conv-drawer .btn:disabled,.conv-modal .btn:disabled,.conv-toast .btn:disabled{opacity:.45;cursor:not-allowed;filter:none}
.conv-drawer .btn:focus-visible,.conv-modal .btn:focus-visible,.conv-toast .btn:focus-visible{outline:2px solid var(--mc);outline-offset:2px}
.conv-dr-bar .btn.ghost{border-color:var(--n-line2);color:var(--n-ink)}
/* il pannello laterale */
.conv-drawer{position:fixed;top:0;right:0;bottom:0;width:440px;max-width:100%;z-index:1200;display:none;flex-direction:column;background:var(--n-bg);border-left:1px solid var(--n-line2);box-shadow:-24px 0 60px rgba(0,0,0,.45);font-size:13.5px}
.conv-dr-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 18px 14px;background:linear-gradient(180deg,var(--n-surf2),var(--n-surf));border-top:3px solid var(--mc)}
.conv-dr-ico{flex:none;width:38px;height:38px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--mc) 16%,transparent);color:var(--mc)}
.conv-dr-ico .conv-ico{width:19px;height:19px}
.conv-dr-obj{margin-top:3px;font-size:19px;font-weight:700;letter-spacing:-.01em;line-height:1.25;overflow-wrap:anywhere}
.conv-dr-plan{display:inline-flex;align-items:center;gap:6px;max-width:100%;box-sizing:border-box;margin-top:8px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;color:var(--n-soft);background:rgba(233,243,241,.06);border:1px solid var(--n-line2);overflow-wrap:anywhere}
.conv-dr-plan i{font-style:normal}
.conv-dr-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:10px 18px;background:var(--n-surf);border-bottom:1px solid var(--n-line)}
.conv-status{display:inline-flex;align-items:center;gap:5px;margin-right:auto;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:700;border:1px solid var(--n-line2);color:var(--n-soft)}
.conv-status.open{color:#2cc9b2;border-color:rgba(44,201,178,.5);background:rgba(44,201,178,.12)}
.conv-status.resolved{color:var(--n-soft);background:rgba(233,243,241,.05)}
.conv-status.new{color:var(--n-faint);font-weight:600;border-style:dashed}
.conv-dr-msgs{flex:1;overflow:auto;padding:16px 18px;display:flex;flex-direction:column;gap:10px;background:var(--n-bg)}
.conv-empty{color:var(--n-faint);font-size:13px;line-height:1.5;padding:22px 8px;text-align:center}
.conv-empty b{color:var(--mc)}
.conv-msg{max-width:88%;align-self:flex-start;background:var(--n-surf2);border:1px solid var(--n-line2);border-radius:12px 12px 12px 4px;padding:8px 11px}
.conv-msg.mine{align-self:flex-end;background:color-mix(in srgb,#2cc9b2 16%,var(--n-surf));border-color:rgba(44,201,178,.4);border-radius:12px 12px 4px 12px}
.conv-msg-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline;font-size:12px;margin-bottom:3px}
.conv-when{font-size:11.5px;color:var(--n-faint);white-space:nowrap}
.conv-at{font-weight:700;color:#7fe3d4;background:rgba(44,201,178,.16);border-radius:4px;padding:0 3px}
.conv-link{border:0;background:none;padding:0;font:inherit;font-size:11.5px;color:var(--n-faint);cursor:pointer;text-decoration:underline}
.conv-link:hover{color:var(--n-ink)}
.conv-link.danger{color:var(--n-danger);font-weight:700}
.conv-dr-compose{position:relative;border-top:1px solid var(--n-line);padding:12px 18px 16px;background:var(--n-surf)}
.conv-dr-compose textarea,.conv-edit,.conv-toast-reply textarea{width:100%;box-sizing:border-box;resize:vertical;font:inherit;font-size:14px;line-height:1.45;color:var(--n-ink);
  background:var(--n-bg);border:1px solid var(--n-line2);border-radius:10px;padding:9px 12px;transition:border-color .15s,box-shadow .15s}
.conv-dr-compose textarea{min-height:68px}
.conv-edit{margin-top:4px}
.conv-toast-reply textarea{margin-bottom:8px;font-size:13.5px}
.conv-dr-compose textarea::placeholder,.conv-edit::placeholder,.conv-toast-reply textarea::placeholder{color:var(--n-faint)}
.conv-dr-compose textarea:focus,.conv-edit:focus,.conv-toast-reply textarea:focus{outline:none;border-color:var(--mc);box-shadow:0 0 0 3px color-mix(in srgb,var(--mc) 24%,transparent)}
.conv-dr-compose textarea:disabled{opacity:.6}
.conv-hint{flex:1;font-size:11.5px;color:var(--n-faint);line-height:1.4}
.conv-hint b{color:var(--n-ink)}
.conv-hint.warn{color:#ffb38a}
/* ✉️ dopo l'invio e il suo menu, dentro il pannello scuro */
.conv-drawer .px-mail-box{background:rgba(44,201,178,.10);border-color:rgba(44,201,178,.45);color:var(--n-soft)}
.conv-drawer .px-mail-box-txt b{color:var(--n-ink)}
.conv-drawer .px-mail-box .px-mail-more > summary.btn.ghost{background:transparent;border-color:rgba(44,201,178,.6);color:var(--n-ink)}
.conv-drawer .px-mail-menu{background:var(--n-surf2);border-color:var(--n-line2);box-shadow:0 18px 40px rgba(0,0,0,.5)}
.conv-drawer .px-mail-menu-head,.conv-drawer .px-mail-item-hint{color:var(--n-faint)}
.conv-drawer .px-mail-item{color:var(--n-ink)}
.conv-drawer .px-mail-item:hover,.conv-drawer .px-mail-item:focus-visible{background:rgba(233,243,241,.07)}
/* @menzioni */
.conv-mention-box{position:absolute;left:18px;right:18px;bottom:calc(100% - 6px);background:var(--n-surf2);border:1px solid var(--n-line2);border-radius:10px;box-shadow:0 -12px 32px rgba(0,0,0,.45);max-height:240px;overflow:auto;padding:5px;z-index:2}
.conv-mention-cap{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--n-faint);padding:3px 8px 5px}
.conv-mention-it{padding:7px 9px;border-radius:7px;cursor:pointer;font-weight:600;color:var(--n-ink)}
.conv-mention-it.sel,.conv-mention-it:hover{background:rgba(44,201,178,.16);color:#7fe3d4}
/* i messaggi a comparsa */
.conv-toast{background:linear-gradient(180deg,var(--n-surf2),var(--n-surf));border:1px solid var(--n-line2);border-top:3px solid var(--mc);border-radius:12px;box-shadow:0 18px 44px rgba(0,0,0,.45);padding:12px 14px;font-size:13px;animation:convIn .25s ease-out}
.conv-toast .conv-toast-head{gap:8px;color:var(--n-soft)}
.conv-toast-head b{color:var(--n-ink)}
.conv-toast-ico{flex:none;width:28px;height:28px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;background:var(--mc);color:#0b2a2e}
.conv-toast-ico .conv-ico{width:15px;height:15px}
.conv-toast-err{color:var(--n-danger);font-size:12px;margin-bottom:6px}
.conv-toast-more{align-self:flex-end;border:1px solid var(--n-line2);background:var(--n-surf);border-radius:999px;padding:6px 14px;font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;box-shadow:0 10px 26px rgba(0,0,0,.4)}
.conv-toast-more:hover{border-color:var(--mc);color:var(--mc)}
.conv-place{display:block;margin-top:3px;font-size:12px;color:var(--n-faint);overflow-wrap:anywhere}
/* «Mentre eri via» */
.conv-modal-back{position:fixed;inset:0;z-index:1400;display:flex;align-items:flex-start;justify-content:center;padding:8vh 16px 16px;background:rgba(3,12,14,.66);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);overflow:auto}
.conv-modal{width:580px;max-width:100%;box-sizing:border-box;border-radius:14px;background:linear-gradient(180deg,var(--n-surf2),var(--n-surf));border:1px solid var(--n-line2);border-top:3px solid var(--mc);box-shadow:0 24px 60px rgba(0,0,0,.5);padding:20px 22px 0}
.conv-modal-ico{flex:none;width:42px;height:42px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:var(--mc);color:#0b2a2e}
.conv-modal-ico .conv-ico{width:21px;height:21px}
.conv-modal h2{margin:4px 0;font-size:22px;font-weight:700;letter-spacing:-.01em;color:var(--n-ink)}
.conv-modal-head p{margin:0;color:var(--n-soft);font-size:13.5px;line-height:1.5}
.conv-arrival-item{display:block;width:100%;text-align:left;border:1px solid var(--n-line2);border-left:3px solid var(--mc);border-radius:10px;background:var(--n-bg);color:var(--n-ink);padding:10px 13px;font:inherit;cursor:pointer;transition:border-color .15s,background .15s}
.conv-arrival-item:hover,.conv-arrival-item:focus{outline:none;border-color:var(--mc);background:color-mix(in srgb,var(--mc) 9%,var(--n-bg))}
.conv-arrival-item:focus-visible{box-shadow:0 0 0 2px var(--mc)}
.conv-arrival-item .conv-excerpt{color:var(--n-soft)}
.conv-tag{display:inline-block;font-size:11px;font-weight:600;padding:0 8px;border-radius:999px;border:1px solid var(--n-line2);color:var(--n-soft);line-height:1.7;white-space:nowrap}
.conv-tag.mention{border-color:var(--n-hot);color:#ffb38a;font-weight:700}
.conv-tag.unread{border-color:var(--n-hot);background:var(--n-hot);color:#2b1204;font-weight:700}
.conv-more{font-size:12.5px;color:var(--n-faint);margin:10px 0 0}
.conv-modal-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin:18px -22px 0;padding:14px 22px 18px;border-top:1px solid var(--n-line)}

/* ============ 💬 pagina #/conversazioni, 19/09 ============
   Matteo: «rendere coerente anche la sezione conversazioni con il layout
   grafico della piattaforma». Come 📁 Progetti e 🏢 Società: fondo petrolio
   e colori della Home, testata con occhiello acqua e titolo grande, i fili
   in tessere. Il colore dello stato (--tc: arancio da leggere, acqua
   aperta, grigio risolta, gli stessi dei segni sul piano) segna il filo in
   testa, la nuvoletta, lo stato e «Apri →». */
#conversazioniOverlay{
  --n-bg:#081d20;--n-surf:#0f2a2e;--n-surf2:#143539;
  --n-ink:#e9f3f1;--n-soft:#b3cdc9;--n-faint:#8fb0ab;
  --n-line:rgba(233,243,241,.10);--n-line2:rgba(233,243,241,.18);
  --acqua:#2cc9b2;--orange:#ff7a3d;
  background:
    radial-gradient(1200px 500px at 85% -10%,rgba(44,201,178,.10),transparent 60%),
    radial-gradient(900px 400px at -10% 110%,rgba(255,122,61,.05),transparent 60%),
    var(--n-bg);
  color:var(--n-ink);}
#conversazioniOverlay.shell-dark .home-card{background:transparent;}
#conversazioniOverlay .home-card{font-family:var(--sans);color:var(--n-ink);}
#conversazioniOverlay button{font-family:inherit;}

/* ---- testata ---- */
#conversazioniOverlay .cvp-hero{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;
  gap:16px 24px;padding:30px 30px 0;margin-bottom:24px;}
#conversazioniOverlay .cvp-hero-main{min-width:0;max-width:760px;}
#conversazioniOverlay .cvp-kicker{font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--acqua);}
#conversazioniOverlay .cvp-hero h1{font-size:34px;line-height:1.15;font-weight:700;letter-spacing:-.01em;
  margin:6px 0 10px;color:var(--n-ink);}
#conversazioniOverlay .cvp-hero h1 span{color:var(--acqua);}
#conversazioniOverlay .cvp-sub{margin:0;font-size:15px;color:var(--n-soft);line-height:1.5;}
#conversazioniOverlay .cvp-hero-act{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;}
/* 19/09 sera: «← Torna» alla pagina da cui si e' arrivati (come «← Torna» di 🏢 Società) */
.conv-back{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:8px;border:1px solid #2cc9b2;
  background:#2cc9b2;color:#0b2a2e;font-size:13.5px;font-weight:700;text-decoration:none;white-space:nowrap;
  max-width:min(420px,100%);overflow:hidden;text-overflow:ellipsis;transition:transform .15s,filter .15s;}
.conv-back[hidden]{display:none}
.conv-back:hover{filter:brightness(1.08);transform:translateY(-1px);}
.conv-back:focus-visible{outline:2px solid #e9f3f1;outline-offset:2px}
#conversazioniOverlay .cvp-reload{display:inline-flex;align-items:center;gap:7px;padding:10px 14px;border-radius:8px;
  border:1px solid var(--n-line2);background:rgba(15,42,46,.7);color:var(--n-ink);font-size:13.5px;font-weight:600;
  cursor:pointer;transition:background .15s,border-color .15s,transform .15s;}
#conversazioniOverlay .cvp-reload:hover{border-color:var(--acqua);background:var(--n-surf2);transform:translateY(-1px);}

/* ---- filtri a pastiglie ---- */
#conversazioniOverlay .conv-page-col{padding:0 30px 40px;}
#conversazioniOverlay .cvp-tabs{display:inline-flex;flex-wrap:wrap;gap:4px;padding:4px;margin-bottom:18px;
  background:var(--n-surf);border:1px solid var(--n-line);border-radius:11px;}
#conversazioniOverlay .cvp-tab{display:inline-flex;align-items:center;gap:8px;padding:7px 15px;border:0;border-radius:8px;
  background:transparent;color:var(--n-soft);font-size:13.5px;font-weight:600;cursor:pointer;transition:background .15s,color .15s;}
#conversazioniOverlay .cvp-tab:hover{background:var(--n-surf2);color:var(--n-ink);}
#conversazioniOverlay .cvp-tab.on{background:var(--acqua);color:#0b2a2e;cursor:default;}
#conversazioniOverlay .cvp-tab:focus-visible{outline:2px solid var(--acqua);outline-offset:2px;}
#conversazioniOverlay .cvp-tab-n{min-width:20px;padding:0 6px;border-radius:99px;font-size:11.5px;font-weight:700;line-height:19px;
  text-align:center;background:rgba(233,243,241,.10);color:var(--n-ink);}
#conversazioniOverlay .cvp-tab.on .cvp-tab-n{background:rgba(11,42,46,.16);color:#0b2a2e;}
#conversazioniOverlay .cvp-tab-n.hot,#conversazioniOverlay .cvp-tab.on .cvp-tab-n.hot{background:var(--orange);color:#fff;}

/* ---- tessere ---- */
#conversazioniOverlay .cvp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px;}
#conversazioniOverlay .cvp-card{--tc:var(--acqua);display:flex;flex-direction:column;gap:12px;min-width:0;width:100%;
  margin:0;padding:16px 17px 12px;text-align:left;font:inherit;color:var(--n-ink);cursor:pointer;
  background:linear-gradient(180deg,var(--n-surf2),var(--n-surf));border:1px solid var(--n-line);
  border-top:3px solid var(--tc);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.28);
  transition:border-color .2s,transform .2s,box-shadow .2s;}
#conversazioniOverlay .cvp-card.is-unread{--tc:#ff7a3d;border-color:rgba(255,122,61,.35);}
#conversazioniOverlay .cvp-card.is-resolved{--tc:#8fb0ab;}
#conversazioniOverlay .cvp-card:hover{border-color:rgba(44,201,178,.45);border-color:color-mix(in srgb,var(--tc) 50%,transparent);
  border-top-color:var(--tc);transform:translateY(-2px);box-shadow:0 12px 30px rgba(0,0,0,.36);}
#conversazioniOverlay .cvp-card:focus-visible{outline:2px solid var(--tc);outline-offset:2px;}
#conversazioniOverlay .cvp-head{display:flex;align-items:center;gap:12px;min-width:0;}
#conversazioniOverlay .cvp-ico{flex:0 0 auto;width:40px;height:40px;border-radius:10px;display:flex;align-items:center;
  justify-content:center;color:var(--tc);
  background:rgba(44,201,178,.14);background:color-mix(in srgb,var(--tc) 15%,transparent);
  border:1px solid rgba(44,201,178,.30);border-color:color-mix(in srgb,var(--tc) 32%,transparent);}
#conversazioniOverlay .cvp-ico .conv-ico{width:20px;height:20px;}
#conversazioniOverlay .cvp-card.is-unread .cvp-ico{background:var(--tc);color:#fff;border-color:var(--tc);}
#conversazioniOverlay .cvp-id{display:flex;flex-direction:column;min-width:0;}
#conversazioniOverlay .cvp-title{font-size:16px;font-weight:700;letter-spacing:-.01em;line-height:1.25;color:var(--n-ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#conversazioniOverlay .cvp-state{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tc);margin-top:4px;}
#conversazioniOverlay .cvp-tags{display:flex;flex-wrap:wrap;gap:6px;}
#conversazioniOverlay .cvp-tags:empty{display:none;}
#conversazioniOverlay .cvp-tag{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:3px 10px;border-radius:999px;
  font-size:12.5px;font-weight:600;color:var(--n-ink);overflow-wrap:anywhere;
  background:rgba(233,243,241,.06);border:1px solid var(--n-line2);}
#conversazioniOverlay .cvp-tag i{font-style:normal;font-size:12px;line-height:1;}
#conversazioniOverlay .cvp-tag.is-org{font-weight:500;color:var(--n-soft);background:transparent;border-style:dashed;}
#conversazioniOverlay .cvp-tag.is-hot{color:#ffb38f;border-color:rgba(255,122,61,.55);background:rgba(255,122,61,.10);font-weight:700;}
#conversazioniOverlay .cvp-tag.is-fill{color:#fff;background:var(--orange);border-color:var(--orange);}
#conversazioniOverlay .cvp-last{display:block;padding:9px 12px;border-radius:9px;border-left:3px solid var(--tc);
  background:rgba(233,243,241,.04);font-size:13.5px;line-height:1.45;color:var(--n-soft);
  white-space:pre-wrap;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
#conversazioniOverlay .cvp-last b{color:var(--n-ink);margin-right:6px;}
#conversazioniOverlay .cvp-last b::after{content:":";}
#conversazioniOverlay .cvp-foot{display:flex;align-items:center;gap:10px;margin-top:auto;padding-top:10px;border-top:1px solid var(--n-line);}
#conversazioniOverlay .cvp-when{flex:1;min-width:0;font-size:12.5px;color:var(--n-faint);}
#conversazioniOverlay .cvp-go{font-size:13px;font-weight:700;color:var(--tc);white-space:nowrap;transition:transform .15s;}
#conversazioniOverlay .cvp-card:hover .cvp-go{transform:translateX(3px);}

/* caricamento, errore, nessun filo */
#conversazioniOverlay .cvp-empty{padding:28px 20px;border:1px dashed rgba(44,201,178,.45);border-radius:12px;
  background:rgba(44,201,178,.05);color:var(--n-soft);font-size:14.5px;line-height:1.5;text-align:center;}
#conversazioniOverlay .cvp-empty b{color:var(--n-ink);}
#conversazioniOverlay .cvp-empty-ico{font-size:30px;margin-bottom:6px;}
#conversazioniOverlay .cvp-empty.is-err{border-color:rgba(255,107,94,.55);background:rgba(255,107,94,.08);color:var(--n-ink);}

@media (max-width:700px){
  .conv-drawer{width:100%}
  #conversazioniOverlay .cvp-hero{padding:22px 16px 0;margin-bottom:20px;}
  #conversazioniOverlay .cvp-hero h1{font-size:27px;}
  #conversazioniOverlay .conv-page-col{padding:0 16px 28px;}
  #conversazioniOverlay .cvp-tabs{display:flex;}
  #conversazioniOverlay .cvp-tab{flex:1 1 auto;justify-content:center;}
  #conversazioniOverlay .cvp-grid{grid-template-columns:minmax(0,1fr);}
  #conversazioniOverlay .cvp-card{padding:15px 14px 11px;}
  .conv-toasts{right:16px;left:16px;width:auto}
  .conv-drawer{border-left:0}
  .conv-modal-back{padding:0;align-items:flex-end}
  .conv-modal{border-radius:14px 14px 0 0;padding:18px 16px 0}
  .conv-modal-actions{margin:16px -16px 0;padding:12px 16px 16px}
}

/* ============================================================
   19/09 — HOME DEI MODULI CON LA GRAFICA DELLA PIATTAFORMA
   Matteo: «le home page dei vari moduli le devi fare coerenti con il
   layout grafico della piattaforma». B-Plan (#startOverlay), Invest
   (#investOverlay) e Cash (#cashOverlay, solo l'elenco: cashRenderHome
   accende .px-page e il cruscotto la spegne) come Home, 📁 Progetti e
   🏢 Società: fondo petrolio, testata con occhiello, numeri che filtrano,
   tessere col filo nel colore del modulo (--mc), «+ Nuovo…» in un pannello.
   Pezzi comuni in src/modules/px-home.js.
   ============================================================ */
.pf-screen-wide.px-page{
  --n-bg:#081d20;--n-surf:#0f2a2e;--n-surf2:#143539;
  --n-ink:#e9f3f1;--n-soft:#b3cdc9;--n-faint:#8fb0ab;
  --n-line:rgba(233,243,241,.10);--n-line2:rgba(233,243,241,.18);
  --n-danger:#ff6b5e;--n-warn:#ffb547;--n-good:#5cd696;
  --mc:#2cc9b2;
  font-family:var(--sans);color:var(--n-ink);
  background:
    radial-gradient(1200px 500px at 85% -10%,rgba(44,201,178,.10),transparent 60%),
    radial-gradient(900px 400px at -10% 110%,rgba(255,122,61,.05),transparent 60%),
    var(--n-bg);}
.pf-screen-wide.px-page.is-invest{--mc:#ff7a3d;}
.pf-screen-wide.px-page.is-cash{--mc:#5cd696;}
.pf-screen-wide.px-page > .start-card{background:transparent;color:var(--n-ink);padding:0 30px 40px;}
.px-page button,.px-page input,.px-page select,.px-modal button,.px-modal input,.px-modal select{font-family:inherit;}
/* la testata del modulo resta (13/09), ma sul fondo scuro */
.px-page .dash-topbar{background:transparent;margin:0;padding:18px 0;border-bottom:1px solid var(--n-line);}
.px-page .dash-brand-icon{color:var(--n-ink);}
.px-page .dash-brand-word{color:var(--n-ink);}
.px-page .dash-brand-word .inv-brand-mod{color:var(--mc);}
.px-page .brand-tag{color:var(--n-faint);}
.px-page .cloud-project-empty{background:rgba(15,42,46,.55);border:1px dashed var(--n-line2);color:var(--n-soft);border-radius:12px;}
.px-page .px-filtro:empty{margin-bottom:12px;}
/* Cash: il benvenuto senza piani e la sezione della home sul fondo scuro */
.px-page #cashHomeSection{margin:0;padding:0;background:transparent;border:0;box-shadow:none;}
.px-page .cash-onboard{background:rgba(15,42,46,.72);border:1px solid var(--n-line2);border-left:3px solid var(--mc);color:var(--n-ink);border-radius:14px;}
.px-page .cash-onboard-title,.px-page .cash-onboard-steps{color:var(--n-ink);}
.px-page .cash-onboard-sub{color:var(--n-soft);}
.px-page .cash-onboard-close{color:var(--n-faint);}
.px-page .cash-onboard-close:hover{color:var(--n-ink);}

/* ---- testata ---- */
.px-hero{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 24px;padding:30px 0 0;margin-bottom:22px;}
.px-hero-main{min-width:0;max-width:760px;}
.px-kicker{font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--mc);}
.px-kicker span{color:var(--n-faint);}
.px-hero h1{font-size:34px;line-height:1.15;font-weight:700;letter-spacing:-.01em;margin:6px 0 10px;color:var(--n-ink);}
.px-hero h1 span{color:var(--mc);}
.px-sub{margin:0;font-size:15px;color:var(--n-soft);line-height:1.5;}
.px-actions{display:flex;flex-wrap:wrap;gap:8px;}

/* ---- tasti ---- */
.px-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:8px;font-size:13.5px;font-weight:600;
  border:1px solid var(--n-line2);background:rgba(15,42,46,.7);color:var(--n-ink);cursor:pointer;text-decoration:none;
  transition:transform .15s,filter .15s,border-color .15s,background .15s,color .15s;}
.px-btn:hover{border-color:var(--mc);color:var(--mc);transform:translateY(-1px);}
.px-btn.is-primary{background:var(--mc);border-color:var(--mc);color:#0b2a2e;font-weight:700;}
.px-btn.is-primary:hover{filter:brightness(1.08);color:#0b2a2e;}
.px-btn.is-ghost{background:transparent;border-color:transparent;color:var(--n-soft);}
.px-btn.is-ghost:hover{border-color:var(--n-line2);color:var(--n-ink);}
.px-btn.is-danger{background:var(--n-danger);border-color:var(--n-danger);color:#2b0d0a;font-weight:700;}
.px-btn.is-danger:hover{filter:brightness(1.08);color:#2b0d0a;border-color:var(--n-danger);}
.px-btn.is-sm{padding:7px 12px;font-size:13px;}
.px-btn:focus-visible,.px-stat:focus-visible,.px-card:focus-visible,.px-fam:focus-visible{outline:2px solid var(--mc);outline-offset:2px;}

/* ---- i numeri in testa (filtri) ---- */
.px-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:10px;}
.px-stat{--tc:var(--mc);display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:13px 16px 12px;text-align:left;
  background:rgba(15,42,46,.55);border:1px solid var(--n-line);border-left:3px solid var(--tc);border-radius:10px;
  color:var(--n-ink);cursor:pointer;transition:border-color .15s,background .15s,transform .15s;}
.px-stat:hover{background:var(--n-surf2);transform:translateY(-1px);}
.px-stat b{font-size:27px;line-height:1;font-weight:700;letter-spacing:-.02em;color:var(--tc);font-variant-numeric:tabular-nums;}
.px-stat span{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--n-soft);}
.px-stat.is-warn{--tc:var(--n-warn);}
.px-stat.is-bad{--tc:var(--n-danger);}
.px-stat.is-good{--tc:var(--n-good);}
.px-stat.is-muted{--tc:var(--n-faint);}
.px-stat[aria-pressed="true"]{background:rgba(44,201,178,.10);background:color-mix(in srgb,var(--tc) 12%,transparent);
  border-color:var(--tc);}
.px-filtro{font-size:12.5px;color:var(--n-faint);margin:0 0 20px;min-height:18px;}
.px-filtro button{font:inherit;font-weight:700;color:var(--mc);background:none;border:0;padding:0;cursor:pointer;}

/* ---- cerca e ordina ---- */
.px-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 22px;}
.px-search{flex:1 1 280px;max-width:460px;padding:10px 14px 10px 38px;border-radius:10px;font-size:14px;color:var(--n-ink);
  background:var(--n-surf) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238fb0ab' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-3.5-3.5'/%3E%3C/svg%3E") no-repeat 13px center;
  border:1px solid var(--n-line2);outline:none;}
.px-select{padding:10px 34px 10px 14px;border-radius:10px;font-size:14px;color:var(--n-ink);background:var(--n-surf);
  border:1px solid var(--n-line2);outline:none;appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%238fb0ab' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 13px center;}
.px-search:focus,.px-select:focus,.px-in:focus{border-color:var(--mc);box-shadow:0 0 0 3px rgba(44,201,178,.18);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--mc) 22%,transparent);}
.px-tools-n{margin-left:auto;font-size:12.5px;color:var(--n-faint);}

/* ---- sezioni ---- */
.px-sec{margin-bottom:32px;}
.px-sec[hidden]{display:none;}
.px-sec-head{--sc:var(--mc);display:flex;align-items:center;gap:10px;margin:0 0 14px;}
.px-sec-head h2{margin:0;font-size:17px;font-weight:700;color:var(--n-ink);}
.px-sec-head.is-warn{--sc:var(--n-warn);} .px-sec-head.is-good{--sc:var(--n-good);}
.px-sec-head.is-bad{--sc:var(--n-danger);} .px-sec-head.is-muted{--sc:var(--n-faint);}
.px-sec-dot{width:9px;height:9px;border-radius:50%;background:var(--sc);flex-shrink:0;
  box-shadow:0 0 0 4px color-mix(in srgb,var(--sc) 18%,transparent);}
.px-sec-count{font-size:12px;font-weight:700;padding:2px 9px;border-radius:99px;color:var(--sc);
  background:color-mix(in srgb,var(--sc) 15%,transparent);}
.px-sec-hint{font-size:12.5px;color:var(--n-faint);}

/* ---- tessere ---- */
.px-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;}
.px-card{display:flex;flex-direction:column;gap:13px;min-width:0;padding:17px 17px 12px;text-align:left;color:var(--n-ink);cursor:pointer;
  background:linear-gradient(180deg,var(--n-surf2),var(--n-surf));border:1px solid var(--n-line);
  border-top:3px solid var(--mc);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.28);
  transition:border-color .2s,transform .2s,box-shadow .2s;}
/* in Cash la tessera è un link (#/cash/societa/…): niente sottolineatura, come le altre */
a.px-card,a.px-card:hover,a.px-card *{text-decoration:none;}
.px-card[hidden]{display:none;}
.px-card:hover{border-color:color-mix(in srgb,var(--mc) 50%,transparent);border-top-color:var(--mc);
  transform:translateY(-2px);box-shadow:0 12px 30px rgba(0,0,0,.36);}
.px-card.is-asking,.px-card.is-asking:hover{border-color:rgba(255,107,94,.55);border-top-color:var(--n-danger);transform:none;cursor:default;}
.px-head{display:flex;align-items:center;gap:13px;min-width:0;}
.px-mono{flex:0 0 auto;width:44px;height:44px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  font-size:15px;font-weight:700;letter-spacing:.03em;color:var(--mc);
  background:color-mix(in srgb,var(--mc) 14%,transparent);border:1px solid color-mix(in srgb,var(--mc) 32%,transparent);}
.px-id{display:flex;flex-direction:column;min-width:0;}
.px-name{font-size:16.5px;font-weight:700;letter-spacing:-.01em;line-height:1.25;color:var(--n-ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.px-kind{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--mc);margin-top:4px;}
.px-tags{display:flex;flex-wrap:wrap;gap:6px;}
.px-tag{--tc:var(--n-ink);display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:4px 11px;border-radius:999px;
  font-size:12.5px;font-weight:600;color:var(--n-ink);overflow-wrap:anywhere;
  background:rgba(233,243,241,.06);border:1px solid var(--n-line2);}
.px-tag i{font-style:normal;font-size:12px;line-height:1;}
.px-tag.is-dash{font-weight:500;color:var(--n-soft);background:transparent;border-style:dashed;}
.px-tag.is-warn,.px-tag.is-good,.px-tag.is-bad,.px-tag.is-muted{color:var(--tc);
  background:color-mix(in srgb,var(--tc) 12%,transparent);border-color:color-mix(in srgb,var(--tc) 36%,transparent);}
.px-tag.is-warn{--tc:var(--n-warn);} .px-tag.is-good{--tc:var(--n-good);}
.px-tag.is-bad{--tc:var(--n-danger);} .px-tag.is-muted{--tc:var(--n-soft);}
.px-foot{display:flex;align-items:center;gap:10px;margin-top:auto;padding-top:11px;border-top:1px solid var(--n-line);}
.px-when{flex:1;min-width:0;font-size:12.5px;color:var(--n-faint);}
.px-go{font-size:13px;font-weight:700;color:var(--mc);white-space:nowrap;transition:transform .15s;}
.px-card:hover .px-go{transform:translateX(3px);}
.px-del{flex:0 0 auto;width:30px;height:30px;border-radius:7px;border:1px solid transparent;background:transparent;
  color:var(--n-faint);font-size:14px;cursor:pointer;}
.px-del:hover{color:var(--n-danger);border-color:rgba(255,107,94,.45);background:rgba(255,107,94,.08);}
.px-ask{display:none;margin-top:auto;padding:12px 14px;border-radius:9px;background:rgba(255,107,94,.09);border:1px solid rgba(255,107,94,.35);}
.px-card.is-asking .px-ask{display:block;}
.px-card.is-asking .px-foot{display:none;}
.px-ask-q{font-size:14.5px;font-weight:700;color:var(--n-ink);overflow-wrap:anywhere;}
.px-ask-sub{font-size:12.5px;color:var(--n-soft);margin-top:2px;}
.px-ask-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:11px;}

/* la tessera «+ Nuovo…» in testa alla griglia */
.px-card.is-new{align-items:center;justify-content:center;gap:8px;min-height:150px;text-align:center;box-shadow:none;
  background:color-mix(in srgb,var(--mc) 5%,transparent);border:1.5px dashed color-mix(in srgb,var(--mc) 50%,transparent);}
.px-card.is-new:hover{background:color-mix(in srgb,var(--mc) 10%,transparent);border-color:var(--mc);}
.px-new-plus{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:24px;font-weight:600;line-height:1;color:#0b2a2e;background:var(--mc);}
.px-new-t{font-size:15.5px;font-weight:700;color:var(--n-ink);}
.px-new-s{font-size:12.5px;color:var(--n-soft);max-width:260px;line-height:1.4;}
/* 19/09: la tessera con un secondo comando (B-Plan: 📂 Importa da backup),
   perché i «+ Nuovo…» stanno solo nella griglia e non più anche in testata */
.px-card.is-new.has-extra{cursor:default;gap:10px;}
.px-new-main{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;padding:0;border:0;background:none;
  font:inherit;color:inherit;text-align:center;cursor:pointer;}
.px-new-extra{padding:7px 14px;border-radius:8px;border:1px solid color-mix(in srgb,var(--mc) 45%,transparent);background:transparent;
  font-family:var(--sans);font-size:13px;font-weight:600;color:var(--n-ink);cursor:pointer;transition:background .15s,border-color .15s;}
.px-new-extra:hover{background:color-mix(in srgb,var(--mc) 14%,transparent);border-color:var(--mc);}
.px-new-main:disabled,.px-new-extra:disabled{opacity:.45;cursor:not-allowed;}

/* pagina vuota */
.px-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:44px 24px;text-align:center;border-radius:14px;
  background:color-mix(in srgb,var(--mc) 5%,transparent);border:1.5px dashed color-mix(in srgb,var(--mc) 50%,transparent);}
.px-empty-ico{font-size:36px;line-height:1;}
.px-empty h2{margin:4px 0 0;font-size:20px;font-weight:700;color:var(--n-ink);}
.px-empty p{margin:0;max-width:560px;font-size:14.5px;line-height:1.55;color:var(--n-soft);}
.px-empty .px-actions{justify-content:center;margin-top:8px;}

/* ---- il pannello «Nuovo…» ---- */
.px-modal{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-start;justify-content:center;padding:8vh 16px 16px;
  background:rgba(3,12,14,.66);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);overflow:auto;}
.px-modal[hidden]{display:none;}
.px-sheet{--n-surf:#0f2a2e;--n-surf2:#143539;--n-ink:#e9f3f1;--n-soft:#b3cdc9;--n-faint:#8fb0ab;
  --n-line:rgba(233,243,241,.10);--n-line2:rgba(233,243,241,.18);
  width:100%;max-width:580px;box-sizing:border-box;border-radius:14px;overflow:hidden;color:var(--n-ink);
  font-family:var(--sans);background:linear-gradient(180deg,var(--n-surf2),var(--n-surf));
  border:1px solid var(--n-line2);border-top:3px solid var(--mc);box-shadow:0 24px 60px rgba(0,0,0,.5);}
.px-sheet.is-plan{--mc:#2cc9b2;} .px-sheet.is-invest{--mc:#ff7a3d;} .px-sheet.is-cash{--mc:#5cd696;}
.px-sheet header{display:flex;align-items:flex-start;gap:12px;padding:20px 22px 4px;}
.px-sheet header div{flex:1;min-width:0;}
.px-sheet .px-kicker{font-size:11.5px;}
.px-sheet h2{margin:4px 0 0;font-size:22px;font-weight:700;letter-spacing:-.01em;}
.px-x{flex:0 0 auto;width:30px;height:30px;border-radius:7px;border:1px solid transparent;background:transparent;
  color:var(--n-faint);font-size:14px;cursor:pointer;}
.px-x:hover{color:var(--n-ink);border-color:var(--n-line2);}
.px-sheet-body{padding:14px 22px 6px;display:flex;flex-direction:column;gap:16px;}
.px-field{display:flex;flex-direction:column;gap:7px;}
.px-lbl{font-size:13px;font-weight:600;color:var(--n-soft);}
.px-in{width:100%;box-sizing:border-box;padding:11px 14px;border-radius:10px;font-size:15px;color:var(--n-ink);
  background:#081d20;border:1px solid var(--n-line2);outline:none;}
select.px-in{appearance:none;-webkit-appearance:none;padding-right:34px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%238fb0ab' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 13px center;}
.px-hint{font-size:12.5px;line-height:1.45;color:var(--n-faint);}
.px-note{padding:10px 13px;border-radius:9px;font-size:13px;line-height:1.45;color:var(--n-soft);
  background:color-mix(in srgb,var(--mc) 8%,transparent);border:1px solid color-mix(in srgb,var(--mc) 28%,transparent);}
.px-fams{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;}
.px-fam{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:10px;text-align:left;font-size:13.5px;font-weight:600;
  color:var(--n-ink);background:#081d20;border:1px solid var(--n-line2);cursor:pointer;transition:border-color .15s,background .15s;}
.px-fam i{font-style:normal;font-size:18px;line-height:1;}
.px-fam:hover{border-color:var(--mc);}
.px-fam[aria-pressed="true"]{background:color-mix(in srgb,var(--mc) 16%,transparent);border-color:var(--mc);color:var(--n-ink);
  box-shadow:inset 0 0 0 1px var(--mc);}
.px-checks{display:flex;flex-wrap:wrap;gap:8px;}
.px-check{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border-radius:999px;font-size:13px;font-weight:600;
  border:1px solid var(--n-line2);background:#081d20;cursor:pointer;}
.px-check input{accent-color:var(--mc);margin:0;}
.px-sheet footer{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:16px 22px 20px;margin-top:10px;border-top:1px solid var(--n-line);}
.px-sheet footer .px-sp{flex:1;}

/* spenti (sola lettura di B-Plan, PLAN-05) */
.px-btn:disabled,.px-card:disabled,.px-del:disabled{opacity:.45;cursor:not-allowed;transform:none;filter:none;}
.px-sheet .start-hint{margin:0;font-size:12.5px;line-height:1.45;color:var(--n-faint);}

@media (max-width:720px){
  .pf-screen-wide.px-page > .start-card{padding:0 16px 30px;}
  .px-hero{padding-top:22px;margin-bottom:18px;}
  .px-hero h1{font-size:27px;}
  .px-actions{width:100%;}
  .px-actions .px-btn.is-primary{flex:1;justify-content:center;}
  .px-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;}
  .px-stat b{font-size:23px;}
  .px-grid{grid-template-columns:minmax(0,1fr);}
  .px-card{padding:15px 14px 11px;}
  .px-tools-n{display:none;}
  .px-modal{padding:0;align-items:flex-end;}
  .px-sheet{border-radius:14px 14px 0 0;max-width:none;}
}

/* ============================================================
   19/09 — LE PAGINE RIMASTE CHIARE SUL FONDO PETROLIO
   Matteo: «allinea anche le altre pagine rimaste chiare». .px-dark è un
   tema, non una pagina: ridefinisce i colori di base (--paper, --ink,
   --line…) e quelli della vecchia shell blu (--shell-*) coi toni
   petrolio, così tutto ciò che dentro la pagina li usa — tasti, campi,
   righe, pastiglie — passa al fondo scuro senza riscriverlo. Si mette
   accanto a .px-page (fondo, testata .px-hero). Prima tappa: 👤 Profilo,
   🏛️ Organizzazione e ⚙️ Amministrazione.
   ============================================================ */
.px-dark{
  --paper:#0f2a2e;--paper-2:#143539;--card:#0f2a2e;
  --ink:#e9f3f1;--ink-soft:#b3cdc9;--line:rgba(233,243,241,.12);--line-strong:rgba(233,243,241,.22);
  --green:#5cd696;--red:#ff6b5e;--gold:#2cc9b2;--amber:#ffb547;
  --band:#1b4a50;--band-text:#e9f3f1;
  --shadow:0 8px 24px rgba(0,0,0,.28);
  --shell-paper:#081d20;--shell-paper-2:#0f2a2e;--shell-paper-3:#143539;
  --shell-ink:#e9f3f1;--shell-ink-soft:#b3cdc9;--shell-ink-faint:#8fb0ab;
  --shell-line:rgba(233,243,241,.12);--shell-line-strong:rgba(233,243,241,.22);
  --shell-accent:#2cc9b2;--shell-accent-soft:rgba(44,201,178,.14);--shell-muted-soft:rgba(233,243,241,.07);
  --shell-good:#5cd696;--shell-good-soft:rgba(92,214,150,.14);
  --shell-warn:#ffb547;--shell-warn-soft:rgba(255,181,71,.14);--shell-danger:#ff6b5e;
  color:var(--n-ink);}
.pf-screen-wide.px-page.px-dark > .start-card{max-width:1180px;}
.px-dark #profileBody,.px-dark #orgAdminBody,.px-dark .admin-content{background:transparent;padding:0;margin:0;}
.px-dark .px-hero{border-bottom:1px solid var(--n-line);padding-bottom:22px;margin-bottom:26px;}

/* sezioni: riquadri scuri col filo acqua in testa */
.px-dark .dash-section{margin:0 0 20px;padding:18px 20px 20px;border-radius:14px;
  background:linear-gradient(180deg,rgba(20,53,57,.78),rgba(15,42,46,.78));
  border:1px solid var(--n-line);border-top:3px solid var(--mc);box-shadow:0 8px 24px rgba(0,0,0,.22);}
.px-dark .dash-section[hidden]{display:none;}
.shell-dark.px-dark #profileBody .dash-section:first-child{margin-top:0;}
.px-dark .dash-section-head{margin:0 0 14px;padding:0;border:0;}
.px-dark .dash-section-title{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:700;letter-spacing:0;
  text-transform:none;color:var(--n-ink);}
.px-dark .dash-profile{background:transparent;border:0;padding:0;}
.px-dark .dash-profile-lbl{color:var(--n-faint);}
.px-dark .prof-sotto{border-top-color:var(--n-line);}
.px-dark .prof-foto{background:rgba(44,201,178,.12);border-color:rgba(44,201,178,.4);}
.px-dark .prof-org-tab{border-color:var(--n-line);}
.px-dark .prof-org-tab th,.px-dark .prof-org-tab td{border-bottom-color:var(--n-line);}
.px-dark .prof-in,.px-dark .start-input,.px-dark .fin-in{background-color:#081d20;border:1px solid var(--n-line2);border-radius:10px;color:var(--n-ink);}
.px-dark .fin-in{border-radius:8px;}
.px-dark .prof-in:focus,.px-dark .start-input:focus,.px-dark .fin-in:focus{border-color:var(--mc);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--mc) 22%,transparent);}
.px-dark .fld-hint,.px-dark .start-hint{color:var(--n-faint);}
.px-dark .cloud-project-empty{color:var(--n-soft);}

/* tasti arrotondati come .px-btn */
.px-dark .btn{border-radius:8px;background:rgba(15,42,46,.7);border-color:var(--n-line2);color:var(--n-ink);}
.px-dark .btn:hover{background:var(--n-surf2);border-color:var(--mc);color:var(--mc);box-shadow:none;}
.px-dark .btn.primary{background:var(--mc);border-color:var(--mc);color:#0b2a2e;font-weight:700;}
.px-dark .btn.primary:hover{filter:brightness(1.08);color:#0b2a2e;}
.px-dark .btn.ghost{background:transparent;border-color:transparent;color:var(--n-soft);}
.px-dark .btn.ghost:hover{border-color:var(--n-line2);color:var(--n-ink);}
.px-dark .btn.mini{border-radius:7px;}

/* righe d'elenco (membri, inviti, utenti, progetti) come tessere basse */
.px-dark .cloud-project-row{background:rgba(15,42,46,.72);border:1px solid var(--n-line);border-radius:10px;padding:11px 14px;}
.px-dark .cloud-project-row:hover{background:var(--n-surf2);border-color:color-mix(in srgb,var(--mc) 50%,transparent);}
.px-dark .home-mod-badge{border-radius:999px;background:rgba(233,243,241,.07);border:1px solid var(--n-line);color:var(--n-soft);}
.px-dark .home-mod-badge.st-off{background:rgba(233,243,241,.05);color:var(--n-faint);}
.px-dark .oa-av.t0{background:#2a5a60;}
.px-dark .home-mod-badge.st-active{background:rgba(92,214,150,.14);color:#5cd696;}
.px-dark .home-mod-badge.st-trial,.px-dark .home-mod-badge.st-limited{background:rgba(44,201,178,.14);color:#2cc9b2;}
.px-dark .home-mod-badge.st-warn{background:rgba(255,181,71,.14);color:#ffb547;}
.px-dark .px-mail-box{background:rgba(44,201,178,.08);}

/* 🏛️ Organizzazione: le schede come i filtri di 💬 Conversazioni */
.px-dark .oa-tabs{gap:8px;padding:0 0 18px;margin:0 0 20px;border-bottom:1px solid var(--n-line);}
.px-dark .oa-tab{padding:9px 15px;font-size:13.5px;font-weight:600;border-radius:999px;background:rgba(15,42,46,.72);
  border:1px solid var(--n-line2);color:var(--n-soft);}
.px-dark .oa-tab:hover{border-color:var(--mc);color:var(--n-ink);}
.px-dark .oa-tab.sel{background:var(--mc);border-color:var(--mc);color:#0b2a2e;font-weight:700;}
.px-dark .oa-tab:focus-visible{outline-color:var(--mc);}
.px-dark #oaRoleBanner{background:rgba(44,201,178,.10)!important;border:1px solid rgba(44,201,178,.3);color:var(--n-soft);}
.px-dark .oa-help{background:rgba(8,29,32,.6);border-color:var(--n-line);color:var(--n-soft);}
.px-dark .oa-help > b{color:var(--n-ink);}
/* piramidi: carte scure, fili nel colore del modulo su puntini chiari */
.px-dark .oa-pyramid{--oa-acc:#8fb0ab;--oa-acc-ink:#b3cdc9;--oa-acc-soft:rgba(143,176,171,.10);--oa-wire:rgba(233,243,241,.3);
  background:rgba(8,29,32,.55);border-color:var(--n-line);box-shadow:none;}
.px-dark .oa-pyramid[data-mod="plan"]{--oa-acc:#2cc9b2;--oa-acc-ink:#2cc9b2;--oa-acc-soft:rgba(44,201,178,.12);--oa-wire:rgba(44,201,178,.6);}
.px-dark .oa-pyramid[data-mod="invest"]{--oa-acc:#ff7a3d;--oa-acc-ink:#ff7a3d;--oa-acc-soft:rgba(255,122,61,.12);--oa-wire:rgba(255,122,61,.6);}
.px-dark .oa-pyramid[data-mod="cash"]{--oa-acc:#5cd696;--oa-acc-ink:#5cd696;--oa-acc-soft:rgba(92,214,150,.12);--oa-wire:rgba(92,214,150,.6);}
.px-dark .oa-pyr-head{border-bottom-color:var(--n-line);}
.px-dark .oa-pyr-ico{color:#0b2a2e;box-shadow:none;}
.px-dark .oa-pyramid[data-mod="org"] .oa-pyr-ico{background:#1b4a50;color:#e9f3f1;}
.px-dark .oa-tree{background-color:rgba(8,29,32,.7);background-image:radial-gradient(rgba(233,243,241,.10) 1px,transparent 1.2px);border-color:var(--n-line);}
.px-dark .oa-node,.px-dark .oa-chip{background:#143539;border-color:var(--n-line2);color:var(--n-ink);box-shadow:0 3px 10px rgba(0,0,0,.25);}
.px-dark .oa-node{border-bottom-color:var(--oa-acc);}
.px-dark .oa-node small{color:var(--n-faint);}
.px-dark .oa-node.top{background:#1b4a50;border-color:#2a6168;border-bottom-color:var(--oa-acc);}
.px-dark .oa-node.can-move:hover{box-shadow:0 6px 16px rgba(0,0,0,.4);}
.px-dark .oa-node.drop-ok,.px-dark .oa-chip.drop-ok,.px-dark .oa-drop-none.drop-ok{background:#123f31;color:var(--n-ink);}
.px-dark .oa-node.drop-bad,.px-dark .oa-chip.drop-bad,.px-dark .oa-drop-none.drop-bad{background:#4a1f1b;color:var(--n-ink);}
.px-dark .oa-drop-none{background:rgba(8,29,32,.96);border-color:var(--n-line2);color:var(--n-soft);}
.px-dark .oa-outside{border-color:var(--n-line2);color:var(--n-soft);}
.px-dark .oa-drag-hint{background:rgba(44,201,178,.10);border:1px solid rgba(44,201,178,.3);box-shadow:none;color:var(--n-soft);}
.px-dark .oa-drag-hint b{color:var(--n-ink);}
.px-dark .oa-drag-hint-ico{color:#0b2a2e;}

/* ⚙️ Amministrazione: le sezioni come tessere in griglia */
.px-dark .admin-card{background:transparent;}
.px-dark .admin-content{margin-top:0;}
.px-dark .admin-hub{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;}
.px-dark .admin-hub-card{align-items:flex-start;gap:14px;padding:18px 18px 16px;border-radius:12px;
  background:linear-gradient(180deg,var(--n-surf2),var(--n-surf));border:1px solid var(--n-line);border-top:3px solid var(--mc);
  box-shadow:0 8px 24px rgba(0,0,0,.28);color:var(--n-ink);font-family:inherit;transition:border-color .2s,transform .2s,box-shadow .2s;}
.px-dark .admin-hub-card:hover{background:linear-gradient(180deg,var(--n-surf2),var(--n-surf));transform:translateY(-2px);
  border-color:color-mix(in srgb,var(--mc) 50%,transparent);border-top-color:var(--mc);box-shadow:0 12px 30px rgba(0,0,0,.36);}
.px-dark .admin-hub-icon{width:44px;height:44px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:22px;
  background:color-mix(in srgb,var(--mc) 14%,transparent);border:1px solid color-mix(in srgb,var(--mc) 32%,transparent);}
.px-dark .admin-hub-title{font-size:16.5px;color:var(--n-ink);}
.px-dark .admin-hub-desc{font-size:13px;line-height:1.45;color:var(--n-soft);}
.px-dark .admin-hub-arrow{align-self:center;color:var(--mc);transition:transform .15s;}
.px-dark .admin-hub-card:hover .admin-hub-arrow{transform:translateX(3px);}
.px-dark .admin-sec-title{font-size:20px;color:var(--n-ink);}
.px-dark .admin-sec-count{background:var(--mc);color:#0b2a2e;}
.px-dark .admin-search{border-radius:10px;}

@media (max-width:720px){
  .px-dark .dash-section{padding:15px 14px 16px;}
  .px-dark .admin-hub{grid-template-columns:1fr;}
}

/* ---- seconda tappa: le pagine singole ----
   📱 Posizione di oggi, 🏢 Modifica società e le schermate dello stato
   `auth` (👋 Benvenuto, ✉️ Accetta invito, 🔑 Richiedi accesso,
   🔌 consenso per gli assistenti). */

/* stato `auth`: niente barra laterale e niente .px-page, quindi i toni
   petrolio si dichiarano qui; la scheda chiara diventa un riquadro scuro */
.auth-screen.px-dark{
  --n-bg:#081d20;--n-surf:#0f2a2e;--n-surf2:#143539;
  --n-ink:#e9f3f1;--n-soft:#b3cdc9;--n-faint:#8fb0ab;
  --n-line:rgba(233,243,241,.10);--n-line2:rgba(233,243,241,.18);
  --mc:#2cc9b2;--px-acc:#2cc9b2;
  font-family:var(--sans);
  background:
    radial-gradient(1200px 500px at 85% -10%,rgba(44,201,178,.10),transparent 60%),
    radial-gradient(900px 400px at -10% 110%,rgba(255,122,61,.05),transparent 60%),
    var(--n-bg);}
.auth-screen.px-dark .start-card{background:linear-gradient(180deg,var(--n-surf2),var(--n-surf));color:var(--n-ink);
  border:1px solid var(--n-line);border-top:3px solid var(--mc);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.45);}
.auth-screen.px-dark .brand-icon,.auth-screen.px-dark .brand-wordmark{color:var(--n-ink);}
.auth-screen.px-dark .brand-claim{color:var(--n-soft);}
.auth-screen.px-dark .start-card > .px-kicker{text-align:center;margin:0 0 6px;}
.auth-screen.px-dark .start-title{color:var(--n-ink);}
.auth-screen.px-dark .start-sub{color:var(--n-soft);}
.auth-screen.px-dark .start-sub strong{color:var(--n-ink);}
.auth-screen.px-dark a{color:var(--mc);}
.auth-screen.px-dark .cloud-project-empty{background:rgba(8,29,32,.6);border:1px dashed var(--n-line2);border-radius:10px;}
.px-dark input[type=checkbox],.px-dark input[type=radio]{accent-color:var(--mc);}
.px-dark select option{background:#0f2a2e;color:#e9f3f1;}

/* 👋 Benvenuto: la pagina è larga, i riquadri sono le sezioni */
.auth-screen.px-dark .dashboard-card{background:transparent;border:0;box-shadow:none;border-radius:0;padding:10px 0 30px;}
.px-auth-brand{display:flex;align-items:center;gap:12px;}
.px-auth-brand .brand-icon{width:38px;height:35px;}
.px-auth-brand .brand-wordmark{height:17px;margin:0;}
.auth-screen.px-dark .dashboard-card .px-hero{padding-top:22px;}
.auth-screen.px-dark #onbChoiceSection .btn{justify-content:flex-start;text-align:left;padding:12px 16px;}
.auth-screen.px-dark #onbChoiceSection .btn.ghost{background:rgba(8,29,32,.55);border-color:var(--n-line2);color:var(--n-ink);}
.auth-screen.px-dark #onbChoiceSection .btn.ghost:hover{border-color:var(--mc);color:var(--mc);}

/* 📱 Posizione di oggi: una colonna da telefono, testata compresa */
.pf-screen-wide.px-page.px-dark.cash-today > .start-card{max-width:640px;}
.px-dark .cash-today-col{max-width:none;padding:0 0 40px;}
.px-dark .cash-today-hero{background:linear-gradient(135deg,#1b4a50,#0f2a2e);color:var(--n-ink);
  border:1px solid color-mix(in srgb,var(--mc) 35%,transparent);border-top:3px solid var(--mc);}
.px-dark .cash-today-hero.neg{background:linear-gradient(135deg,#5a211c,#2b1210);border-color:rgba(255,107,94,.45);border-top-color:#ff6b5e;}
.px-dark .cash-today-card{background:linear-gradient(180deg,rgba(20,53,57,.78),rgba(15,42,46,.78));border-color:var(--n-line);box-shadow:0 8px 24px rgba(0,0,0,.22);}
.px-dark .cash-today-row{border-top-color:var(--n-line);}
.px-dark .cash-today-row.late{background:rgba(255,181,71,.10);}
.px-dark .cash-today-kpi{background:rgba(8,29,32,.6);border:1px solid var(--n-line);}
.px-dark .cash-today-row-amt.neg,.px-dark .cash-today-kpi-v.neg,.px-dark .cash-today-line b.neg{color:#ff6b5e;}
.px-dark .cash-today-row-amt.pos,.px-dark .cash-today-kpi-v.pos,.px-dark .cash-today-line b.pos{color:#5cd696;}
.px-dark .cash-today-warn{background:rgba(255,181,71,.12);border:1px solid rgba(255,181,71,.35);color:#ffd08a;}
.px-dark .cash-today-foot a{color:var(--mc);}

/* 🏢 Modifica società: i campi dell'anagrafica sul fondo scuro */
.px-dark .px-ce-form{max-width:760px;}
.px-dark .px-ce-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--n-line);}
.px-dark .px-ce-actions .btn.primary{flex:1;}
.px-dark .field label{color:var(--n-faint);}
.px-dark .field input,.px-dark .field select,.px-dark .field textarea{background-color:#081d20;border:1px solid var(--n-line2);border-radius:10px;color:var(--n-ink);}
.px-dark .field input:focus,.px-dark .field select:focus,.px-dark .field textarea:focus{border-color:var(--mc);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--mc) 22%,transparent);}
.px-dark .field select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238fb0ab' stroke-width='2.5'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");}
.px-dark .field .hint{color:var(--n-faint);}
.px-dark .open-grp{color:var(--mc);border-bottom-color:var(--n-line);font-size:12px;letter-spacing:.06em;text-transform:uppercase;margin-top:18px;}
.px-dark .add-row-btn{color:var(--mc);border:1px dashed color-mix(in srgb,var(--mc) 45%,transparent);border-radius:8px;padding:7px 14px;font-size:12.5px;}
.px-dark .add-row-btn:hover{background:color-mix(in srgb,var(--mc) 10%,transparent);border-color:var(--mc);}
.px-dark .anag-scheda{background:rgba(8,29,32,.45);border-color:var(--n-line);border-radius:10px;}
.px-dark .anag-scheda-n{color:var(--n-faint);}
.px-dark .anag-check{color:var(--n-ink);}

/* testata e contenuto a sinistra: la scheda di base centra il testo */
.pf-screen-wide.px-page.px-dark > .start-card{text-align:left;}
.px-dark .cash-today-hero{text-align:center;}
.auth-screen.px-dark .start-field-label{color:var(--n-faint);}
.auth-screen.px-dark .start-input{background:#081d20;border-color:var(--n-line2);color:var(--n-ink);}
.auth-screen.px-dark .start-input::placeholder{color:rgba(179,205,201,.55);}

@media (max-width:720px){
  .auth-screen.px-dark .dashboard-card{padding:0 0 24px;}
  .px-dark .field-row{grid-template-columns:minmax(0,1fr);gap:0;}
}

/* ===== Pagine chiare → petrolio, terza tappa: B-Plan (19/09) =====
   Il riepilogo del progetto e le 16 schermate di lavoro portano .px-dark:
   il tema rimappa --paper/--card/--ink/--line, quindi riquadri, KPI, grafici
   e prospetti basati sulle variabili cambiano da soli. Qui solo i token del
   fondo e i colori scritti fissi (intestazioni, subtotali, righe del
   prospetto, caselle bianche, badge). La stampa non passa di qui:
   stampaSezione apre una finestra sua con print-sezione.css. */
.screen.px-dark{
  --n-bg:#081d20;--n-surf:#0f2a2e;--n-surf2:#143539;
  --n-ink:#e9f3f1;--n-soft:#b3cdc9;--n-faint:#8fb0ab;
  --n-line:rgba(233,243,241,.10);--n-line2:rgba(233,243,241,.18);
  --n-danger:#ff6b5e;--n-warn:#ffb547;--n-good:#5cd696;
  --mc:#2cc9b2;
  min-height:100vh;font-family:var(--sans);color:var(--n-ink);color-scheme:dark;
  background:
    radial-gradient(1200px 500px at 85% -10%,rgba(44,201,178,.10),transparent 60%),
    radial-gradient(900px 400px at -10% 110%,rgba(255,122,61,.05),transparent 60%),
    var(--n-bg);}
body[data-shell="plan"]{background:#081d20;}
.screen.px-dark button,.screen.px-dark input,.screen.px-dark select,.screen.px-dark textarea{font-family:inherit;}

/* testata: marchio del modulo, occhiello, titolo */
.screen.px-dark .mod-brand-icon,.screen.px-dark .brand-word{color:var(--n-ink);}
.screen.px-dark .inv-brand-mod{color:var(--mc);}
.screen.px-dark .page-eyebrow,.screen.px-dark .eyebrow{color:var(--mc);letter-spacing:.2em;}
.screen.px-dark .page-title{color:var(--n-ink);font-size:clamp(24px,3vw,32px);letter-spacing:-.01em;}
.screen.px-dark .page-sub{color:var(--n-soft);}
.screen.px-dark .page-head{border-bottom-color:var(--n-line);}
.screen.px-dark .page-nav{border-top-color:var(--n-line);}
.screen.px-dark .logo-area:hover{background:rgba(44,201,178,.10);}

/* riquadri: angoli morbidi, sezioni col filo acqua in testa */
.screen.px-dark .setup-section{border-radius:14px;border-top:3px solid var(--mc);
  background:linear-gradient(180deg,rgba(20,53,57,.78),rgba(15,42,46,.78));}
.screen.px-dark .setup-section h3{border-bottom-color:var(--n-line);}
.screen.px-dark .stmt-card,.screen.px-dark .table-wrap,.screen.px-dark .plan-kpi,.screen.px-dark .kpi,
.screen.px-dark .plan-chart-card,.screen.px-dark .plan-execsum{border-radius:12px;}
.screen.px-dark .note{border-left-color:var(--mc);}
/* avvisi delle Verifiche: nel tema --gold è l'acqua, qui serve l'ambra */
.screen.px-dark .ver-chip.ver-warn{color:var(--amber);border-color:var(--amber);}
.screen.px-dark .ver-row.ver-warn .ver-icon{color:var(--amber);}
.screen.px-dark .plan-execsum-badge{color:#0b2a2e;}
.screen.px-dark .seg{border-radius:10px;}
.screen.px-dark .seg button{border-radius:7px;}
.screen.px-dark .seg button.on,.screen.px-dark .seg-btn-toggle.on{background:var(--mc);color:#0b2a2e;}
.screen.px-dark .ytab{border-radius:999px;}
.screen.px-dark .ytab.active{background:var(--mc);color:#0b2a2e;border-color:var(--mc);}

/* tabelle di inserimento: intestazione petrolio chiaro, sezioni e subtotali opachi (colonna sticky) */
.screen.px-dark thead th,.screen.px-dark .stmt-table th{background:#1b4a50;color:var(--n-ink);}
.screen.px-dark thead th.tot-col,.screen.px-dark .stmt-table th.tot{color:#e9c97a;}
.screen.px-dark tbody td.tot-col{background:rgba(233,201,122,.08);}
.screen.px-dark .sec-header-row td,.screen.px-dark .sec-header-row td.voce-col{background:#123e43;color:var(--n-ink);
  border-top-color:var(--mc);border-bottom-color:rgba(0,0,0,.35);}
.screen.px-dark .subtot-row td,.screen.px-dark .subtot-row td.voce-col{background:#143539;}
.screen.px-dark .cell-input:focus,.screen.px-dark .row-label-input:focus{background:rgba(44,201,178,.14);}
.screen.px-dark .cell-input::placeholder{color:rgba(179,205,201,.4);}

/* prospetti (CE, SP, rendiconto…) */
.screen.px-dark .stmt-table tr.lvl-detail td{background:rgba(8,29,32,.5);border-bottom-color:var(--n-line);}
.screen.px-dark .stmt-table tr.lvl-sub td{background:#143539;}
.screen.px-dark .stmt-table tr.lvl-result td{background:#1b4a50;}
.screen.px-dark .stmt-table tr.lvl-final td{background:#0b6b5e;color:#fff;}
.screen.px-dark .stmt-table tr.lvl-final .neg{color:#ffb3aa;}
.screen.px-dark .stmt-table .muted{color:var(--n-faint);}

/* caselle e tendine scritte in bianco fisso: fondo scuro per tutte,
   poi le celle di griglia tornano trasparenti come prima */
.screen.px-dark :where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),select,textarea){
  background-color:#081d20;color:var(--n-ink);border-color:var(--n-line2);}
.screen.px-dark :where(input,textarea)::placeholder{color:rgba(179,205,201,.5);}
.screen.px-dark :where(.cell-input,.row-label-input,.vat-select,.commessa-nome){background-color:transparent;}
.screen.px-dark .commessa-nome:focus{background-color:#081d20;}
.screen.px-dark #openingBlock select[data-openmode]{background-color:#081d20;color:var(--n-ink);border-color:var(--n-line2);}
.screen.px-dark .fin-leva-recap{background:rgba(8,29,32,.6);}
.screen.px-dark .sp-ov-input{background-color:rgba(44,201,178,.10);}
.screen.px-dark .sp-ov-input::placeholder{color:rgba(179,205,201,.45);}
.screen.px-dark .vat-select{border-color:rgba(44,201,178,.35);}
.screen.px-dark select option{background:#0f2a2e;color:var(--n-ink);}
.screen.px-dark input[type=checkbox],.screen.px-dark input[type=radio]{accent-color:var(--mc);}

/* badge e riquadri tinti */
.screen.px-dark .cesp-rc{background:rgba(92,214,150,.14);color:#8fe6b6;}
.screen.px-dark .cesp-esente{background:rgba(160,140,255,.16);color:#c9bdff;}
.screen.px-dark .cesp-apert{background:rgba(44,201,178,.14);color:#7fe0d0;}
.screen.px-dark .fin-badge-imp{background:rgba(92,214,150,.14);color:#8fe6b6;}
.screen.px-dark .fin-badge-rata{background:rgba(233,243,241,.08);color:var(--n-soft);}
.screen.px-dark .fin-leva-block-open{background:rgba(44,201,178,.08);}
.screen.px-dark .fin-leva-breakdown{background:rgba(8,29,32,.6);border-color:var(--n-line);}
.screen.px-dark .fin-leva-bd-table td{border-bottom-color:var(--n-line);}
.screen.px-dark .fin-leva-bd-iva{color:#9db8ff;}
.screen.px-dark .fin-leva-eq-toggle{background:rgba(92,214,150,.08);border-color:rgba(92,214,150,.35);}
.screen.px-dark .fin-leva-eq-on{background:rgba(92,214,150,.16);}
.screen.px-dark .fin-leva-eq-note.muted{color:var(--n-faint);}
.screen.px-dark .scr-row.scr-incompleta{background:rgba(255,181,71,.08);border-color:rgba(255,181,71,.5);}
.screen.px-dark .scr-preview.scr-warn{background:rgba(255,181,71,.10);color:#ffcf85;}
.screen.px-dark .ob-tab{background:rgba(8,29,32,.6);color:var(--n-soft);border-color:var(--n-line);}
.screen.px-dark .ob-row{border-bottom-color:var(--n-line);}

/* fondi chiari scritti inline dal JS (equity.js, scritture.js, finanz.js, plan-links.js) */
.screen.px-dark [style*="background:#f5f2fb"]{background:rgba(160,140,255,.10)!important;}
.screen.px-dark [style*="background:#fff8e8"]{background:rgba(255,181,71,.12)!important;}
.screen.px-dark [style*="background:#fff4e5"]{background:rgba(255,181,71,.10)!important;}
.screen.px-dark [style*="color:#a0522d"]{color:#ffb38a!important;}

/* ===== Pagine chiare → petrolio, terza tappa: Invest (19/09) =====
   L'editor dell'operazione (#investOpOverlay) porta px-page px-dark
   is-invest come l'elenco delle operazioni: fondo petrolio, testata sul
   fondo scuro, sezioni col filo arancio del modulo. Il tema rimappa le
   variabili; qui --gold passa all'arancio (etichette, schede scelte, fuoco)
   e si coprono i colori scritti fissi: tabelle dei flussi, griglia, schede,
   domande del questionario, sintesi, KPI, grafici SVG e gli stili inline. */
#investOpOverlay.px-dark{--gold:#ff7a3d;--green:#5cd696;color-scheme:dark;}
#investOpOverlay.px-page.px-dark > .start-card{max-width:1560px;}
#investOpOverlay .inv-op-card .dash-topbar{margin-bottom:18px;}
#investOpOverlay .mod-brand{margin:18px 0 0;}
#investOpOverlay .mod-brand-icon,#investOpOverlay .brand-word{color:var(--n-ink);}
#investOpOverlay .inv-brand-mod{color:var(--mc);}
#investOpOverlay .start-field-label{color:var(--mc);}
#investOpOverlay .fld-hint,#investOpOverlay .inv-field-help,#investOpOverlay .inv-note,
#investOpOverlay .inv-chart-caption,#investOpOverlay .inv-flow-tot{color:var(--n-faint);}
#investOpOverlay select option{background:#0f2a2e;color:var(--n-ink);}
#investOpOverlay input[type=checkbox],#investOpOverlay input[type=radio]{accent-color:var(--mc);}
#investOpOverlay .ct-in{background:#081d20;color:var(--n-ink);border-color:var(--n-line2);}
#investOpOverlay .kpi{border-radius:12px;background:rgba(15,42,46,.72);border-color:var(--n-line);}
#investOpOverlay .commessa-table th{color:var(--n-faint);border-bottom-color:var(--n-line);}
#investOpOverlay .inv-table{border-collapse:collapse;}
#investOpOverlay .inv-table th{color:var(--n-faint);font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--n-line2);}
#investOpOverlay .inv-table td{border-bottom:1px solid var(--n-line);}

/* schede dell'operazione: barra ferma in alto sul fondo, tasti a pastiglia */
#investOpOverlay .inv-tabwrap{background:rgba(8,29,32,.94);backdrop-filter:blur(6px);border-bottom-color:var(--n-line);}
#investOpOverlay .inv-tab{background:rgba(15,42,46,.72);border-color:var(--n-line2);color:var(--n-soft);font-weight:600;}
#investOpOverlay .inv-tab:hover{border-color:var(--mc);color:var(--n-ink);}
#investOpOverlay .inv-tab.sel{background:var(--mc);border-color:var(--mc);color:#2b1305;font-weight:700;}
#investOpOverlay .inv-headkpis{color:var(--n-soft);}
#investOpOverlay .inv-headkpis b{color:var(--n-ink);}
#investOpOverlay .inv-headkpis b.pos{color:var(--green);}
#investOpOverlay .inv-headkpis b.neg{color:var(--red);}
#investOpOverlay .inv-head-scen{background:rgba(255,122,61,.14);border-color:var(--mc);color:var(--n-ink);}
#investOpOverlay .inv-head-scen.op,#investOpOverlay .inv-head-stato{background:rgba(15,42,46,.72);border-color:var(--n-line2);color:var(--n-soft);}
#investOpOverlay .inv-head-stato.att{background:rgba(255,181,71,.14);border-color:var(--amber);color:var(--n-ink);}
#investOpOverlay .inv-head-stato.ok{background:rgba(92,214,150,.14);border-color:var(--green);color:var(--n-ink);}
#investOpOverlay .inv-head-stato.no{background:rgba(255,107,94,.14);border-color:var(--red);color:var(--n-ink);}
#investOpOverlay .inv-scen-tab{background:rgba(15,42,46,.72);border-color:var(--n-line2);color:var(--n-soft);}
#investOpOverlay .inv-scen-tab.sel{background:rgba(255,122,61,.16);border-color:var(--mc);color:var(--n-ink);}

/* tabelle dei flussi e griglia voce × data */
#investOpOverlay .inv-flow-table,#investOpOverlay .inv-grid-wrap{background:rgba(15,42,46,.72);border-color:var(--n-line);border-radius:12px;}
#investOpOverlay .inv-flow-table th{background:#1b4a50;color:var(--n-ink);border-bottom-color:rgba(0,0,0,.3);}
#investOpOverlay .inv-flow-table th.colsep{border-left-color:rgba(233,243,241,.18);}
#investOpOverlay .inv-flow-table td,#investOpOverlay .inv-flow-grid th,#investOpOverlay .inv-flow-grid td{border-bottom-color:var(--n-line);}
#investOpOverlay .inv-flow-table td.colsep,#investOpOverlay .inv-flow-grid td.inv-grid-totcol,
#investOpOverlay .inv-flow-grid th.inv-grid-totcol{border-left-color:var(--n-line2);}
#investOpOverlay .inv-flow-table input,#investOpOverlay .inv-flow-table select,#investOpOverlay .inv-flow-grid input{color:var(--n-ink);}
#investOpOverlay .inv-flow-table input:focus,#investOpOverlay .inv-flow-table select:focus,
#investOpOverlay .inv-flow-grid input:focus{background:rgba(255,122,61,.12);border-color:var(--mc);}
#investOpOverlay .inv-flow-table input.pos,#investOpOverlay .inv-flow-grid input.pos,#investOpOverlay .inv-flow-grid .pos{color:var(--green);}
#investOpOverlay .inv-flow-table input.neg,#investOpOverlay .inv-flow-grid input.neg,#investOpOverlay .inv-flow-grid .neg{color:var(--red);}
#investOpOverlay .inv-flow-grid thead th,#investOpOverlay .inv-flow-grid th.inv-grid-voce{background:#1b4a50;color:var(--n-ink);}
#investOpOverlay .inv-flow-grid tbody th.inv-grid-voce{background:#0f2a2e;color:var(--n-ink);border-right-color:var(--n-line2);}
#investOpOverlay .inv-flow-grid tr.inv-grid-sub th.inv-grid-voce,#investOpOverlay .inv-flow-grid tr.inv-grid-sub td{background:#0c2427;}
#investOpOverlay .inv-flow-grid tr.inv-grid-sub th.inv-grid-voce{color:var(--n-soft);}
#investOpOverlay .inv-flow-grid tr.inv-grid-somma td,#investOpOverlay .inv-flow-grid tr.inv-grid-somma th.inv-grid-voce{background:#143539;border-top-color:var(--n-line2);}
#investOpOverlay .inv-flow-grid .inv-grid-zero{color:rgba(179,205,201,.4);}
#investOpOverlay .inv-flow-grid .inv-grid-multi{border-color:var(--n-line2);color:var(--n-ink);}
#investOpOverlay .inv-flow-grid .inv-grid-n{background:rgba(255,122,61,.2);color:var(--n-ink);}
#investOpOverlay .inv-flow-grid .inv-grid-toggle:hover,#investOpOverlay .inv-sez-toggle:hover{color:var(--n-ink);}

/* questionario, sintesi, indicatori, dettagli */
#investOpOverlay .inv-q,#investOpOverlay .inv-kpirows,#investOpOverlay .inv-kpi,#investOpOverlay .inv-breakdown,
#investOpOverlay .inv-execsum{background:rgba(15,42,46,.72);border-color:var(--n-line);border-radius:12px;color:var(--n-ink);}
#investOpOverlay .inv-q-text,#investOpOverlay .inv-execsum-text,#investOpOverlay .inv-kpirow-val{color:var(--n-ink);}
#investOpOverlay .inv-q-anchors,#investOpOverlay .inv-execsum-notes,#investOpOverlay .inv-kpirow-sub{color:var(--n-faint);}
#investOpOverlay .inv-q-opt{background:rgba(8,29,32,.6);border-color:var(--n-line2);color:var(--n-soft);}
#investOpOverlay .inv-q-opt.sel{background:rgba(255,122,61,.16);border-color:var(--mc);color:var(--n-ink);}
#investOpOverlay .inv-execsum.ok{border-left-color:var(--green);}
#investOpOverlay .inv-execsum.warn{border-left-color:var(--amber);}
#investOpOverlay .inv-execsum.bad{border-left-color:var(--red);}
#investOpOverlay .inv-execsum-badge{color:#0b2a2e;}
#investOpOverlay .inv-execsum.ok .inv-execsum-badge{background:var(--green);}
#investOpOverlay .inv-execsum.warn .inv-execsum-badge{background:var(--amber);}
#investOpOverlay .inv-kpirow{border-bottom-color:var(--n-line);}
#investOpOverlay .inv-kpirow-val.pos,#investOpOverlay .inv-kpi-val.pos,#investOpOverlay .inv-cov.ok,#investOpOverlay .inv-mc-prob.ok{color:var(--green);}
#investOpOverlay .inv-cov.warn,#investOpOverlay .inv-mc-prob.warn{color:var(--amber);}
#investOpOverlay .inv-kpirow-val.neg,#investOpOverlay .inv-kpi-val.neg,#investOpOverlay .inv-cov.bad,#investOpOverlay .inv-mc-prob.bad{color:var(--red);}
#investOpOverlay .inv-breakdown-row.tot{border-top-color:var(--n-line2);}
#investOpOverlay .inv-warn{background:rgba(255,107,94,.10);border-color:rgba(255,107,94,.4);color:var(--n-ink);}
#investOpOverlay .inv-asset-group-title{border-bottom-color:var(--n-line);color:var(--n-faint);}
#investOpOverlay .inv-member-line{border-color:var(--n-line2);background:rgba(8,29,32,.4);}
#investOpOverlay .inv-tornado{background:rgba(233,243,241,.08);}
#investOpOverlay .inv-tornado span,#investOpOverlay .inv-mc-bin i{background:var(--mc);}
#investOpOverlay .inv-mc-axis{color:var(--n-faint);}

/* grafici SVG disegnati da invest.js con colori fissi */
#investOpOverlay svg [stroke="#1a1a1a"]{stroke:var(--n-ink);}
#investOpOverlay svg [fill="#1a1a1a"]{fill:var(--n-ink);}
#investOpOverlay svg [stroke="#d8d0c0"]{stroke:rgba(233,243,241,.22);}
#investOpOverlay svg [fill="#8a8477"]{fill:var(--n-faint);}
#investOpOverlay svg [fill="#b0392f"]{fill:#ff6b5e;}
#investOpOverlay svg [fill="#2e6e40"]{fill:#5cd696;}
#investOpOverlay svg [fill="#9a7b3f"]{fill:#e9c97a;}

/* stili inline di invest.js */
#investOpOverlay [style*="background:#2e6e40"]{background:#5cd696 !important;}
#investOpOverlay [style*="background:#b0392f"]{background:#ff6b5e !important;}
#investOpOverlay [style*="background:#9a7b3f"]{background:#e9c97a !important;}
#investOpOverlay [style*="background:#faf7f0"]{background:#143539 !important;}
#investOpOverlay [style*="color:#6b6455"]{color:var(--n-faint) !important;}
#investOpOverlay [style*="color:#b0392f"]{color:#ff8a7e !important;}
#investOpOverlay [style*="color:#2e6e40"]{color:var(--green) !important;}
#investOpOverlay [style*="background:rgba(46,110,64"]{background:rgba(92,214,150,.12) !important;}
#investOpOverlay [style*="background:rgba(154,123,63"]{background:rgba(255,122,61,.10) !important;}

/* ===== Pagine chiare → petrolio, terza tappa: Cash (19/09) =====
   Il piano di cassa (#cashPlanOverlay) porta px-page px-dark is-cash come
   la Home di Cash; il cruscotto di una società o di un gruppo (#cashOverlay)
   prende px-dark da _cashHomeLook (la Home resta px-page senza px-dark,
   così le sue sezioni non diventano riquadri). Il tema rimappa le
   variabili; qui si ridanno quelle che i moduli usano coi ripieghi chiari
   (--surface-2, --danger, --ok…) e si coprono i colori scritti fissi:
   schede del piano, mesi, griglia voce × mese, consuntivo, conti, linee,
   regole, Impostazioni, il perché dei numeri e gli stili inline.
   Il logo della banca resta su fondo bianco. */
:is(#cashPlanOverlay,#cashOverlay.px-dark){--surface-2:#143539;--border:rgba(233,243,241,.18);--danger:#ff6b5e;--ok:#5cd696;--warn:#ffb547;--accent:#2cc9b2;--green:#5cd696;--line-strong:rgba(233,243,241,.28);--paper-2:#081d20;color-scheme:dark;}
:is(#cashPlanOverlay,#cashOverlay).px-page.px-dark > .start-card{max-width:1560px;}
#cashPlanOverlay .inv-op-card .dash-topbar{margin-bottom:18px;}
#cashPlanOverlay .brand-word{color:var(--n-ink);}
#cashPlanOverlay #cashPlanSubtitle{color:var(--n-soft);}
#cashPlanOverlay .cash-plan-company{color:var(--n-ink);}
#cashPlanOverlay .cash-plan-group{color:var(--mc);background:rgba(92,214,150,.12);}
:is(#cashPlanOverlay,#cashOverlay.px-dark) a:not(.btn){color:#2cc9b2;}
:is(#cashPlanOverlay,#cashOverlay.px-dark) select option{background:#0f2a2e;color:var(--n-ink);}
:is(#cashPlanOverlay,#cashOverlay.px-dark) input[type=checkbox],:is(#cashPlanOverlay,#cashOverlay.px-dark) input[type=radio]{accent-color:var(--mc);}
:is(#cashPlanOverlay,#cashOverlay.px-dark) .ct-in{background:#081d20;color:var(--n-ink);border-color:var(--n-line2);}
:is(#cashPlanOverlay,#cashOverlay.px-dark) .fld-hint{color:var(--n-faint);}
:is(#cashPlanOverlay,#cashOverlay.px-dark) .dash-section-title{color:var(--n-ink);}
:is(#cashPlanOverlay,#cashOverlay.px-dark) .home-mod-card{background:rgba(15,42,46,.72);border-color:var(--n-line);}
:is(#cashPlanOverlay,#cashOverlay.px-dark) .kpi{border-radius:12px;background:rgba(15,42,46,.72);border-color:var(--n-line);}
:is(#cashPlanOverlay,#cashOverlay.px-dark) .commessa-table th,
:is(#cashPlanOverlay,#cashOverlay.px-dark) .cash-pivot-table th,
:is(#cashPlanOverlay,#cashOverlay.px-dark) .cash-pivot-corner{background:#143539;color:var(--n-ink);}
#cashPlanOverlay .cash-warning{background:rgba(255,107,94,.10);}
#cashPlanOverlay .cash-counter.low{color:var(--amber);}

/* stato della versione, spunte, numeri dei passi: pieni verdi, testo scuro */
:is(#cashPlanOverlay,#cashOverlay.px-dark) .cash-vstatus-badge.operative,
#cashPlanOverlay .cash-acc-okmark,#cashPlanOverlay .cash-acc-step.done b.n,#cashPlanOverlay .cash-month-year-due{color:#0b2a2e;}

/* schede del piano: tasti scuri, la scelta piena verde */
#cashPlanOverlay .cash-tab{background:rgba(15,42,46,.72);border-color:var(--n-line2);color:var(--n-soft);box-shadow:none;}
#cashPlanOverlay .cash-tab:hover{border-color:var(--mc);color:var(--n-ink);}
#cashPlanOverlay .cash-tab:focus-visible{outline-color:var(--mc);}
#cashPlanOverlay .cash-tab.sel,#cashPlanOverlay .cash-tab.sel:hover{background:var(--mc);border-color:var(--mc);color:#0b2a2e;font-weight:700;}
#cashPlanOverlay .cash-tab-ico{background:rgba(44,201,178,.14);color:var(--n-ink);}
#cashPlanOverlay .cash-tab.sel .cash-tab-ico{background:#0b2a2e;color:var(--mc);}
#cashPlanOverlay .cash-tab.sel .cash-tab-dot{background:#0b2a2e;box-shadow:0 0 0 2px var(--mc);}
#cashPlanOverlay .cash-tab-del{box-shadow:none;}

/* mesi e anni del passo Mese */
#cashPlanOverlay .cash-month-chip,#cashPlanOverlay .cash-month-year{background:rgba(15,42,46,.72);border-color:var(--n-line2);box-shadow:none;}
#cashPlanOverlay .cash-month-chip{color:var(--n-soft);}
#cashPlanOverlay .cash-month-year{color:var(--n-ink);}
#cashPlanOverlay .cash-month-chip:hover,#cashPlanOverlay .cash-month-year:hover,#cashPlanOverlay .cash-month-year.has-sel:not(.open){border-color:var(--mc);}
#cashPlanOverlay .cash-month-chip:focus-visible,#cashPlanOverlay .cash-month-year:focus-visible{outline-color:var(--mc);}
#cashPlanOverlay .cash-month-chip.sel,#cashPlanOverlay .cash-month-chip.sel:hover,
#cashPlanOverlay .cash-month-year.open,#cashPlanOverlay .cash-month-year.open:hover{background:var(--mc);border-color:var(--mc);color:#0b2a2e;}
#cashPlanOverlay .cash-month-chip.sel .cash-month-tick{color:#0b2a2e;}
#cashPlanOverlay .cash-month-year-n{background:rgba(44,201,178,.14);color:var(--n-ink);}
#cashPlanOverlay .cash-month-year.open .cash-month-year-n{background:#0b2a2e;color:var(--mc);}
#cashPlanOverlay .cash-month-year.open .cash-month-year-info,#cashPlanOverlay .cash-month-year.open .cash-month-year-caret{color:#0b2a2e;}

/* griglia voce × mese e tabelle del consuntivo */
#cashPlanOverlay .cash-grid-in{background:rgba(255,181,71,.10);color:var(--n-ink);border-color:rgba(255,181,71,.35);}
#cashPlanOverlay .cash-grid td.cash-grid-cell.closed{background:rgba(8,29,32,.45);}
#cashPlanOverlay .cash-grid tr.cash-grid-sub td{background:#0c2427;}
#cashPlanOverlay .cash-grid tr.cash-grid-cum td.warn{color:var(--amber);}
#cashPlanOverlay .cash-grid td.cash-grid-gcell{background:rgba(233,243,241,.05);border-left-color:#2cc9b2;}
#cashPlanOverlay .cash-grid-delta.good,#cashPlanOverlay .cash-rev-delta.good,:is(#cashPlanOverlay,#cashOverlay.px-dark) .cash-group-ok,#cashPlanOverlay .cash-bfc-closed{color:var(--green);}
#cashPlanOverlay .cash-flow-added{background:rgba(255,181,71,.08);}
#cashPlanOverlay .cash-flow-added.ok{background:rgba(92,214,150,.10);}
#cashPlanOverlay .cash-flow-quick{border:1px solid var(--n-line);}
#cashPlanOverlay .cash-rev-table tr.sel td{background:rgba(233,243,241,.06);}
#cashPlanOverlay .cash-bfc-table tr.cash-bfc-cat td{background:rgba(233,243,241,.03);}
#cashPlanOverlay .cash-bfc-kind.committed{color:#8fb3ff;border-color:rgba(143,179,255,.45);}
#cashPlanOverlay .cash-bfc-bar .committed,#cashPlanOverlay .cash-bfc-legend i.committed{background:#6f97f0;}
#cashPlanOverlay .cash-chart-chip.on{background:rgba(92,214,150,.14);}
#cashPlanOverlay .cash-cmp-m:not(.on):hover{background:rgba(233,243,241,.08);}
#cashPlanOverlay .cash-cmp-table td.cash-cmp-td{background:rgba(233,243,241,.04);}
#cashPlanOverlay .cash-cmp-table td.cash-cmp-fav{background:rgba(92,214,150,.14);}
#cashPlanOverlay .cash-cmp-table td.cash-cmp-unfav{background:rgba(255,107,94,.13);}
#cashPlanOverlay .cash-approval-note{background:rgba(233,243,241,.06);}
#cashPlanOverlay .cash-approval-returned{background:rgba(255,181,71,.12);}
#cashPlanOverlay .cash-approval-panel{border-color:var(--n-line2);}
:is(#cashPlanOverlay,#cashOverlay.px-dark) .cash-approval-mail-txt b{color:var(--n-ink);}
:is(#cashPlanOverlay,#cashOverlay.px-dark) .cash-approval-mail .px-mail-more > summary.btn.ghost{color:var(--n-ink);}
#cashPlanOverlay .cash-upd-edit{border-color:var(--mc);}
#cashPlanOverlay .cash-upd-ai{background:rgba(44,201,178,.14);color:var(--n-ink);}
#cashPlanOverlay .cash-imp-saldi{background:rgba(233,243,241,.05);}

/* conti, estratti, linee di credito e regole */
#cashPlanOverlay .cash-acc-step,#cashPlanOverlay .cash-acc-card,#cashPlanOverlay .cash-cl-card,#cashPlanOverlay .cash-rule-card,
#cashPlanOverlay .cash-tbl-wrap,#cashPlanOverlay .cash-set-nav{box-shadow:none;}
#cashPlanOverlay .cash-acc-card:hover{box-shadow:0 4px 14px rgba(0,0,0,.28);}
#cashPlanOverlay .cash-acc-card.editing{border-color:var(--mc);border-top-color:var(--mc);box-shadow:0 0 0 3px rgba(92,214,150,.18);}
#cashPlanOverlay .cash-acc-step b.n,#cashPlanOverlay .cash-cl-rank,#cashPlanOverlay .cash-rule-tag.then{background:#2cc9b2;color:#0b2a2e;}
#cashPlanOverlay .cash-acc-step.done b.n{background:var(--green);}
#cashPlanOverlay .cash-acc-ico,#cashPlanOverlay .cash-stm-ico,#cashPlanOverlay .cash-cl-guide-ico{background:rgba(44,201,178,.14);color:var(--n-ink);}
#cashPlanOverlay .cash-acc-money,#cashPlanOverlay .cash-acc-h3t,#cashPlanOverlay .cash-stm-n,#cashPlanOverlay .cash-cl-name{color:var(--n-ink);}
#cashPlanOverlay .cash-acc-cur{color:#2cc9b2;}
#cashPlanOverlay .cash-acc-disclose{background:rgba(44,201,178,.14);color:var(--n-ink);}
#cashPlanOverlay .cash-acc-disclose:hover{border-color:var(--mc);}
#cashPlanOverlay .cash-acc-total{background:#143539;border:1px solid var(--n-line2);box-shadow:none;}
#cashPlanOverlay .cash-bank-tag{background:rgba(44,201,178,.14);color:#7fe0d0;}
#cashPlanOverlay .cash-bank-menu{box-shadow:0 8px 24px rgba(0,0,0,.45);}
#cashPlanOverlay .cash-bank-opt:hover,#cashPlanOverlay .cash-bank-opt:focus-visible{border-color:var(--mc);background:rgba(44,201,178,.14);}
#cashPlanOverlay .cash-bank-opt.sel{border-color:var(--mc);}
#cashPlanOverlay .cash-tbl th{background:#143539;color:var(--n-ink);}
#cashPlanOverlay .cash-tbl th .cash-acc-sub{color:var(--n-faint);}
#cashPlanOverlay .cash-cl-name:focus{border-color:var(--mc);box-shadow:0 0 0 3px rgba(92,214,150,.22);}
#cashPlanOverlay .cash-rule-on{background:rgba(44,201,178,.14);color:#7fe0d0;}
#cashPlanOverlay .cash-rule-hits.on,#cashPlanOverlay .cash-rule-tag{background:rgba(44,201,178,.14);color:var(--n-ink);}

/* il perché dei numeri */
#cashPlanOverlay .cash-perche-chip:hover,#cashPlanOverlay .cash-perche-chip:focus-visible{border-color:var(--mc);}
#cashPlanOverlay .cash-perche-chip.sel{border-color:var(--mc);background:rgba(92,214,150,.14);color:var(--n-ink);}
#cashPlanOverlay .cash-perche-chip.sel small,#cashPlanOverlay .cash-perche-rettificata{color:var(--mc);}
#cashPlanOverlay .cash-perche-rett.on{border-left-color:var(--mc);background:rgba(92,214,150,.08);}

/* Impostazioni */
#cashPlanOverlay .cash-set-card{box-shadow:none;}
#cashPlanOverlay .cash-set-ico,#cashPlanOverlay .cash-set-chip-n{background:rgba(44,201,178,.14);color:var(--n-ink);}
#cashPlanOverlay .cash-set-title,#cashPlanOverlay .cash-set-big .cash-set-input,
#cashPlanOverlay #cashTab_impostazioni > .dash-section > .dash-section-head .dash-section-title{color:var(--n-ink);}
#cashPlanOverlay .cash-set-input{background:#081d20;}
#cashPlanOverlay .cash-set-money{background:#081d20;}
#cashPlanOverlay .cash-set-money .cash-set-input{background:transparent;}
#cashPlanOverlay .cash-set-input:hover:not(:disabled),#cashPlanOverlay .cash-set-money:hover{border-color:var(--mc);}
#cashPlanOverlay .cash-set-input:focus,#cashPlanOverlay .cash-set-money:focus-within{border-color:var(--mc);box-shadow:0 0 0 3px rgba(92,214,150,.22);}
#cashPlanOverlay .cash-set-cur{color:#2cc9b2;}
#cashPlanOverlay .cash-set-seg button:focus-visible,#cashPlanOverlay .cash-set-chip:focus-visible{outline-color:var(--mc);}
#cashPlanOverlay .cash-set-seg button[aria-pressed="true"]{background:var(--mc);color:#0b2a2e;box-shadow:none;}
#cashPlanOverlay .cash-set-span{background:rgba(44,201,178,.14);color:var(--n-ink);}
#cashPlanOverlay .cash-set-span b{background:#081d20;color:var(--n-ink);}
#cashPlanOverlay .cash-set-chip{background:rgba(8,29,32,.6);}
#cashPlanOverlay .cash-set-chip:hover{border-color:var(--mc);background:rgba(92,214,150,.14);color:var(--n-ink);}

/* cruscotto del gruppo */
#cashOverlay.px-dark a.btn{text-decoration:none;}
#cashOverlay.px-dark .cash-group-vbtn{background:rgba(15,42,46,.72);border-color:var(--n-line2);color:var(--n-soft);}
#cashOverlay.px-dark .cash-group-vbtn.sel{background:var(--mc);border-color:var(--mc);color:#0b2a2e;}
#cashOverlay.px-dark .cash-group-table th.cash-group-gcol,#cashOverlay.px-dark .cash-group-table td.cash-group-gcol{background:rgba(92,214,150,.10);}

/* stili inline dei moduli Cash */
:is(#cashPlanOverlay,#cashOverlay.px-dark) [style*="background:#fff2cc"]{background:rgba(255,181,71,.12) !important;color:var(--n-ink) !important;}
:is(#cashPlanOverlay,#cashOverlay.px-dark) [style*="color:#2e6e40"]{color:var(--green) !important;}
:is(#cashPlanOverlay,#cashOverlay.px-dark) [style*="background:rgba(46,110,64"]{background:rgba(92,214,150,.14) !important;}
:is(#cashPlanOverlay,#cashOverlay.px-dark) [style*="color:#b03a2e"]{color:#ff8a7e !important;}
:is(#cashPlanOverlay,#cashOverlay.px-dark) [style*="background:rgba(176,58,46"]{background:rgba(255,107,94,.14) !important;}
:is(#cashPlanOverlay,#cashOverlay.px-dark) [style*="background:rgba(0,0,0,"]{background:rgba(233,243,241,.05) !important;}
/* al telefono i riquadri hanno il loro margine interno: le tendine con max-width fisso non devono uscirne */
#cashPlanOverlay .dash-section select{max-width:100% !important;}
