/* L'app di Brandon. Solo variabili per i colori: le scrive tema.js su :root (da logica/tema.js).
   I valori qui sotto sono quelli di partenza (tema scuro, arancione del marchio), per non avere un lampo prima del JavaScript. */
@font-face { font-family: "Unbounded"; src: url(/fonts/unbounded-800.woff2) format("woff2"); font-weight: 800; font-display: swap; }

:root {
  --sfondo: #0e0e0e; --sup: #161616; --sfondo-2: #161616; --rilievo: #1c1c1c; --linea: rgba(255,255,255,.08); --testo: #f4f2ee; --tenue: #9b9893;
  --accento: #ff4d1c; --su-accento: #0e0e0e;
  --ok: #3fb27f; --att: #e0a52a; --pericolo: #ef6a5e; --ombra: none; --vela: rgba(0,0,0,.55);
  /* La linea premium (docs/app/2026-11-02-linea-premium.md): scala dei caratteri, spazi, raggi e movimento. Non cambiano col tema. */
  --t-eti: .75rem; --t-det: .8125rem; --t-sec: .9375rem; --t-testo: 1.0625rem; --t-card: 1.25rem; --t-nome: 1.75rem;
  --s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px; --s5: 24px; --s6: 32px;
  --r-card: 14px; --r-riga: 10px; --r-pillola: 999px;
  --mov-breve: 120ms; --mov: 200ms; --uscita: ease-out;
  --raggio: 14px;
  --menu-alto: 64px;
  --lettere: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  --titoli: "Unbounded", var(--lettere);
  color-scheme: dark;
}

* { box-sizing: border-box; }
html, body { margin: 0; overscroll-behavior-y: none; } /* niente rimbalzo di Safari: il tira giù è solo il nostro indicatore e il tasto Ferma resta fermo */
body {
  min-height: 100dvh; background: var(--sfondo); color: var(--testo);
  font: 16px/1.45 var(--lettere); -webkit-font-smoothing: antialiased;
}
a { color: inherit; }
button { font: inherit; color: inherit; }
[hidden] { display: none !important; }
.tenue { color: var(--tenue); }
.marchio { font-family: var(--titoli); font-weight: 800; letter-spacing: -0.02em; margin: 0; }

/* ---------- stati: carico, accesso, dentro ---------- */
body[data-stato="carico"] .guscio, body[data-stato="carico"] .accesso { visibility: hidden; }
body:not([data-stato="accesso"]) .accesso { display: none; }
body[data-stato="accesso"] .guscio { display: none; }

/* ---------- accesso ---------- */
.accesso { position: fixed; inset: 0; display: grid; place-items: center; padding: 24px; background: var(--sfondo); }
.accesso-corpo { width: min(100%, 360px); text-align: center; display: grid; gap: 14px; justify-items: center; }
.accesso .marchio { font-size: 2.2rem; }
.segno { width: 72px; height: 72px; border-radius: 50%; background: var(--accento); }

/* ---------- elementi comuni ---------- */
.pulsante {
  border: 0; border-radius: 12px; padding: 12px 18px; cursor: pointer; font-weight: 700;
  background: var(--accento); color: var(--su-accento);
}
.pulsante.secondario { background: var(--sfondo-2); color: var(--testo); border: 1px solid var(--linea); font-weight: 500; }
.pulsante:disabled { opacity: .55; cursor: default; }
.pulsante:focus-visible, .scelta:focus-visible, .voce-menu:focus-visible, .voce-elenco:focus-visible { outline: 2px solid var(--accento); outline-offset: 2px; }
.avviso { min-height: 1.4em; margin: 6px 0 0; font-size: .9rem; color: var(--tenue); }

.riquadro { background: var(--sfondo-2); border: 1px solid var(--linea); border-radius: var(--raggio); padding: 14px 16px; margin: 0 0 12px; }
.riquadro-titolo { margin: 0 0 10px; font-size: .75rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--tenue); }
.riquadro-testo { margin: 0 0 10px; }
.riquadro-testo:last-child { margin-bottom: 0; }
.riquadro.segnaposto { background: transparent; border-style: dashed; color: var(--tenue); }

.voce-elenco { display: flex; justify-content: space-between; gap: 12px; text-decoration: none; padding: 4px 0; }
.indietro { display: inline-block; margin: 0 0 12px; color: var(--tenue); text-decoration: none; }

/* ---------- Altro: lista da app, stessa testa per ogni sezione, righe piatte (restyling del 2/11) ----------
   Solo variabili del tema. L'elenco: un gruppo per card, righe da 52 px con la tessera dell'icona, titolo, nota su una riga e la freccia; il filetto
   parte dopo l'icona. Niente :hover fuori da (hover: hover), niente lampo al tocco, tocco subito (touch-action), testo dei comandi non selezionabile. */
.riquadro.gruppo { padding: 12px 0 0; overflow: hidden; }
.riquadro.gruppo .riquadro-titolo { padding: 0 16px; margin-bottom: 4px; }
.riquadro.gruppo.esci { padding-top: 0; }
.riquadro.gruppo > .avviso { padding: 0 16px 10px; margin: 0; min-height: 0; }
.riquadro.gruppo > .avviso:empty { padding: 0; }
.voce-altro {
  position: relative; display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; align-items: center; column-gap: 12px; width: 100%; min-height: 52px; padding: 10px 16px;
  text-align: left; text-decoration: none; color: inherit; font: inherit; background: none; border: 0; border-radius: 0; cursor: pointer;
  touch-action: manipulation; -webkit-tap-highlight-color: transparent; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none;
}
.voce-altro[hidden] { display: none; }
.voce-altro + .voce-altro::before { content: ""; position: absolute; top: 0; left: 58px; right: 0; border-top: 1px solid var(--linea); }
.voce-altro:active:not(:disabled) { background: color-mix(in srgb, var(--testo) 7%, transparent); }
.voce-altro:disabled { opacity: .6; cursor: default; }
.voce-altro:focus-visible { outline: 2px solid var(--accento); outline-offset: -2px; }
@media (hover: hover) and (pointer: fine) { .voce-altro:hover:not(:disabled) { background: color-mix(in srgb, var(--testo) 5%, transparent); } }
.voce-altro-icona { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 8px; background: color-mix(in srgb, var(--accento) 14%, var(--sfondo-2)); }
.voce-altro-icona .icona, .voce-altro-freccia .icona { width: 18px; height: 18px; fill: none; stroke: var(--accento); stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.voce-altro-testo { display: grid; min-width: 0; gap: 1px; }
.voce-altro-titolo { font-weight: 500; line-height: 1.3; }
.voce-altro-nota { font-size: .82rem; line-height: 1.35; color: var(--tenue); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.voce-altro-nota.a-capo { white-space: normal; overflow: visible; }
.voce-altro-freccia { display: grid; place-items: center; }
.voce-altro-freccia .icona { width: 16px; height: 16px; stroke: var(--tenue); }
/* La testa di ogni sezione di Altro: «← Altro» da 44 px, una riga di introduzione, poi le card con lo stesso passo (12 px tra una e l'altra). */
body[data-schermata="altro"] .indietro { display: inline-flex; align-items: center; min-height: 44px; margin: 0; padding-right: 12px; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
body[data-schermata="altro"] .indietro:focus-visible { outline: 2px solid var(--accento); outline-offset: 2px; border-radius: 6px; }
/* Un avviso vuoto non lascia un buco in fondo alla card (resta nella pagina: è una regione che legge lo schermo a voce). */
body[data-schermata="altro"] .avviso:empty { min-height: 0; margin: 0; }
body[data-schermata="altro"] .nota-sezione { margin: 0 0 12px; font-size: .9rem; line-height: 1.4; }
/* Righe piatte dentro le card: filetto tra una e l'altra, niente riquadro nel riquadro. */
body[data-schermata="altro"] .riquadro .elenco-righe { gap: 0; }
body[data-schermata="altro"] .riquadro .riga { background: none; border: 0; border-bottom: 1px solid var(--linea); border-radius: 0; padding: 12px 0; min-height: 44px; }
body[data-schermata="altro"] .riquadro li:last-child > .riga, body[data-schermata="altro"] .riquadro li:last-child > .riga-con-azione { border-bottom: 0; }
body[data-schermata="altro"] .riquadro .riga-con-azione { display: flex; align-items: center; gap: 12px; border-bottom: 1px solid var(--linea); }
body[data-schermata="altro"] .riquadro .riga-con-azione > .riga { flex: 1; min-width: 0; border-bottom: 0; }
body[data-schermata="altro"] .riquadro .riga-con-azione > .pulsante { flex: none; min-height: 44px; padding: 0 14px; font-size: .85rem; }

.scelte { display: grid; gap: 8px; }
.scelta {
  display: grid; gap: 2px; text-align: left; padding: 12px 14px; border-radius: 12px; cursor: pointer;
  background: var(--sfondo); border: 1px solid var(--linea);
}
.scelta[aria-pressed="true"] { border-color: var(--accento); box-shadow: inset 0 0 0 1px var(--accento); }
.riga-colore { display: flex; align-items: center; gap: 12px; }
.riga-colore input[type="color"] { width: 52px; height: 44px; padding: 0; border: 1px solid var(--linea); border-radius: 10px; background: none; cursor: pointer; }
.spunte { display: grid; gap: 10px; margin: 0 0 4px; }
.riga-spunta { display: flex; align-items: center; gap: 10px; cursor: pointer; }
.riga-spunta input[type="checkbox"] { width: 20px; height: 20px; flex: none; accent-color: var(--accento); }
.azioni-notifiche { margin: 12px 0 0; }
.riga-campo { display: flex; flex-wrap: wrap; gap: 8px; }
.campo { flex: 1 1 200px; min-width: 0; font: inherit; color: var(--testo); background: var(--sfondo); border: 1px solid var(--linea); border-radius: 10px; padding: 10px 12px; }
.campo:focus-visible { outline: 2px solid var(--accento); outline-offset: 2px; }

/* ---------- Oggi ---------- */
.collegamento { background: none; border: 0; padding: 0; color: var(--accento); cursor: pointer; font-size: .9rem; }
.oggi-testa { margin: 0 0 10px; }
.oggi-data { margin: 0; font-size: .85rem; }
.oggi-saluto { margin: 2px 0 0; font-size: 1.25rem; }
.numeri { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 0 0 12px; }
.numero { background: var(--sfondo-2); border: 1px solid var(--linea); border-radius: 12px; padding: 10px 8px; text-align: center; }
.numero b { display: block; font-size: 1.6rem; line-height: 1.2; }
.numero span { font-size: .75rem; color: var(--tenue); }
/* «Prima di tutto» non ha più il bordo arancione: nella bacheca l'arancione vuol dire urgente (.riquadro.urgente). */
.prima-titolo { margin: 0 0 4px; font-weight: 700; }
.prima-azioni { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.prima-azioni .pulsante { text-decoration: none; display: inline-block; }
.chiama { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.numero-telefono { display: none; font-variant-numeric: tabular-nums; }
.solo-computer { display: none; }
.chiama-esiti { align-items: center; gap: 8px; }
.da-approvare-testa { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.gruppo-nome { margin: 10px 0 4px; font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--tenue); }
.righe-schede { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.riga-scheda { display: flex; align-items: center; gap: 10px; background: var(--sfondo); border: 1px solid var(--linea); border-radius: 12px; padding: 10px 12px; font-size: .92rem; }
.riga-scheda-etichetta { display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0; cursor: pointer; }
.riga-scheda-etichetta span { overflow-wrap: anywhere; }
.riga-scheda input[type="checkbox"] { width: 20px; height: 20px; flex: none; accent-color: var(--accento); }
.riga-scheda .protetta { font-size: .75rem; color: var(--tenue); white-space: nowrap; }
.riga-scheda .apri { font-size: .85rem; color: var(--tenue); }
.riga-scheda.in-errore { flex-wrap: wrap; border-color: var(--accento); }
.riga-scheda.in-errore .scheda-esito { flex-basis: 100%; margin: 0; font-size: .9rem; overflow-wrap: anywhere; }
.riga-scheda.in-errore .avviso { flex-basis: 100%; margin: 0; }
.approva-tutte { width: 100%; margin-top: 12px; }
.punto-testo { margin: 0 0 6px; white-space: pre-line; }
.avvisi { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.avviso-guardiano { border-left: 3px solid var(--accento); padding: 4px 0 4px 10px; font-size: .92rem; }
/* I pulsanti degli avvisi del guardiano (componenti/avviso.js), in Oggi e nella Chat */
.avviso-testo { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.avviso-azioni { display: grid; gap: 6px; margin-top: 8px; }
.avviso-azioni .scheda-esito { margin: 0; color: var(--tenue); }
.avviso-azioni .avviso:empty { display: none; }
.avviso-cifra { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.avviso-cifra .tenue { flex-basis: 100%; font-size: .85rem; }
.avviso-cifra .campo { flex: 0 1 120px; }
.agenda-oggi { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; font-size: .92rem; }
.agenda-oggi li { display: grid; grid-template-columns: 4.5em 1fr; gap: 8px; }

/* ---------- Chat ---------- */
.filo { list-style: none; margin: 0; padding: 0 0 8px; display: flex; flex-direction: column; gap: 8px; }
.giorno-filo { align-self: center; font-size: .75rem; color: var(--tenue); padding: 6px 0; }
.bolla { max-width: 85%; padding: 8px 12px; border-radius: 14px; border: 1px solid var(--linea); }
.bolla.brandon { align-self: flex-start; background: var(--sfondo-2); }
.bolla.tu { align-self: flex-end; background: var(--accento); color: var(--su-accento); border-color: var(--accento); }
.bolla.invio { opacity: .7; }
.bolla.coda { opacity: .55; border-style: dashed; }
.bolla.scrive .bolla-testo { color: var(--tenue); font-style: italic; }
.bolla-chi { display: block; font-size: .72rem; font-weight: 700; color: var(--accento); }
.bolla-testo { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.bolla-ora { display: block; font-size: .7rem; opacity: .7; margin-top: 2px; }
.filo-vuoto { padding: 12px 0; }
.filo-scheda { align-self: stretch; }
.scheda { background: var(--sfondo-2); border: 1px solid var(--linea); border-radius: var(--raggio); padding: 12px 14px; display: grid; gap: 6px; }
.scheda.chiusa { opacity: .8; }
.scheda.evidenziata { border-color: var(--accento); box-shadow: inset 0 0 0 1px var(--accento); }
.scheda p { margin: 0; }
.scheda-testa { display: flex; justify-content: space-between; gap: 8px; font-size: .75rem; color: var(--tenue); text-transform: uppercase; letter-spacing: .04em; }
.scheda-stato.stato-in_attesa { color: var(--accento); }
.scheda-testo { white-space: pre-wrap; overflow-wrap: anywhere; background: var(--sfondo); border: 1px solid var(--linea); border-radius: 10px; padding: 8px 10px; font-size: .92rem; max-height: 320px; overflow: auto; }
.scheda-azioni { display: flex; flex-wrap: wrap; gap: 8px; }
.scheda-nota { display: grid; gap: 8px; }
.scheda-nota textarea, .scrivi textarea {
  width: 100%; font: inherit; color: var(--testo); background: var(--sfondo); border: 1px solid var(--linea); border-radius: 12px; padding: 10px 12px; resize: none;
}
.scrivi-fondo {
  position: sticky; bottom: calc(var(--menu-alto) + env(safe-area-inset-bottom)); background: var(--sfondo); padding: 8px 0; border-top: 1px solid var(--linea);
}
.scrivi { display: flex; gap: 8px; align-items: flex-end; }
.scrivi textarea { flex: 1; }
.scrivi-fondo .avviso:empty { display: none; }

/* ---------- Oggi: la home a riquadri (schermate/oggi.js, logica/bacheca.js), A2 del 2/11 ----------
   Una griglia di riquadri: due colonne sul telefono, quattro sul Mac. Il posto di ogni riquadro lo calcola impagina (--c2/--r2 e --c4/--r4).
   Il titolo è il protagonista; al posto del numero grande c'è il contenuto che conta (corpo), poi il resto in piccolo (sub); il numero è un conto
   piccolo accanto al titolo. Un solo arancione: il riquadro più urgente (.tessera--urgente, regola in logica/bacheca.js, disponiRiquadri).
   Un riquadro vuoto (.tessera--vuota) si abbassa e dice una frase calma. Tutto il riquadro si tocca (44 px e più). Il tocco risponde in 120 ms,
   solo opacità e trasformazione; con «riduci movimento» niente. Solo variabili del tema. */
.bento { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: auto; gap: 12px; }
.bento > .tessera[style] { grid-column: var(--c2); grid-row: var(--r2); }
.tessera {
  display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; align-content: start; min-width: 0; padding: 16px; border: 1px solid var(--linea);
  border-radius: 20px; background: var(--sfondo-2); color: var(--testo); text-decoration: none; -webkit-tap-highlight-color: transparent; touch-action: manipulation;
  transition: transform .12s ease-out, opacity .12s ease-out;
}
.tessera:focus-visible { outline: 2px solid var(--accento); outline-offset: 3px; }
.tessera:active { transform: scale(.985); opacity: .9; }
/* Il conto sta sempre in alto a destra, allineato alla prima riga del titolo; il titolo va a capo nella sua colonna e non lo spinge mai sotto. */
.tessera-testa { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: 6px; min-width: 0; }
.tessera-nome { min-width: 0; font-family: var(--titoli); font-weight: 800; font-size: clamp(.85rem, 4vw, 1.1rem); line-height: 1.2; letter-spacing: -.01em; color: var(--testo); overflow-wrap: break-word; }
.tessera-conto { min-width: 1.4rem; padding: 1px 6px; border: 1px solid var(--linea); border-radius: 999px; font-size: .8rem; font-weight: 600; line-height: 1.5; text-align: center; color: var(--tenue); font-variant-numeric: tabular-nums; }
.tessera-corpo { font-size: 1rem; font-weight: 600; line-height: 1.35; color: var(--testo); overflow-wrap: anywhere; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 5; overflow: hidden; }
.tessera-sub { font-size: .85rem; line-height: 1.35; color: var(--tenue); overflow-wrap: anywhere; }
.tessera-desc { display: none; font-size: .8rem; color: var(--tenue); margin-top: auto; padding-top: 4px; }
.tessera--grande { padding: 20px; gap: 10px; }
.tessera--grande .tessera-nome { font-size: 1.4rem; }
.tessera--grande .tessera-corpo { font-size: 1.15rem; }
.tessera--urgente { box-shadow: inset 3px 0 0 var(--accento); }
.tessera--urgente .tessera-conto { border-color: var(--accento); color: var(--accento); }
.tessera--vuota { gap: 4px; padding: 14px 16px; }
.tessera--vuota .tessera-nome { font-size: .95rem; color: var(--tenue); }
.tessera--vuota .tessera-corpo { font-size: .88rem; font-weight: 400; color: var(--tenue); }
@media (hover: hover) and (pointer: fine) { .tessera:hover { border-color: var(--tenue); } }
@media (prefers-reduced-motion: reduce) { .tessera { transition: none; } .tessera:active { transform: none; } }
/* Una parte aperta: «← Oggi» in alto, come le briciole dell'area admin. */
.briciole { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; margin: 0 0 12px; }
.indietro-oggi { font-weight: 700; color: var(--accento); text-decoration: none; padding: 8px 0; }
.briciole-percorso { font-size: .85rem; }

/* Le parti aperte (Avvisi): i riquadri degli avvisi in ordine di importanza, una colonna sul telefono e due sul computer.
   Urgente = una barra arancione a sinistra e l'etichetta arancione, nient'altro. */
.bacheca { display: grid; gap: 12px; align-items: start; }
.bacheca > .riquadro { margin: 0; min-width: 0; }
.riquadro.urgente { border-left: 3px solid var(--accento); padding-left: 14px; }
.riquadro.urgente .riquadro-titolo { color: var(--accento); }
.bacheca-testa { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.bacheca-testa .riquadro-titolo { margin-bottom: 6px; }
.bacheca-visto { color: var(--tenue); font-size: .85rem; padding: 6px 0 6px 12px; margin: -6px 0; }
.bacheca-apri { display: grid; gap: 2px; text-decoration: none; color: inherit; }
.bacheca-apri:focus-visible { outline: 2px solid var(--accento); outline-offset: 4px; border-radius: 6px; }
.bacheca-titolo { font-weight: 700; overflow-wrap: anywhere; }
.bacheca-testo { color: var(--tenue); font-size: .92rem; overflow-wrap: anywhere; }
@media (hover: hover) {
  .bacheca-avviso:not(.urgente):hover { border-color: var(--tenue); }
  .bacheca-visto:hover { color: var(--testo); }
}

/* ---------- guscio: telefono, una colonna con il menu in basso ---------- */
.guscio { min-height: 100dvh; display: flex; flex-direction: column; }
.intestazione { padding: calc(env(safe-area-inset-top) + 14px) 16px 8px; }
.intestazione .marchio.piccolo { font-size: .8rem; color: var(--tenue); }
/* Le schermate interne (linea premium §3) portano la loro testa: «‹ Altro» in alto, il nome sotto. Il marchio piccolo e il titolo del guscio si tolgono. */
body:has(#schermata .pz-nome) .intestazione { padding-bottom: 0; }
body:has(#schermata .pz-nome) .intestazione .marchio.piccolo, body:has(#schermata .pz-nome) #titolo { display: none; }
.canale { margin-left: 8px; font-size: .72rem; color: var(--tenue); }
.canale::before { content: ""; display: inline-block; width: 6px; height: 6px; margin-right: 5px; border-radius: 50%; background: var(--tenue); vertical-align: middle; }
.canale[hidden] { display: none; }
.titolo { margin: 2px 0 0; font-family: var(--titoli); font-weight: 800; font-size: var(--t-nome); line-height: 1.1; letter-spacing: -0.02em; }
.banda { margin: 0 16px 8px; padding: 8px 12px; border-radius: 10px; font-size: .85rem; border: 1px solid var(--accento); color: var(--testo); }
.schermata { flex: 1; padding: 8px 16px calc(var(--menu-alto) + env(safe-area-inset-bottom) + 20px); }
.colonna-destra { display: none; }

.menu {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 10;
  display: flex; justify-content: space-around; align-items: center;
  height: calc(var(--menu-alto) + env(safe-area-inset-bottom)); padding-bottom: env(safe-area-inset-bottom);
  background: var(--sfondo); border-top: 1px solid var(--linea);
}
.voce-menu { flex: 1; text-align: center; padding: 10px 4px; font-size: .8rem; text-decoration: none; color: var(--tenue); }
.voce-menu[aria-current="page"] { color: var(--testo); font-weight: 600; }
/* Il posto della nebulosa nel menu: il canvas (voce.js) sta qui sopra, grande uguale. */
.posto-nebulosa { flex: 0 0 64px; height: 100%; position: relative; }

/* ---------- la nebulosa e la finestra della voce (voce.js, nebulosa.js) ---------- */
/* Da addormentata copre solo il suo posto (left/top/width/height li scrive voce.js): il resto della schermata si tocca e
   si scorre come sempre. Da sveglia sale al centro e copre tutto; la schermata sotto si attenua. */
.nebulosa {
  position: fixed; z-index: 20; display: block; cursor: pointer; touch-action: none; -webkit-touch-callout: none; user-select: none;
  transition: left .45s ease, top .45s ease, width .45s ease, height .45s ease;
}
.nebulosa:focus-visible { outline: 2px solid var(--accento); outline-offset: -2px; border-radius: 12px; }
/* Addormentata: dentro il suo posto nel menu, lo segue sempre (tastiera di iPhone compresa). Nessuna transizione: non si muove da sola. */
.nebulosa.a-posto { position: absolute; inset: 0; width: 100%; height: 100%; transition: none; }
.nebulosa.sveglia { left: 0 !important; top: 0 !important; width: 100vw !important; height: 100dvh !important; }
.guscio { transition: opacity .4s; }
body.voce-sveglia .guscio { opacity: .28; }
body:not([data-stato="dentro"]) .nebulosa, body:not([data-stato="dentro"]) .finestra-voce { display: none; }
.finestra-voce {
  position: fixed; z-index: 30; left: 16px; right: 16px; bottom: calc(var(--menu-alto) + env(safe-area-inset-bottom) + 16px);
  max-height: 45dvh; overflow: auto; display: grid; gap: 8px;
  background: var(--sfondo-2); border: 1px solid var(--accento); border-radius: 16px; padding: 12px 14px; line-height: 1.4;
}
.finestra-voce p { margin: 0; }
.voce-tu { color: var(--tenue); font-style: italic; overflow-wrap: anywhere; }
.voce-tu:empty, .voce-stato:empty, .voce-risposta:empty, .voce-schede:empty { display: none; }
.voce-stato { font-size: .9rem; color: var(--tenue); }
.voce-risposta { white-space: pre-wrap; overflow-wrap: anywhere; }
.voce-schede { display: grid; gap: 8px; }
.voce-scrivi { display: flex; gap: 8px; align-items: flex-end; }
.voce-scrivi textarea {
  flex: 1; font: inherit; color: var(--testo); background: var(--sfondo); border: 1px solid var(--linea); border-radius: 12px; padding: 10px 12px; resize: none;
}
.voce-azioni { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.scrivi .detta { padding-left: 12px; padding-right: 12px; }
.scrivi .detta[aria-pressed="true"] { border-color: var(--accento); color: var(--accento); }
/* ---------- Altro e Diario (lavoro 11) ---------- */
.nota-sezione { margin: 0 0 12px; font-size: .9rem; }
.nota-sezione a { color: var(--accento); }
.titolo-sezione { margin: 0 0 4px; font-size: 1.15rem; overflow-wrap: anywhere; }
.elenco-righe { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.riga { display: grid; gap: 2px; text-decoration: none; background: var(--sfondo); border: 1px solid var(--linea); border-radius: 12px; padding: 10px 12px; }
a.riga:focus-visible { outline: 2px solid var(--accento); outline-offset: 2px; }
.riga.spenta { opacity: .7; }
/* Elenchi lunghi (Diario, Prove): righe semplici separate da una linea, senza riquadro per riga. */
.riquadro.compatto .elenco-righe { gap: 0; }
.riquadro.compatto .riga { background: none; border: 0; border-bottom: 1px solid var(--linea); border-radius: 0; padding: 8px 0; }
.riquadro.compatto li:last-child .riga { border-bottom: 0; }
a.pulsante { display: inline-block; text-decoration: none; }
.riga-testa { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.riga-titolo { font-weight: 600; min-width: 0; overflow-wrap: anywhere; }
.riga-destra { flex: none; font-size: .82rem; }
.riga-sotto { margin: 0; font-size: .88rem; color: var(--tenue); overflow-wrap: anywhere; }
.riga-evidenza .riga-sotto { font-size: .95rem; font-weight: 600; color: var(--testo); }
.segni { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 4px 0 0; }
.segno-stato { font-size: .72rem; line-height: 1.5; padding: 1px 8px; border-radius: 999px; border: 1px solid var(--linea); color: var(--tenue); }
.segno-stato.forte { border-color: var(--accento); color: var(--accento); }
.testo-lungo { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.filtri { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 0 0 8px; }
.modulo { display: grid; gap: 12px; }
.modulo-due { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; }
.campo-modulo { display: grid; gap: 4px; font-size: .85rem; color: var(--tenue); }
.campo-modulo .campo { font-size: 1rem; }
textarea.campo { resize: vertical; }
.errore-campo { color: var(--accento); font-size: .82rem; }
.errore-campo:empty { display: none; }
.nota-campo { margin: -6px 0 0; font-size: .85rem; }
.azioni { display: flex; flex-wrap: wrap; gap: 8px; }
.unita { align-self: center; color: var(--tenue); }
.riga-campo .campo[name="budget_mese_eur"] { flex: 0 1 140px; }
.pulsante.piccolo { padding: 6px 12px; font-size: .85rem; }
.ordine { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.ordine-voce { display: flex; align-items: center; gap: 8px; background: var(--sfondo); border: 1px solid var(--linea); border-radius: 12px; padding: 8px 10px; }
.ordine-numero { flex: none; width: 1.6em; text-align: center; font-weight: 700; color: var(--accento); }
.ordine-nome { flex: 1; display: grid; min-width: 0; }
.cifra { margin: 0; font-size: 2rem; font-weight: 700; line-height: 1.15; font-variant-numeric: tabular-nums; }
.cifra.piccola { font-size: 1.4rem; }
.barra { height: 10px; margin: 12px 0 8px; border-radius: 999px; overflow: hidden; background: var(--sfondo); border: 1px solid var(--linea); }
.barra-piena { height: 100%; background: var(--tenue); }
.barra.allarme .barra-piena { background: var(--accento); }
/* Altro → Costi, «Ultime settimane» (Fase 3, Task 7): una riga per settimana con la sua barra. */
.settimana-costi { display: block; margin: 10px 0; }
.settimana-costi .barra { margin: 6px 0 0; }
.tabella-resoconto { width: 100%; border-collapse: collapse; font-size: .92rem; font-variant-numeric: tabular-nums; }
.tabella-resoconto th, .tabella-resoconto td { padding: 8px 0; border-bottom: 1px solid var(--linea); vertical-align: top; }
.tabella-resoconto th { padding-right: 12px; font-weight: 500; text-align: left; color: var(--tenue); }
.tabella-resoconto td { text-align: right; }
.tabella-resoconto tr:last-child th, .tabella-resoconto tr:last-child td { border-bottom: 0; }

@media (prefers-reduced-motion: reduce) {
  .nebulosa, .guscio { transition: none; }
}

/* ---------- computer: tre colonne, menu a sinistra ---------- */
@media (min-width: 900px) {
  .guscio {
    display: grid; grid-template-columns: 200px minmax(0, 1fr) 300px;
    grid-template-rows: auto auto 1fr; grid-template-areas: "menu testa destra" "menu banda destra" "menu centro destra";
  }
  .intestazione { grid-area: testa; padding: 24px 28px 8px; }
  .banda { grid-area: banda; margin: 0 28px 8px; }
  .schermata { grid-area: centro; padding: 8px 28px 28px; max-width: 720px; }
  .colonna-destra { grid-area: destra; display: block; padding: 24px 16px; border-left: 1px solid var(--linea); }
  .menu {
    grid-area: menu; position: sticky; top: 0; height: 100dvh; padding: 24px 12px;
    flex-direction: column; justify-content: flex-start; align-items: stretch; gap: 4px;
    border-top: 0; border-right: 1px solid var(--linea);
  }
  .voce-menu { flex: none; text-align: left; padding: 10px 12px; border-radius: 10px; font-size: .95rem; }
  .voce-menu[aria-current="page"] { background: var(--sfondo-2); }
  .posto-nebulosa { flex: none; height: 96px; margin-top: 8px; }
  .finestra-voce { left: 50%; right: auto; width: min(560px, calc(100vw - 32px)); transform: translateX(-50%); bottom: 32px; }
  .numero-telefono { display: inline; }
  .solo-telefono { display: none; }
  .solo-computer { display: inline-flex; }
  .chiama .solo-telefono { display: none; } /* più forte di .prima-azioni .pulsante */
  .scrivi-fondo { bottom: 0; }
  /* Oggi: la home bento prende tutta la larghezza (senza la colonna di destra: agenda e avvisi sono riquadri) su quattro colonne.
     Le parti aperte (Avvisi) vanno su due colonne. */
  body[data-schermata="oggi"] .guscio { grid-template-columns: 200px minmax(0, 1fr); grid-template-areas: "menu testa" "menu banda" "menu centro"; }
  body[data-schermata="oggi"] .colonna-destra { display: none; }
  body[data-schermata="oggi"] .schermata { max-width: 1120px; }
  .bento { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: minmax(132px, auto); gap: 12px; }
  .bento > .tessera[style] { grid-column: var(--c4); grid-row: var(--r4); }
  .tessera { padding: 18px 20px; }
  .tessera-desc { display: block; }
  .tessera--grande { padding: 24px 26px; }
  .tessera--grande .tessera-nome { font-size: 1.6rem; }
  .tessera--grande .tessera-corpo { font-size: 1.3rem; }
  .bacheca { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ---------- Diario A2 (schermate/diario.js, 2/11): giorni grandi, «Da guardare» in cima, il contenuto in evidenza ----------
   Solo variabili del tema. Righe da 44 px e più, senza riquadro; i problemi in arancione (l'unico uso dell'accento qui). Le righe entrano in 160 ms
   (opacità e trasformazione); con «riduci movimento» niente. Hover solo con (hover: hover) e (pointer: fine). */
.diario-testa { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.diario-testa .nota-sezione { flex: 1; min-width: 0; margin: 0 0 8px; }
.diario-filtra { flex: none; display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 14px; border: 1px solid var(--linea); border-radius: 999px; background: none; color: var(--tenue);
  font: inherit; font-size: .9rem; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; user-select: none; -webkit-user-select: none; transition: transform .12s ease-out, opacity .12s ease-out; }
.diario-filtra .icona { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.diario-filtra.attivo { color: var(--testo); border-color: var(--tenue); }
.diario-filtra:active { transform: scale(.97); opacity: .9; }
.diario-filtra:focus-visible { outline: 2px solid var(--accento); outline-offset: 2px; }
.diario-filtri { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 8px; }
.diario-filtri[hidden] { display: none; }
.diario-filtri:not([hidden]) { animation: diario-entra .16s ease-out; }
.diario-conto { margin: 0 0 4px; font-size: .85rem; }
.diario-conto:empty { display: none; }
.diario-giorno { margin: 0 0 8px; }
.diario-giorno-titolo { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin: 24px 2px 6px; font-family: var(--titoli); font-weight: 800; font-size: 1.35rem; line-height: 1.2; letter-spacing: -.02em; color: var(--testo); }
.diario-giorno:first-child .diario-giorno-titolo { margin-top: 8px; }
.diario-giorno-n { flex: none; font-family: var(--lettere); font-weight: 400; font-size: .8rem; letter-spacing: 0; color: var(--tenue); font-variant-numeric: tabular-nums; }
.diario-riga { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 12px; align-items: start; min-height: 44px; padding: 13px 2px; border-bottom: 1px solid var(--linea); color: var(--testo); text-decoration: none;
  -webkit-tap-highlight-color: transparent; touch-action: manipulation; animation: diario-entra .16s ease-out both; }
a.diario-riga:active { opacity: .7; }
a.diario-riga:focus-visible { outline: 2px solid var(--accento); outline-offset: 2px; border-radius: 6px; }
.diario-riga-icona { display: grid; place-items: center; margin-top: 2px; }
.diario-riga-icona .icona { width: 18px; height: 18px; fill: none; stroke: var(--tenue); stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.diario-riga-testo { display: grid; gap: 2px; min-width: 0; }
.diario-riga-frase { font-size: 1.05rem; font-weight: 600; line-height: 1.3; overflow-wrap: anywhere; }
.diario-riga-meta { font-size: .85rem; color: var(--tenue); }
.diario-riga.male .diario-riga-frase, .diario-riga.male .diario-riga-meta { color: var(--accento); }
.diario-riga.male .diario-riga-icona .icona { stroke: var(--accento); }
.diario-giorno.da-guardare { padding-left: 14px; box-shadow: inset 3px 0 0 var(--accento); }
.diario-giorno.da-guardare .diario-giorno-titolo { margin-top: 8px; color: var(--accento); }
.diario-vuoto { padding: 24px 2px; }
.diario-vuoto-titolo { margin: 0 0 4px; font-family: var(--titoli); font-weight: 800; font-size: 1.2rem; letter-spacing: -.01em; }
@media (hover: hover) and (pointer: fine) { a.diario-riga:hover { background: color-mix(in srgb, var(--testo) 4%, transparent); } }
@keyframes diario-entra { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .diario-riga, .diario-filtri:not([hidden]) { animation: none; } .diario-filtra { transition: none; } .diario-filtra:active { transform: none; } }

/* ---------- Altro: titoli e contenuto (A2, 2/11) ----------
   In tutte le sezioni di Altro (non nell'elenco, che ha i suoi gruppi): il titolo della card è grande, la frase che conta sta al posto del numero
   nudo (.frase-card), i dettagli in piccolo sotto (.dettaglio-card), le righe hanno il nome in evidenza, le barre sono sottili e neutre.
   Solo variabili del tema. L'arancione resta a chi chiede un'azione (allarme del budget, problemi). */
body[data-schermata="altro"] .riquadro:not(.gruppo) { padding: 18px; border-radius: 20px; }
body[data-schermata="altro"] .riquadro:not(.gruppo) .riquadro-titolo { margin: 0 0 12px; font-family: var(--titoli); font-weight: 800; font-size: 1.15rem; line-height: 1.2; letter-spacing: -.01em; text-transform: none; color: var(--testo); }
body[data-schermata="altro"] .riquadro.urgente .riquadro-titolo { color: var(--accento); }
body[data-schermata="altro"] .frase-card { margin: 0 0 12px; font-size: 1.15rem; font-weight: 600; line-height: 1.35; overflow-wrap: anywhere; }
body[data-schermata="altro"] .dettaglio-card { margin: 10px 0 0; font-size: .85rem; line-height: 1.4; }
body[data-schermata="altro"] .riga-titolo { font-size: 1.02rem; font-weight: 600; }
body[data-schermata="altro"] .riga-destra { font-size: .9rem; font-variant-numeric: tabular-nums; }
body[data-schermata="altro"] .barra { height: 6px; margin: 10px 0 8px; border: 0; border-radius: 3px; background: var(--linea); }
body[data-schermata="altro"] .barra-piena { background: var(--testo); border-radius: 3px; transition: width .16s ease-out; }
body[data-schermata="altro"] .barra.allarme .barra-piena { background: var(--accento); }
body[data-schermata="altro"] .settimana-costi { margin: 0; padding: 12px 0; border-top: 1px solid var(--linea); }
body[data-schermata="altro"] .riquadro-titolo + .settimana-costi { border-top: 0; padding-top: 0; }
body[data-schermata="altro"] .settimana-costi .barra { margin: 8px 0 0; }
body[data-schermata="altro"] .tabella-resoconto { width: 100%; border-collapse: collapse; }
body[data-schermata="altro"] .tabella-resoconto th { padding: 11px 12px 11px 0; border-top: 1px solid var(--linea); font-weight: 400; font-size: .95rem; text-align: left; color: var(--tenue); }
body[data-schermata="altro"] .tabella-resoconto td { padding: 11px 0; border-top: 1px solid var(--linea); font-weight: 600; font-size: 1rem; text-align: right; font-variant-numeric: tabular-nums; color: var(--testo); }
body[data-schermata="altro"] .tabella-resoconto tr:first-child th, body[data-schermata="altro"] .tabella-resoconto tr:first-child td { border-top: 0; }
@media (prefers-reduced-motion: reduce) { body[data-schermata="altro"] .barra-piena { transition: none; } }

/* ---------- Clienti (Fase 3): elenco, scheda, contatti e pacchetto ---------- */
.testa-clienti { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; }
.testa-clienti .campo { flex: 1 1 200px; }
.collegamento-testo { color: var(--accento); }
.nota-cliente { margin: 10px 0; }
.riga.inclusa .riga-destra { color: var(--accento); }
.numeri-mese { margin: 0; }
.numeri-mese .numero { background: var(--sfondo); }
.riga-contatto { display: flex; align-items: center; gap: 8px; }
.riga-contatto .riga { flex: 1; min-width: 0; }
.riga-contatto .pulsante { flex: none; }
.voci-listino { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.voce-listino { display: grid; gap: 8px; background: var(--sfondo); border: 1px solid var(--linea); border-radius: 12px; padding: 10px 12px; }
.voce-listino .riga-spunta { align-items: flex-start; }
.voce-listino-nome { display: grid; gap: 2px; min-width: 0; overflow-wrap: anywhere; }
.voce-listino-nome .tenue { font-size: .85rem; }
.voce-listino-numeri { display: flex; flex-wrap: wrap; gap: 8px; padding-left: 30px; }
.campo-piccolo { display: flex; align-items: center; gap: 6px; font-size: .82rem; }
.campo-numero { flex: 0 1 110px; width: 110px; }
.campo-numero:disabled { opacity: .5; }
.nota-pacchetto { padding: 8px 10px; border-left: 3px solid var(--accento); }
.totali-pacchetto .elenco-righe { gap: 4px; }

@media (min-width: 900px) {
  .voce-listino { grid-template-columns: minmax(0, 1fr) auto; align-items: center; }
  .voce-listino-numeri { padding-left: 0; justify-content: flex-end; }
}

/* ---------- Clienti (Fase 3, Task 2): storia e decisioni ---------- */
/* La linea del tempo della pagina approvata (riferimenti-fase-3/storia-cliente.html), con le sole variabili del tema: asse a
   sinistra, tacche e date, una scheda sola aperta (quella al centro a scorrimento fermo, o al tocco; lo scorrimento è nativo e
   nessuno script lo muove: aprirla cambia l'altezza del nodo e Safari non riancora lo scroll, per questo overflow-anchor: none
   e la compensazione di scrollTop in storia.js; niente scroll-snap, perché Chrome
   riaggancia al primo nodo quando la scheda aperta cambia altezza), rombi per le decisioni
   (pieni se dette o confermate, tratteggiati se proposte), etichette di azione, scrubber a destra, «+» in basso. */
.chip { font: inherit; font-size: .8rem; padding: 4px 10px; border-radius: 999px; border: 1px solid var(--linea); background: none; color: var(--tenue); cursor: pointer; }
.chip.on, .chip[aria-pressed="true"] { background: var(--testo); color: var(--sfondo); border-color: var(--testo); }
.chip:focus-visible { outline: 2px solid var(--accento); outline-offset: 2px; }
.storia-filtri { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
.storia-prossimo { margin: 0 0 10px; padding: 8px 10px; border-radius: 12px; border: 1px solid var(--accento); font-size: .9rem; }
.storia-prossimo.tenue { border-color: var(--linea); }
.storia-colonna { position: relative; }
.storia-linea {
  position: relative; height: min(68dvh, 640px); overflow-y: auto; overscroll-behavior: contain; overflow-anchor: none;
  background: var(--sfondo-2); border: 1px solid var(--linea); border-radius: var(--raggio);
  background-image: linear-gradient(color-mix(in srgb, var(--testo) 4%, transparent) 1px, transparent 1px); background-size: 100% 28px;
}
.storia-asse { list-style: none; margin: 0; padding: 36vh 44px 36vh 0; position: relative; }
.storia-asse::before { content: ""; position: absolute; left: 63px; top: 0; bottom: 0; width: 2px; background: linear-gradient(to bottom, transparent, var(--linea) 15%, var(--testo) 60%, var(--testo)); }
.storia-nodo { position: relative; min-height: 56px; padding: 14px 0 14px 84px; }
.storia-capitolo { position: absolute; left: 84px; top: -6px; font-size: .68rem; letter-spacing: .14em; text-transform: uppercase; color: var(--tenue); }
.storia-tacca { position: absolute; left: 58px; top: 20px; width: 12px; height: 12px; border-radius: 50%; background: var(--sfondo-2); border: 2.5px solid var(--testo); transform-origin: center; }
.storia-nodo.dec .storia-tacca { border-radius: 2px; background: var(--accento); border-color: var(--accento); }
.storia-nodo.dec.tratteggiata .storia-tacca { background: var(--sfondo-2); border-style: dashed; }
.storia-nodo.aperta .storia-tacca { box-shadow: 0 0 0 3px color-mix(in srgb, var(--accento) 30%, transparent); }
.storia-data { position: absolute; left: 0; width: 48px; top: 18px; text-align: right; font-size: .72rem; font-variant-numeric: tabular-nums; color: var(--tenue); }
.storia-riga { display: flex; align-items: baseline; gap: 6px; width: 100%; text-align: left; background: none; border: 0; padding: 2px 0; cursor: pointer; font-size: .9rem; min-width: 0; }
.storia-riga-titolo { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; min-width: 0; }
.storia-riga small { color: var(--tenue); font-size: .75rem; flex: none; }
.storia-nodo.dec .storia-riga-titolo { color: var(--accento); font-weight: 600; }
.storia-az { flex: none; font-size: .68rem; padding: 1px 7px; border-radius: 999px; background: color-mix(in srgb, var(--accento) 18%, transparent); color: var(--accento); }
.storia-az.ok { background: color-mix(in srgb, var(--testo) 12%, transparent); color: var(--tenue); }
.storia-scheda { display: none; background: var(--sfondo); border: 1px solid var(--linea); border-radius: 14px; padding: 10px 12px; margin-top: 4px; gap: 4px; }
.storia-nodo.aperta .storia-riga { display: none; }
.storia-nodo.aperta .storia-scheda { display: grid; }
/* Il passaggio animato (storia.js): chi si chiude tiene la scheda finché svanisce; durante l'animazione il nodo taglia sotto
   (l'altezza animata), ma non sopra né ai lati, dove sporgono il capitolo, la tacca e la data. */
.storia-nodo.chiude .storia-riga { display: none; }
.storia-nodo.chiude .storia-scheda { display: grid; }
.storia-nodo.passa { clip-path: inset(-24px -100vw 0 -100vw); }
.storia-quando { margin: 0; font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: var(--tenue); }
.storia-titolo { font-size: 1rem; overflow-wrap: anywhere; }
.storia-nodo.dec .storia-titolo { color: var(--accento); }
.storia-testo { margin: 0; font-size: .9rem; white-space: pre-wrap; overflow-wrap: anywhere; }
.storia-fonte { margin: 0; font-size: .8rem; }
.storia-scheda .azioni { margin-top: 6px; }
.storia-vuota { margin: 0; padding: 20px 16px 20px 16px; }
.storia-scrub { position: absolute; right: 8px; top: 22%; bottom: 18%; width: 24px; display: flex; flex-direction: column; justify-content: space-between; }
.storia-scrub::before { content: ""; position: absolute; left: 11px; top: 0; bottom: 0; width: 2px; background: var(--linea); border-radius: 2px; }
.storia-tic { position: relative; width: 24px; height: 14px; background: none; border: 0; padding: 0; cursor: pointer; }
.storia-tic::before { content: ""; position: absolute; left: 6px; top: 6px; width: 12px; height: 2px; background: var(--tenue); }
.storia-tic span { position: absolute; right: 24px; top: 0; font-size: .62rem; color: var(--tenue); white-space: nowrap; opacity: 0; transition: opacity .2s; pointer-events: none; }
.storia-scrub:hover .storia-tic span, .storia-tic:focus-visible span { opacity: 1; }
.storia-piu { position: absolute; right: 12px; bottom: 12px; width: 44px; height: 44px; border-radius: 50%; border: 0; background: var(--accento); color: var(--su-accento); font-size: 26px; line-height: 44px; cursor: pointer; box-shadow: 0 8px 24px color-mix(in srgb, var(--accento) 35%, transparent); }
.storia-piu:focus-visible { outline: 2px solid var(--testo); outline-offset: 2px; }
.storia-pannello { display: none; }
.storia-supera { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 6px; }
.storia-supera .campo { flex: 1 1 160px; }
.riga-decisione { display: flex; align-items: flex-start; gap: 10px; }
.riga-decisione-corpo { flex: 1; min-width: 0; }
.riga-decisione .riga { background: none; border: 0; padding: 0; }
.riga-decisione .azioni { margin: 6px 0 2px; }
.storia-rombo { flex: none; width: 10px; height: 10px; margin-top: 14px; transform: rotate(45deg); background: var(--accento); border: 2px solid var(--accento); border-radius: 2px; }
.storia-rombo.tratteggiata { background: transparent; border-style: dashed; }
.riga-decisione.spenta { opacity: .6; }
.scheda-per { display: flex; flex-wrap: wrap; gap: 8px; }
.riga-scheda .cliente { font-size: .85rem; color: var(--accento); }

@media (min-width: 900px) {
  .storia { display: grid; grid-template-columns: minmax(0, 1fr) 220px; gap: 12px; }
  .storia-asse { padding-right: 36px; }
  .storia-pannello { display: block; background: var(--sfondo-2); border: 1px solid var(--linea); border-radius: var(--raggio); padding: 14px 16px; align-self: start; position: sticky; top: 16px; }
  .storia-pannello .storia-titolo { display: block; margin: 4px 0; }
  .storia-pannello .storia-testo { margin: 6px 0; }
  .storia-nodo.aperta .storia-scheda, .storia-nodo.chiude .storia-scheda { display: none; }
  .storia-nodo.chiude .storia-riga { display: flex; }
  .storia-nodo.aperta .storia-riga { display: flex; font-weight: 600; }
}
@media (prefers-reduced-motion: reduce) {
  .storia-linea { scroll-behavior: auto; }
}

/* ---------- Clienti (Fase 3, Task 3): lavori e materiali ---------- */
/* Un colore per tipo di lavoro (pallino e bordo), con le sole variabili del tema: sito = accento, social = testo,
   Brandon = accento mescolato al testo, Studio = tenue. */
.chip-lavoro { display: inline-flex; align-items: center; gap: 6px; font-size: .72rem; line-height: 1.5; padding: 1px 8px; border-radius: 999px; border: 1px solid var(--linea); color: var(--testo); }
.chip-lavoro::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--tenue); flex: none; }
.chip.chip-lavoro { font-size: .8rem; padding: 4px 10px; color: var(--tenue); }
.chip.chip-lavoro[aria-pressed="true"] { color: var(--sfondo); }
.lavoro-sito::before { background: var(--accento); }
.lavoro-social::before { background: var(--testo); }
.lavoro-brandon::before { background: color-mix(in srgb, var(--accento) 55%, var(--testo)); }
.lavoro-studio::before { background: var(--tenue); }
.chip.chip-lavoro[aria-pressed="true"]::before { background: var(--sfondo); }
.riquadro.lavoro { border-left: 3px solid var(--linea); }
.riquadro.lavoro.lavoro-sito { border-left-color: var(--accento); }
.riquadro.lavoro.lavoro-social { border-left-color: var(--testo); }
.riquadro.lavoro.lavoro-brandon { border-left-color: color-mix(in srgb, var(--accento) 55%, var(--testo)); }
.riquadro.lavoro.lavoro-studio { border-left-color: var(--tenue); }
.riquadro.lavoro.spenta { opacity: .65; }
.lavoro-testa { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.lavoro-titolo { font-size: 1rem; overflow-wrap: anywhere; }
.lavoro-riassunto { margin: 6px 0 4px; font-size: .9rem; color: var(--tenue); }
.riga-materiale .riga { background: none; border: 0; padding: 0; }
.riga-materiale .azioni { margin: 4px 0 2px; }
.riga-materiale.spenta { opacity: .6; }
.modulo-in-riga { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--linea); }
.storia-chip { display: flex; flex-wrap: wrap; gap: 6px; }
.storia-entra { margin: 0 0 8px; font-size: .9rem; }

/* ---------- Clienti (Fase 3, Task 4): scadenze e promesse ---------- */
/* «Rosso se passata»: il tema non ha un rosso, il colore forte è l'accento (come i segni «forte»). Solo variabili del tema. */
.riga-scadenza { border-left: 3px solid var(--linea); padding-left: 10px; }
.riga-scadenza .riga { background: none; border: 0; padding: 0; }
.riga-scadenza .azioni { margin: 4px 0 2px; }
.riga-scadenza.spenta { opacity: .6; }
.riga-scadenza.scadenza-passata { border-left-color: var(--accento); }
.riga-scadenza.scadenza-passata .riga-titolo { color: var(--accento); }
.riga-scadenza.scadenza-domani { border-left-color: color-mix(in srgb, var(--accento) 55%, var(--testo)); }
.riquadro.scadenze-passate { border-color: var(--accento); }
.riquadro.scadenze-passate .riquadro-titolo { color: var(--accento); }
.scadenze-riassunto { margin: 0 0 8px; font-size: .9rem; }
.scadenze-riassunto:empty { display: none; }

/* ---------- Clienti (Fase 3, Task 5): documenti e preventivi ---------- */
/* Solo variabili del tema. Le righe dei documenti riusano .riga-contatto; i preventivi riusano riquadro, voce-listino e totali-pacchetto. */
.riga-contatto .azioni { flex: none; flex-wrap: nowrap; }

body[data-stato="dentro"] .intestazione { padding-right: 96px; }
/* Ferma tutto (componenti/fermo.js): il tasto fisso in alto a destra su ogni schermata, sopra la tastiera; il foglio con la domanda; la banda. */
.fermo-tasto { display: none; position: fixed; top: calc(env(safe-area-inset-top) + 10px); right: 12px; z-index: 40; min-height: 32px; padding: 4px 12px;
  border-radius: 16px; border: 1px solid var(--accento); background: var(--sfondo); color: var(--accento); font: inherit; font-size: .8rem; opacity: .85; cursor: pointer;
  touch-action: manipulation; -webkit-tap-highlight-color: transparent; transition: opacity .15s ease; }
body[data-stato="dentro"] .fermo-tasto { display: block; }
.fermo-tasto:active:not(:disabled) { opacity: 1; }
.fermo-tasto:disabled { opacity: .6; cursor: default; }
.fermo-tasto:focus-visible { outline: 2px solid var(--accento); outline-offset: 2px; opacity: 1; }
.fermo-foglio { position: fixed; inset: 0; z-index: 50; display: flex; align-items: flex-start; justify-content: center; padding: calc(env(safe-area-inset-top) + 56px) 16px 16px;
  background: rgba(0, 0, 0, .55); }
.fermo-foglio[hidden] { display: none; }
.fermo-foglio-corpo { max-width: 420px; width: 100%; padding: 16px; border-radius: 14px; background: var(--sfondo-2); color: var(--testo); border: 1px solid var(--linea); }
.fermo-banda { margin: 8px 0 0; padding: 8px 12px; border-radius: 10px; font-size: .85rem; background: var(--accento); color: var(--su-accento); }
.fermo-banda[hidden] { display: none; }
.fermo-banda .collegamento { color: var(--su-accento); font-weight: 700; text-decoration: underline; }

/* ---------- la scheda di selezione della chat (conferma solo se serve, 30/10) ----------
   Una casella grande (44px) per riga, il resto della riga apre o chiude il testo della bozza; gli avvisi in arancio. Niente :hover fuori da
   (hover: hover), niente lampo al tocco, risposta subito (touch-action: manipulation), testo dei controlli non selezionabile. */
.selezione { display: grid; gap: 10px; margin-top: 8px; padding: 10px 12px; background: var(--sfondo-2); border: 1px solid var(--linea); border-radius: var(--raggio); }
.selezione-elenco { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.selezione-riga { display: grid; grid-template-columns: 44px 1fr; align-items: start; gap: 4px 10px; padding: 6px 0; border-top: 1px solid var(--linea); }
.selezione-riga:first-child { border-top: 0; }
.selezione-casella { width: 44px; height: 44px; margin: 0; accent-color: var(--accento); cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.selezione-fatta { min-height: 44px; display: grid; place-items: center; font-size: .72rem; font-weight: 700; color: var(--tenue); text-align: center; }
.selezione-voce {
  display: grid; gap: 2px; min-height: 44px; padding: 4px 0; text-align: left; background: none; border: 0; cursor: pointer;
  touch-action: manipulation; -webkit-tap-highlight-color: transparent; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none;
}
.selezione-voce:active { opacity: .7; }
.selezione-voce:focus-visible { outline: 2px solid var(--accento); outline-offset: 2px; border-radius: 8px; }
.selezione-numero { font-size: .72rem; font-weight: 700; color: var(--tenue); letter-spacing: .04em; }
.selezione-titolo { font-weight: 600; overflow-wrap: anywhere; }
.selezione-chi { font-size: .85rem; overflow-wrap: anywhere; }
.selezione-avviso { font-size: .82rem; color: var(--accento); }
.selezione-testo { grid-column: 2; margin: 0; }
.selezione-riga.gestita .selezione-titolo { color: var(--tenue); }
.selezione .scheda-azioni .pulsante { min-height: 44px; touch-action: manipulation; -webkit-tap-highlight-color: transparent; user-select: none; -webkit-user-select: none; }
.selezione .pulsante:active:not(:disabled) { transform: scale(.98); }
.selezione-esito:empty { display: none; }
.selezione-esito { color: var(--testo); font-weight: 600; }
/* Tira giù per ricaricare (componenti/tira-giu.js): una rotellina senza scritte che richiama la nebulosa di Brandon. Solo CSS e variabili del tema.
   --p (0..1) lo scrive il componente mentre si tira: riempie e ruota l'arco. «pronto» = si illumina; «gira» = ricarica in corso; «sparisce» = dissolvenza. */
.tira-giu { position: fixed; top: calc(env(safe-area-inset-top, 0px) + 8px); left: 50%; width: 30px; height: 30px; margin-left: -15px; border-radius: 50%; z-index: 40; pointer-events: none;
  background: var(--sfondo); box-shadow: 0 0 0 1px var(--linea); opacity: calc(.4 + var(--p, 0) * .6); transition: transform .08s linear, opacity .15s ease, box-shadow .15s ease; }
.tira-giu.pronto { box-shadow: 0 0 0 1px var(--accento), 0 0 12px color-mix(in srgb, var(--accento) 55%, transparent); opacity: 1; }
.tira-giu.gira { opacity: 1; }
.tira-giu.sparisce { opacity: 0; }
.tira-giu-arco { position: absolute; inset: 0; border-radius: 50%; background: conic-gradient(var(--accento) calc(var(--p, 0) * 1turn), transparent 0);
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 3px), var(--sfondo) calc(100% - 3px)); mask: radial-gradient(farthest-side, transparent calc(100% - 3px), var(--sfondo) calc(100% - 3px));
  transform: rotate(calc(var(--p, 0) * 270deg)); }
.tira-giu.gira .tira-giu-arco { --p: .7; animation: tira-giu-gira .9s linear infinite; }
.tira-giu-stella { position: absolute; left: 50%; top: 50%; width: 3px; height: 3px; margin: -1.5px 0 0 -1.5px; border-radius: 50%; background: var(--testo); opacity: .75;
  transform: rotate(var(--a)) translateY(-21px) scale(calc(.4 + var(--p, 0) * .6)); }
.tira-giu-cuore { position: absolute; left: 50%; top: 50%; width: 6px; height: 6px; margin: -3px 0 0 -3px; border-radius: 50%; background: var(--accento); opacity: calc(.35 + var(--p, 0) * .65); }
.tira-giu.gira .tira-giu-cuore { animation: tira-giu-batte 1.2s ease-in-out infinite; }
@keyframes tira-giu-gira { to { transform: rotate(360deg); } }
@keyframes tira-giu-batte { 0%, 100% { transform: scale(.8); opacity: .7; } 14% { transform: scale(1.25); opacity: 1; } 28% { transform: scale(.9); opacity: .8; } }
@keyframes tira-giu-respira { 50% { opacity: .45; } }
@media (prefers-reduced-motion: reduce) {
  .tira-giu, .tira-giu-arco { transition: opacity .15s ease; }
  .tira-giu-arco { transform: none; }
  .tira-giu.gira .tira-giu-arco { animation: tira-giu-respira 1.2s ease-in-out infinite; }
  .tira-giu.gira .tira-giu-cuore { animation: none; }
}
.segno-mail { color: var(--attenzione, #b45309); font-size: .7rem; margin-right: 4px; cursor: help; }
.scheda-titolo-riga { margin: 0; }
.selezione-citazione { margin: 0 0 6px; font-size: .85rem; }
.selezione-con-si { margin: 0; font-size: .85rem; }
.selezione-con-si:empty { display: none; }

/* ---------- Pezzi comuni (linea premium del 2/11: docs/app/2026-11-02-linea-premium.md §2, §3 e §5) ----------
   Testa, indietro, riga, card, pillole, ricerca, stato vuoto, scheletri, errore, «Torna a oggi» e foglio dal basso (componenti/pezzi.js e foglio.js).
   Solo variabili del tema, scala in rem, spazi 4-32, raggi 14/10/999; tocco da 44 px; movimento da 120 a 200 ms, solo opacità e spostamento. */
.pz-testa { padding: var(--s4) 0 var(--s3); }
.pz-testa.fissa { position: sticky; top: 0; z-index: 10; background: var(--sfondo); }
.pz-testa-riga { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--s3); }
.pz-testa-testi { min-width: 0; }
.pz-nome { margin: 0; font-family: var(--titoli); font-weight: 800; font-size: var(--t-nome); line-height: 1.1; letter-spacing: -0.02em; overflow-wrap: anywhere; }
.pz-sotto { margin: 6px 0 0; font-size: var(--t-sec); color: var(--tenue); }
.pz-testa.compatta .pz-nome { font-size: var(--t-testo); }
.pz-testa.compatta .pz-sotto { display: none; }
.pz-indietro { display: flex; align-items: center; gap: 2px; min-height: 44px; margin: 0 -8px; padding: 0 8px; color: var(--tenue); font-size: var(--t-sec); text-decoration: none;
  touch-action: manipulation; -webkit-tap-highlight-color: transparent; transition: opacity 80ms var(--uscita); }
.pz-indietro:active { opacity: .7; }
.pz-indietro:focus-visible { outline: 2px solid var(--testo); outline-offset: 2px; border-radius: var(--r-riga); }
.pz-indietro .icona, .pz-tessera .icona, .pz-riga-freccia .icona, .pz-ricerca-icona .icona, .pz-vuoto-cerchio .icona, .pz-errore-icona .icona, .pz-torna .icona {
  width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; flex: none; }

.pz-card { margin: 0 0 var(--s3); overflow: hidden; background: var(--sup); border: 1px solid var(--linea); border-radius: var(--r-card); box-shadow: var(--ombra); }
.pz-card-titolo { margin: 0; padding: var(--s4) var(--s4) var(--s1); font-family: var(--titoli); font-weight: 800; font-size: var(--t-card); line-height: 1.2; letter-spacing: -0.02em; }
.pz-riga { position: relative; display: grid; grid-template-columns: 30px minmax(0, 1fr) auto auto; column-gap: var(--s3); align-items: center; width: 100%; min-height: 52px;
  padding: 10px var(--s4); text-align: left; font: inherit; color: inherit; background: none; border: 0; border-radius: 0; text-decoration: none; }
.pz-riga.pz-senza-icona { grid-template-columns: minmax(0, 1fr) auto auto; }
.pz-riga + .pz-riga::before { content: ""; position: absolute; top: 0; left: calc(var(--s4) + 30px + var(--s3)); right: 0; border-top: 1px solid var(--linea); }
.pz-riga.pz-senza-icona + .pz-riga.pz-senza-icona::before { left: var(--s4); }
.pz-tocco { cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; transition: opacity 80ms var(--uscita); }
.pz-tocco:active { opacity: .7; }
.pz-tocco:focus-visible { outline: 2px solid var(--testo); outline-offset: -2px; }
.pz-tessera { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 8px; background: var(--rilievo); color: var(--tenue); }
.pz-tessera .icona { width: 18px; height: 18px; }
.pz-tono-ric .pz-tessera { background: color-mix(in srgb, var(--accento) 14%, transparent); color: var(--accento); }
.pz-tono-ok .pz-tessera { background: color-mix(in srgb, var(--ok) 16%, transparent); color: var(--ok); }
.pz-tono-att .pz-tessera { background: color-mix(in srgb, var(--att) 16%, transparent); color: var(--att); }
.pz-riga-testi { display: grid; min-width: 0; gap: 1px; }
.pz-riga-titolo { font-weight: 600; font-size: var(--t-testo); line-height: 1.3; overflow-wrap: anywhere; }
.pz-riga-nota { display: block; font-size: var(--t-det); line-height: 1.35; color: var(--tenue); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pz-riga-destra { color: var(--tenue); font-size: var(--t-sec); white-space: nowrap; }
.pz-riga-freccia { display: grid; place-items: center; color: var(--tenue); }
.pz-riga-freccia .icona { width: 18px; height: 18px; }

.pz-pillole { display: flex; gap: var(--s2); overflow-x: auto; margin: 0 calc(var(--s4) * -1); padding: var(--s1) var(--s4) var(--s2); scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.pz-pillole::-webkit-scrollbar { display: none; }
.pz-pillola { position: relative; isolation: isolate; flex: none; display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 14px; border: 0; background: none;
  color: var(--testo); font: inherit; font-size: var(--t-sec); white-space: nowrap; touch-action: manipulation; -webkit-tap-highlight-color: transparent; cursor: pointer; }
.pz-pillola::before { content: ""; position: absolute; inset: var(--s1) 0; z-index: -1; border-radius: var(--r-pillola); background: var(--sup); border: 1px solid var(--linea); }
.pz-pillola.attiva { color: var(--sfondo); font-weight: 600; }
.pz-pillola.attiva::before { background: var(--testo); border-color: var(--testo); }
.pz-pillola:active { opacity: .7; }
.pz-pillola:focus-visible { outline: 2px solid var(--testo); outline-offset: -2px; border-radius: var(--r-pillola); }
.pz-conto { font-style: normal; font-size: var(--t-det); color: var(--tenue); }
.pz-pillola.attiva .pz-conto { color: inherit; opacity: .7; }

.pz-ricerca { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 14px; color: var(--tenue); background: var(--rilievo); border: 1px solid var(--linea); border-radius: var(--r-riga); }
.pz-ricerca:focus-within { border-color: var(--tenue); }
.pz-ricerca-campo { flex: 1; min-width: 0; min-height: 44px; padding: 0; border: 0; outline: none; background: none; color: var(--testo); font: inherit; font-size: 16px; -webkit-appearance: none; appearance: none; }
.pz-ricerca-campo::placeholder { color: var(--tenue); }

.pz-vuoto { display: grid; justify-items: center; gap: var(--s3); padding: 72px var(--s6) var(--s5); text-align: center; }
.pz-vuoto-cerchio { display: grid; place-items: center; width: 64px; height: 64px; border-radius: var(--r-pillola); background: var(--sup); border: 1px solid var(--linea); color: var(--tenue); }
.pz-vuoto-cerchio .icona { width: 28px; height: 28px; }
.pz-vuoto-titolo { margin: 0; font-weight: 600; font-size: var(--t-testo); }
.pz-vuoto-testo { margin: 0; max-width: 280px; font-size: var(--t-sec); color: var(--tenue); }
.pz-azione-vuoto { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 18px; color: var(--testo); background: var(--rilievo); border: 1px solid var(--linea);
  border-radius: var(--r-riga); font: inherit; font-weight: 600; text-decoration: none; touch-action: manipulation; cursor: pointer; }
.pz-azione-vuoto:active { opacity: .7; }

.pz-scheletri { display: grid; gap: var(--s3); }
.pz-barra { display: block; height: 12px; width: 90%; border-radius: 6px; background: var(--rilievo); }
.pz-barra.lunga { width: 70%; }
.pz-barra.corta { width: 40%; }
.pz-tessera-sk { width: 30px; height: 30px; border-radius: 8px; background: var(--rilievo); }
.pz-barre { display: grid; gap: 8px; }
.pz-sk-riga { display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: var(--s3); align-items: center; min-height: 52px; padding: 10px var(--s4); }
.pz-sk-card { display: grid; gap: 10px; padding: var(--s4); background: var(--sup); border: 1px solid var(--linea); border-radius: var(--r-card); }
.pz-sk-testa { display: grid; gap: 10px; padding: var(--s4) 0; }
.pz-sk-testa .pz-barra { height: 20px; }

.pz-errore { display: grid; grid-template-columns: 20px minmax(0, 1fr) auto; gap: var(--s3); align-items: start; padding: var(--s3) var(--s4); font-size: var(--t-sec);
  background: var(--sup); border: 1px solid var(--linea); border-radius: var(--r-riga); }
.pz-errore-icona { color: var(--att); padding-top: 2px; }
.pz-errore-riprova { min-height: 44px; margin: -10px -8px -10px 0; padding: 0 var(--s3); color: var(--testo); background: none; border: 0; font: inherit; font-weight: 600; cursor: pointer; touch-action: manipulation; }

.pz-torna { position: fixed; left: 50%; transform: translateX(-50%); bottom: calc(var(--menu-alto) + env(safe-area-inset-bottom) + var(--s4)); z-index: 15; display: inline-flex; align-items: center;
  gap: 6px; min-height: 44px; padding: 0 var(--s4); border: 0; border-radius: var(--r-pillola); background: var(--testo); color: var(--sfondo); font: inherit; font-size: var(--t-sec); font-weight: 600;
  cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; animation: pz-sale var(--mov) var(--uscita); }
@keyframes pz-sale { from { opacity: 0; transform: translate(-50%, 8px); } to { opacity: 1; transform: translate(-50%, 0); } }
.pz-torna:active { opacity: .7; }

.pz-vela { position: fixed; inset: 0; z-index: 60; background: var(--vela); opacity: 0; transition: opacity var(--mov) var(--uscita); }
.pz-vela.aperto { opacity: 1; }
.pz-foglio { position: fixed; left: 0; right: 0; bottom: 0; z-index: 61; max-width: 430px; margin: 0 auto; padding: var(--s2) var(--s4) calc(var(--s5) + env(safe-area-inset-bottom));
  background: var(--sup); border: 1px solid var(--linea); border-bottom: 0; border-radius: var(--r-card) var(--r-card) 0 0; opacity: 0; transform: translateY(24px);
  transition: transform var(--mov) var(--uscita), opacity var(--mov) var(--uscita); }
.pz-foglio.aperto { opacity: 1; transform: none; }
.pz-presa { width: 36px; height: 5px; margin: 0 auto var(--s3); border-radius: 3px; background: color-mix(in srgb, var(--tenue) 50%, transparent); }
.pz-foglio-titolo { margin: var(--s2) 0 0; font-weight: 600; font-size: var(--t-testo); }
.pz-foglio-sotto { margin: 2px 0 var(--s2); font-size: var(--t-det); color: var(--tenue); }
.pz-azione { position: relative; display: grid; grid-template-columns: 30px minmax(0, 1fr); column-gap: var(--s3); align-items: center; width: 100%; min-height: 52px; padding: 0; text-align: left;
  color: var(--testo); background: none; border: 0; border-top: 1px solid var(--linea); font: inherit; font-size: var(--t-testo); font-weight: 600; text-decoration: none; cursor: pointer;
  touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.pz-azione:active { opacity: .7; }
.pz-azione:focus-visible { outline: 2px solid var(--testo); outline-offset: -2px; }
.pz-foglio-titolo + .pz-azione, .pz-foglio-sotto + .pz-azione { border-top: 0; }
.pz-pericolo { color: var(--pericolo); }
.pz-pericolo .pz-tessera { background: color-mix(in srgb, var(--pericolo) 14%, transparent); color: var(--pericolo); }
.pz-foglio-sep { height: var(--s2); margin: var(--s1) calc(var(--s4) * -1); background: var(--rilievo); border-top: 1px solid var(--linea); border-bottom: 1px solid var(--linea); }
.pz-foglio-sep + .pz-azione { border-top: 0; }
.pz-foglio-frase { margin: var(--s3) 0 var(--s4); font-size: var(--t-testo); line-height: 1.4; }
.pz-foglio-bottoni { display: grid; gap: var(--s2); }
.pz-foglio-bottoni .pz-azione { grid-template-columns: 1fr; justify-items: center; border: 1px solid var(--linea); border-radius: var(--r-riga); }
.pz-foglio-bottoni .pz-verbo { color: var(--sfondo); background: var(--pericolo); border-color: var(--pericolo); }
@media (prefers-reduced-motion: reduce) {
  .pz-foglio { transform: none; transition: opacity var(--mov-breve) linear; }
  .pz-vela { transition: opacity var(--mov-breve) linear; }
  .pz-torna { animation: none; }
  .pz-pillola::before, .pz-tocco, .pz-indietro { transition: none; }
}

/* ---------- Da approvare (linea premium, ondata 2): una scheda da decidere con «Scarta» e «Approva» ---------- */
.pz-appr { display: grid; gap: var(--s2); padding: var(--s4); touch-action: pan-y; -webkit-touch-callout: none; user-select: none; -webkit-user-select: none; }
.pz-appr + .pz-appr { border-top: 1px solid var(--linea); }
.pz-appr.scelta { background: var(--rilievo); }
.pz-urgenza { margin: 0; font-size: var(--t-eti); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--accento); }
.pz-appr-testa { display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; column-gap: var(--s3); align-items: center; }
.pz-appr-titolo { margin: 0; font-size: var(--t-testo); font-weight: 600; line-height: 1.3; overflow-wrap: anywhere; }
.pz-appr-eta { font-size: var(--t-sec); color: var(--tenue); white-space: nowrap; }
.pz-appr-anteprima { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; margin: 0 0 0 42px; font-size: var(--t-sec); color: var(--tenue); }
.pz-appr-meta { margin: 0 0 0 42px; font-size: var(--t-det); color: var(--tenue); }
.pz-appr-azioni { display: flex; align-items: center; justify-content: flex-end; gap: var(--s2); margin-top: var(--s1); }
.pz-tasto-appr { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; padding: 0 var(--s4); color: var(--testo); background: var(--rilievo);
  border: 1px solid var(--linea); border-radius: var(--r-riga); font: inherit; font-size: var(--t-sec); font-weight: 600; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent;
  transition: opacity 80ms var(--uscita); }
.pz-tasto-appr:active, .pz-piu:active, .pz-spunta:active { opacity: .7; }
.pz-tasto-appr.neutro { color: var(--sfondo); background: var(--testo); border-color: var(--testo); }
.pz-tasto-appr.principale { color: var(--su-accento); background: var(--accento); border-color: var(--accento); }
.pz-tasto-appr:disabled { opacity: .5; cursor: default; }
.pz-tasto-appr:focus-visible, .pz-piu:focus-visible, .pz-spunta:focus-visible { outline: 2px solid var(--testo); outline-offset: 2px; }
.pz-icona-tasto .icona { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; display: block; }
.pz-piu { display: grid; place-items: center; width: 44px; height: 44px; margin-right: auto; margin-left: calc(var(--s2) * -1); color: var(--tenue); background: none; border: 0; border-radius: var(--r-pillola); cursor: pointer; touch-action: manipulation; }
.pz-piu .icona { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.pz-spunta { display: grid; place-items: center; width: 30px; height: 30px; padding: 0; color: var(--su-accento); background: none; border: 1.75px solid var(--tenue); border-radius: var(--r-pillola); cursor: pointer; touch-action: manipulation; }
.pz-spunta.si { background: var(--ok); border-color: var(--ok); color: var(--sfondo); }
.pz-spunta .icona { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2.25; stroke-linecap: round; stroke-linejoin: round; }
.pz-barra-azioni { position: fixed; left: 0; right: 0; bottom: calc(var(--menu-alto) + env(safe-area-inset-bottom)); z-index: 14; display: flex; gap: var(--s2); max-width: 430px; margin: 0 auto;
  padding: var(--s3) var(--s4); background: var(--sfondo); border-top: 1px solid var(--linea); }
.pz-barra-azioni .pz-tasto-appr { flex: 1; }
.pz-riga-testo-link { display: inline-flex; align-items: center; min-height: 44px; padding: 0 var(--s2); color: var(--tenue); background: none; border: 0; font: inherit; font-size: var(--t-sec); cursor: pointer; touch-action: manipulation; }
.pz-riga-testo-link.forte { color: var(--testo); font-weight: 600; }
.pz-rimandate { display: flex; justify-content: space-between; align-items: center; min-height: 44px; padding: 0 var(--s2); font-size: var(--t-sec); color: var(--tenue); }
.pie-lista { margin: var(--s2) var(--s1) 0; font-size: var(--t-det); line-height: 1.4; color: var(--tenue); }
.pz-azioni-testa { display: flex; align-items: center; }

/* ---------- Diario (linea premium, ondata 3): la parte fissa, i giorni appiccicati, la frase con i nomi in grassetto ---------- */
.pz-fissa { position: sticky; top: 0; z-index: 10; margin: 0 calc(var(--s4) * -1); padding: 0 var(--s4); background: var(--sfondo); }
.pz-fissa .pz-testa { padding: var(--s2) 0 var(--s1); }
.pz-compatta-riga { display: none; align-items: baseline; gap: var(--s3); min-height: 44px; padding: var(--s2) 92px 0 0; }
.pz-compatta-nome { font-family: var(--titoli); font-weight: 800; font-size: var(--t-testo); letter-spacing: -0.02em; }
.pz-compatta-conto { font-size: var(--t-sec); color: var(--tenue); }
.pz-fissa.compatta .pz-testa { display: none; }
.pz-fissa.compatta .pz-compatta-riga { display: flex; }
.pz-barra-filtri { display: flex; align-items: center; gap: var(--s1); }
.pz-barra-filtri .pz-pillole { flex: 1; min-width: 0; margin: 0; padding-left: 0; padding-right: var(--s4); }
.pz-ricerca-riga { padding: var(--s1) 0 var(--s2); }
.pz-lente { display: grid; place-items: center; flex: none; width: 44px; height: 44px; margin-left: calc(var(--s2) * -1); color: var(--testo); background: none; border: 0; border-radius: var(--r-pillola); cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.pz-lente:active { opacity: .7; }
.pz-lente .icona { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.pz-lente:focus-visible { outline: 2px solid var(--testo); outline-offset: -2px; }
.pz-da-guardare { margin: var(--s3) var(--s1) var(--s2); }
.pz-giorno { position: sticky; top: var(--alto-fissa, 0px); z-index: 9; display: flex; justify-content: space-between; align-items: baseline; gap: var(--s3); margin: 0 calc(var(--s4) * -1); padding: var(--s3) calc(var(--s4) + var(--s1)) var(--s2); background: var(--sfondo); }
.pz-giorno-nome { margin: 0; font-family: var(--titoli); font-weight: 800; font-size: var(--t-card); line-height: 1.2; letter-spacing: -0.02em; }
.pz-giorno-conto { flex: none; font-size: var(--t-det); color: var(--tenue); white-space: nowrap; }
.pz-frase { font-weight: 400; }
.pz-frase strong { font-weight: 600; }
.pz-carica-altre { display: flex; margin: var(--s4) auto 0; }

/* ---------- Posta (linea premium, ondata 4): la mail, la scelta in un foglio ---------- */
.pz-mail { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: var(--s3); width: 100%; min-height: 52px; padding: var(--s3) var(--s4); text-align: left; font: inherit; color: inherit;
  background: none; border: 0; text-decoration: none; touch-action: pan-y; -webkit-touch-callout: none; user-select: none; -webkit-user-select: none; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: opacity 80ms var(--uscita); }
.pz-mail + .pz-mail::before { content: ""; position: absolute; top: 0; left: var(--s4); right: 0; border-top: 1px solid var(--linea); }
.pz-mail:active { opacity: .7; }
.pz-mail:focus-visible { outline: 2px solid var(--testo); outline-offset: -2px; }
.pz-mail-testi { display: grid; min-width: 0; gap: 1px; }
.pz-mail-da { font-weight: 600; font-size: var(--t-testo); line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pz-mail-da span { font-weight: 400; font-size: var(--t-det); color: var(--tenue); }
.pz-mail-oggetto { font-size: var(--t-testo); line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pz-mail-prima { font-size: var(--t-sec); line-height: 1.35; color: var(--tenue); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pz-mail-lato { display: grid; justify-items: end; align-content: start; gap: 6px; padding-top: 2px; font-size: var(--t-det); color: var(--tenue); white-space: nowrap; }
.pz-punto { display: block; width: 8px; height: 8px; border-radius: var(--r-pillola); background: var(--accento); }
.pz-pillola-menu .icona { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.pz-scelte { max-height: 56vh; overflow-y: auto; margin: 0 calc(var(--s4) * -1); padding: 0 var(--s4); -webkit-overflow-scrolling: touch; }
.pz-scelta { grid-template-columns: minmax(0, 1fr) auto; text-align: left; }
.pz-scelta-testi { display: grid; min-width: 0; }
.pz-scelta-nota { font-size: var(--t-det); font-weight: 400; color: var(--tenue); }
.pz-cerchietto { width: 22px; height: 22px; border: 2px solid var(--tenue); border-radius: var(--r-pillola); }
.pz-scelta.attiva .pz-cerchietto { border-color: var(--testo); background: radial-gradient(var(--testo) 0 45%, transparent 50%); }

/* ---------- Notifiche e Aspetto (linea premium, ondata 5): interruttori, scelte, miniature, riordino ---------- */
.pz-eti { margin: var(--s5) var(--s1) var(--s2); font-size: var(--t-eti); font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--tenue); }
.pz-eti-doppia { display: flex; justify-content: space-between; gap: var(--s3); }
.pz-eti-destra { font-weight: 400; letter-spacing: 0; text-transform: none; }
.pz-int { position: relative; flex: none; width: 51px; height: 31px; border-radius: var(--r-pillola); background: color-mix(in srgb, var(--tenue) 45%, transparent); }
.pz-int::after { content: ""; position: absolute; top: 2px; left: 2px; width: 27px; height: 27px; border-radius: var(--r-pillola); background: var(--sfondo); transition: transform var(--mov-breve) var(--uscita); }
.pz-int.acceso { background: var(--ok); }
.pz-int.acceso::after { transform: translateX(20px); background: var(--sup); }
.pz-riga[role="switch"] .pz-int { grid-column: 3 / span 2; justify-self: end; }
.pz-notifica { display: grid; grid-template-columns: 36px minmax(0, 1fr) auto; gap: var(--s3); align-items: start; padding: var(--s3) var(--s4); background: var(--rilievo); border: 1px solid var(--linea); border-radius: var(--r-card); }
.pz-notifica-app { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 9px; background: var(--accento); color: var(--su-accento); font-family: var(--titoli); font-weight: 800; }
.pz-notifica-testi { display: grid; font-size: var(--t-sec); line-height: 1.35; }
.pz-notifica-testi strong { font-weight: 600; }
.pz-notifica-ora { font-size: var(--t-det); color: var(--tenue); }
.pz-form-riga { display: flex; gap: var(--s2); align-items: center; padding: var(--s2) var(--s4) var(--s3); border-top: 1px solid var(--linea); }
.pz-campo-mail { flex: 1; min-width: 0; padding: 0 var(--s3); background: var(--rilievo); border: 1px solid var(--linea); border-radius: var(--r-riga); }

.pz-seg { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: var(--s1); padding: var(--s1); background: var(--sup); border: 1px solid var(--linea); border-radius: var(--r-riga); }
.pz-seg-voce { min-height: 44px; padding: 0 var(--s2); color: var(--tenue); background: none; border: 0; border-radius: 8px; font: inherit; font-size: var(--t-sec); cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.pz-seg-voce.attiva { color: var(--testo); background: var(--rilievo); font-weight: 600; box-shadow: inset 0 0 0 1px var(--linea); }
.pz-seg-voce:active { opacity: .7; }

.pz-anteprima { padding: var(--s3); }
.pz-mini { display: grid; gap: var(--s2); padding: var(--s3); color: var(--testo); background: var(--sfondo); border: 1px solid var(--linea); border-radius: var(--r-card); }
.pz-mini-nome { font-family: var(--titoli); font-weight: 800; font-size: var(--t-det); }
.pz-mini-griglia { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s2); }
.pz-mini-tessera { display: grid; gap: 2px; align-content: start; min-height: 62px; padding: var(--s2) var(--s3); background: var(--sup); border: 1px solid var(--linea); border-radius: var(--r-riga); }
.pz-mini-tessera.urgente { border-left: 3px solid var(--accento); }
.pz-mini-tessera b { font-family: var(--titoli); font-weight: 800; font-size: var(--t-eti); }
.pz-mini-tessera span { font-size: var(--t-det); color: var(--tenue); }
.pz-mini-menu { display: flex; justify-content: space-around; padding-top: var(--s2); border-top: 1px solid var(--linea); font-size: var(--t-eti); color: var(--tenue); }
.pz-mini-menu .su { color: var(--testo); font-weight: 600; }
.pz-temi { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s2); }
.pz-tema { display: grid; gap: var(--s2); min-width: 0; padding: var(--s2); color: var(--testo); background: var(--sup); border: 1.5px solid var(--linea); border-radius: var(--r-card); font: inherit; cursor: pointer; touch-action: manipulation; text-align: center; -webkit-tap-highlight-color: transparent; }
.pz-tema.attivo { border-color: var(--testo); }
.pz-tema:active { opacity: .7; }
.pz-tema .pz-mini { gap: var(--s1); padding: var(--s2); pointer-events: none; }
.pz-tema .pz-mini-nome { font-size: var(--t-eti); }
.pz-tema .pz-mini-griglia { grid-template-columns: 1fr; }
.pz-tema .pz-mini-tessera:nth-child(n + 2) { display: none; }
.pz-tema .pz-mini-tessera { min-height: 0; padding: 6px var(--s2); }
.pz-tema .pz-mini-tessera b { font-size: var(--t-eti); line-height: 1.2; }
.pz-tema .pz-mini-tessera span { display: none; }
.pz-tema-nome { font-size: var(--t-sec); }
.pz-tema.attivo .pz-tema-nome { font-weight: 600; }
.pz-tema-auto { position: relative; border-radius: var(--r-card); overflow: hidden; }
.pz-tema-meta.chiaro { position: absolute; inset: 0; clip-path: inset(0 0 0 50%); }
.pz-tema-meta .pz-mini { height: 100%; border-radius: 0; }
.pz-colori { display: flex; gap: var(--s1); padding: var(--s3) var(--s1); }
.pz-colore { position: relative; flex: 1; min-width: 44px; height: 44px; padding: 0; background: none; border: 0; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.pz-colore::before { content: ""; position: absolute; inset: 4px; border-radius: var(--r-pillola); background: var(--c); }
.pz-colore.libero::before { content: none; }
.pz-colore.libero { display: block; border-radius: var(--r-pillola); background-clip: content-box; padding: 4px; }
.pz-colore.scelto::after { content: ""; position: absolute; inset: 0; border: 2px solid var(--testo); border-radius: var(--r-pillola); }
.pz-colore:active { opacity: .7; }
.pz-colore-libero { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.pz-ordinabile { display: grid; }
.pz-ordina { grid-template-columns: 44px minmax(0, 1fr) auto; column-gap: var(--s1); padding-left: var(--s1); }
.pz-ordina.trascinata { z-index: 5; background: var(--rilievo); box-shadow: var(--ombra); transition: none; }
.pz-ordina:not(.trascinata) { transition: transform var(--mov-breve) var(--uscita); }
.pz-maniglia { display: grid; place-items: center; width: 44px; height: 44px; margin-left: calc(var(--s1) * -1); color: var(--tenue); background: none; border: 0; cursor: grab; touch-action: none; -webkit-tap-highlight-color: transparent; }
.pz-maniglia .icona { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.pz-maniglia:focus-visible { outline: 2px solid var(--testo); outline-offset: -2px; border-radius: var(--r-riga); }
.pz-interruttore-solo { display: grid; place-items: center; min-width: 44px; min-height: 44px; padding: 0; background: none; border: 0; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.pz-interruttore-solo:focus-visible { outline: 2px solid var(--testo); outline-offset: -2px; border-radius: var(--r-pillola); }
.pz-da-rifare { display: grid; gap: var(--s2); }
.pz-errore-fine { display: flex; align-items: center; justify-content: space-between; gap: var(--s3); padding: 0 var(--s4) var(--s3); font-size: var(--t-det); color: var(--tenue); }
.pz-errore-fine .pz-errore-riprova { margin-left: auto; }
@media (prefers-reduced-motion: reduce) {
  .pz-int, .pz-int::after, .pz-ordina:not(.trascinata) { transition: none; }
}

/* ---------- Procedure guidate e moduli (Google, Il tuo Brandon): un passo per schermata ---------- */
.pz-google, .pz-brandon { display: grid; gap: var(--s3); align-content: start; }
.pz-spiega { margin: 0 var(--s1); font-size: var(--t-sec); line-height: 1.5; color: var(--tenue); }
.pz-link { margin: 0 var(--s1); font-size: var(--t-sec); color: var(--testo); text-decoration: underline; text-underline-offset: 3px; }
.pz-tasto { display: grid; place-items: center; min-height: 48px; padding: 0 var(--s5); color: var(--su-accento); background: var(--accento); border: 0; border-radius: var(--r-riga); font: inherit; font-weight: 600; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.pz-tasto:active { opacity: .7; }
.pz-tasto:disabled { color: var(--tenue); background: var(--rilievo); cursor: default; opacity: 1; }
.pz-tasto-sec { color: var(--testo); background: var(--sup); box-shadow: inset 0 0 0 1px var(--linea); }
.pz-consenso { display: flex; align-items: flex-start; gap: var(--s3); min-height: 44px; padding: var(--s2) var(--s1); font-size: var(--t-sec); line-height: 1.4; cursor: pointer; }
.pz-consenso input { flex: none; width: 24px; height: 24px; margin: 0; accent-color: var(--accento); }
.pz-campo-riga { display: grid; gap: var(--s1); padding: 0 var(--s1); font-size: var(--t-sec); }
.pz-campo { min-height: 48px; padding: 0 var(--s3); color: var(--testo); background: var(--sup); border: 1px solid var(--linea); border-radius: var(--r-riga); font: inherit; font-size: 1rem; }
.pz-campo:focus-visible { outline: 2px solid var(--testo); outline-offset: 1px; }
.pz-aiuto { font-size: var(--t-det); line-height: 1.4; color: var(--tenue); }
.pz-riga-azione { display: grid; }
.pz-riga-azione > .pz-pillola-tasto, .pz-riga-azione > .pz-inviata { justify-self: end; margin: calc(var(--s1) * -1) var(--s4) var(--s3) 0; }
.pz-riga-azione > .pz-riga { padding-right: 0; }
.pz-pillola-tasto { min-height: 44px; padding: 0 var(--s4); color: var(--testo); background: none; border: 1px solid var(--linea); border-radius: var(--r-pillola); font: inherit; font-size: var(--t-sec); font-weight: 600; white-space: nowrap; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.pz-pillola-tasto:active { opacity: .7; }
.pz-pillola-tasto:disabled { color: var(--tenue); cursor: default; }
.pz-inviata { display: inline-flex; align-items: center; gap: var(--s1); min-height: 44px; font-size: var(--t-sec); color: var(--tenue); white-space: nowrap; }
.pz-inviata-icona .icona { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.pz-foglio-modulo { display: grid; gap: var(--s3); }
.pz-foglio-messaggio { margin: 0; font-size: var(--t-sec); color: var(--tenue); }
.pz-file { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; }
.pz-tasto-riga { justify-self: start; margin: calc(var(--s1) * -1) 0 var(--s2) calc(var(--s4) + 30px + var(--s3)); }
.pz-tasto-riga { min-height: 44px; padding: 0 var(--s1); color: var(--testo); background: none; border: 0; font: inherit; font-size: var(--t-sec); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.pz-tasto-riga:disabled { color: var(--tenue); text-decoration: none; font-weight: 400; cursor: default; }
.pz-colore-campo { width: 100%; height: 48px; padding: 4px; background: var(--sup); border: 1px solid var(--linea); border-radius: var(--r-riga); }
.pz-logo-anteprima { max-height: 48px; width: auto; justify-self: start; border-radius: 8px; }

.pz-brandon .pz-riga-nota, .pz-google .pz-riga-nota { display: block; white-space: normal; overflow: visible; text-overflow: clip; }
.pz-gruppi, .pz-risultati { margin-top: var(--s3); }
.pz-gruppi[hidden] { display: none; }

/* ---------- Impostazioni (Silenzio, Priorità, Voce, Budget, Passkey): righe con il valore a destra ---------- */
.pz-impostazione { display: grid; gap: var(--s3); align-content: start; }
.pz-modulo { display: grid; gap: var(--s3); }
.pz-riga-campo { justify-content: space-between; cursor: pointer; }
.pz-campo-destra { flex: none; width: 7.5rem; min-height: 44px; padding: 0 var(--s2); color: var(--testo); background: none; border: 0; font: inherit; font-size: var(--t-testo); text-align: right; }
.pz-campo-destra:focus-visible { outline: 2px solid var(--testo); outline-offset: -2px; border-radius: var(--r-riga); }
.pz-campo-destra::placeholder { color: var(--tenue); }
.pz-campo-regola { min-height: 96px; padding: var(--s3); resize: vertical; }
.pz-avanzamento-blocco { display: grid; gap: var(--s2); padding: 0 var(--s1); }
.pz-avanzamento-blocco[hidden] { display: none; }
.pz-avanzamento { height: 6px; overflow: hidden; border-radius: var(--r-pillola); background: var(--linea); }
.pz-avanzamento-riempita { height: 100%; border-radius: var(--r-pillola); background: var(--ok); }
.pz-avanzamento-blocco .pz-spiega { margin: 0; }
.pz-testo-resoconto { margin: 0 var(--s1); color: var(--testo); }

/* ---------- Rubrica: iniziali, indice A-Z, scheda della persona ---------- */
.pz-iniziali { display: grid; place-items: center; flex: none; width: 40px; height: 40px; border-radius: var(--r-pillola); color: var(--testo); background: var(--rilievo); box-shadow: inset 0 0 0 1px var(--linea); font-family: var(--titoli); font-weight: 800; font-size: var(--t-det); letter-spacing: -.02em; }
.pz-iniziali.grande { width: 72px; height: 72px; font-size: var(--t-testo); }
.pz-persona { grid-template-columns: 40px minmax(0, 1fr) auto auto; }
.pz-persona.spenta { opacity: .6; }
.pz-lettera { scroll-margin-top: var(--s5); }
.pz-rubrica { position: relative; }
.pz-indice { position: fixed; top: 50%; right: 2px; z-index: 6; display: grid; transform: translateY(-50%); }
.pz-indice-lettera { min-width: 22px; min-height: 18px; padding: 0; color: var(--tenue); background: none; border: 0; font: inherit; font-size: 10px; font-weight: 600; cursor: pointer; touch-action: manipulation; }
.pz-scheda-capo { display: grid; justify-items: start; gap: var(--s2); }
.pz-scheda-azienda { margin: 0; font-size: var(--t-sec); color: var(--tenue); }
.pz-scheda-tasti { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s2); }
@media (max-width: 380px) { .pz-indice { display: none; } }
.pz-impostazione > *, .pz-google > *, .pz-brandon > * { min-width: 0; }
a.pz-tasto { text-decoration: none; }
.pz-scheda-tasti { grid-template-columns: repeat(auto-fit, minmax(0, 1fr)); }

/* ---------- Agenda: la striscia della settimana e la lista del giorno ---------- */
.pz-mese-riga { display: flex; align-items: center; justify-content: space-between; gap: var(--s3); }
.pz-mese { font-family: var(--titoli); font-weight: 800; font-size: var(--t-testo); }
.pz-mese-comandi { display: flex; align-items: center; gap: var(--s1); }
.pz-freccia { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; color: var(--testo); background: none; border: 0; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.pz-freccia:disabled { color: var(--tenue); opacity: .4; cursor: default; }
.pz-freccia:active:not(:disabled) { opacity: .7; }
.pz-freccia .icona { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.pz-settimana { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: var(--s1); touch-action: pan-y; }
.pz-sg { display: grid; justify-items: center; gap: 2px; min-height: 72px; padding: var(--s2) 0; color: var(--testo); background: var(--sup); border: 1px solid var(--linea); border-radius: var(--r-riga); font: inherit; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.pz-sg:active { opacity: .7; }
.pz-sg-sigla { font-size: var(--t-eti); text-transform: uppercase; letter-spacing: .06em; color: var(--tenue); }
.pz-sg-numero { font-family: var(--titoli); font-weight: 800; font-size: var(--t-testo); }
.pz-sg.oggi .pz-sg-numero { color: var(--accento); }
.pz-sg.scelto { color: var(--sfondo); background: var(--testo); border-color: var(--testo); }
.pz-sg.scelto .pz-sg-sigla, .pz-sg.scelto.oggi .pz-sg-numero { color: inherit; }
.pz-sg-punto { width: 6px; height: 6px; border-radius: var(--r-pillola); background: none; }
.pz-sg-punto.pieno { background: var(--tenue); }
.pz-sg.scelto .pz-sg-punto.pieno { background: currentColor; }
.pz-evento { display: grid; grid-template-columns: 4.5rem 4px minmax(0, 1fr); gap: var(--s3); align-items: stretch; padding: var(--s3) var(--s4); }
.pz-evento + .pz-evento { border-top: 1px solid var(--linea); }
.pz-evento-ora { display: grid; align-content: start; gap: 2px; font-size: var(--t-sec); font-weight: 600; }
.pz-evento-fine { font-weight: 400; color: var(--tenue); }
.pz-evento-barra { border-radius: var(--r-pillola); background: var(--tenue); }
.pz-evento-barra.meet { background: var(--ok); }
.pz-evento-barra.luogo { background: var(--att); }
.pz-evento .pz-riga-testi { display: grid; gap: 2px; }
.pz-evento .pz-riga-nota { white-space: normal; }
