/* ============================================================
   MONO — MONDO NOTTURNO (site-wide, 2026-07-16).
   Attivo su ogni pagina con <body class="... mono-dark-home">.
   ROLLBACK: togliere la classe dai body + i <link> a questo file.
   Principio (dal prototipo approvato): notte, testi crema, accenti
   ORO, header terracotta col logo originale, card crema col testo
   scuro (contenuti e cibo restano leggibili e appetitosi).
   Ordine del file: mondo → header → sezioni → testi (larghi) →
   accenti → IMMUNIZZAZIONI (per ultime: vincono a parità di peso).
   ============================================================ */

/* ---------- mondo ---------- */
body.mono-dark-home {
  background:
    radial-gradient(circle at 86% 10%, rgb(var(--mono-gold-rgb) / 0.07), transparent 34%),
    radial-gradient(circle at 8% 32%, rgb(var(--mono-terracotta-rgb) / 0.08), transparent 30%),
    linear-gradient(165deg, #1d1613, #130e08);
  color: var(--mono-cream);
}

/* braci a tutta pagina: contenuto sopra il canvas */
.mono-embers-stage {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}
body.mono-dark-home .site-header,
body.mono-dark-home main,
body.mono-dark-home .site-footer {
  position: relative;
  z-index: 1;
}

/* ⚠️⚠️ 30/7 — LA PAGINA SI TRASCINAVA DI LATO DI 10 px SU OGNI PAGINA.
   Trovato col collaudo finale, misurato a 375 px: `scrollWidth` superava
   di 10 px la larghezza dello schermo. NON era la barra di scorrimento
   (provato con e senza, restavano 10): sporgeva l'intestazione.

   LA CAUSA, ed e' proprio la riga qui sopra.
   In styles.css:120 l'intestazione e' `position: fixed` con
   `left: 18px; right: 18px` (10px sotto gli 820, riga 2120). Su un
   elemento FISSO quei due valori lo DIMENSIONANO, e funziona.
   La regola qui sopra pero' lo riporta a `position: relative`, e su un
   elemento relativo **`right` viene ignorato**: resta solo `left`, che
   non stringe niente e diventa una spinta verso destra su una barra
   larga quanto tutta la pagina. Risultato: sporge esattamente di quanto
   vale `left`, e con lei si trascina tutta la pagina.
   Da qui anche i "3 px preesistenti su .site-header" annotati a luglio:
   stesso elemento, stessa causa, misurata a una larghezza diversa.

   IL RIMEDIO: su un elemento relativo il rientro si fa col MARGINE, che
   stringe davvero. Stessi identici valori di styles.css, cosi' l'aspetto
   voluto (barra staccata dai due bordi, angoli tondi da tutte e due le
   parti) e' finalmente quello che si vede.
   ⚠️ Vanno trattati ANCHE i valori di `.is-scrolled` (experience.css:265
   e 1627): la classe la mette app.js:54 appena si scorre di 24 px, e se
   si lasciassero left/right li' il difetto tornerebbe appena scrolli.
   ⚠️ La transizione e' ricopiata da experience.css:255 cambiando solo
   left/right in margin: se no il passaggio a scrollato diventa a scatto.
   ⚠️ Approvato da lui il 30/7 guardando un confronto affiancato del sito
   vero dentro uno schermo da 375 px. E' l'UNICA cosa che si vede,
   cambiata in tutta la serata. */
body.mono-dark-home .site-header {
  left: auto;
  right: auto;
  margin-left: 18px;
  margin-right: 18px;
  transition:
    background-color var(--mono-duration-fast) ease,
    box-shadow var(--mono-duration-fast) ease,
    padding var(--mono-duration-fast) var(--mono-ease-out),
    top var(--mono-duration-fast) var(--mono-ease-out),
    margin-left var(--mono-duration-fast) var(--mono-ease-out),
    margin-right var(--mono-duration-fast) var(--mono-ease-out);
}
body.mono-dark-home .site-header.is-scrolled {
  margin-left: 28px;
  margin-right: 28px;
}
@media (max-width: 820px) {
  body.mono-dark-home .site-header {
    margin-left: 10px;
    margin-right: 10px;
  }
  body.mono-dark-home .site-header.is-scrolled {
    margin-left: 12px;
    margin-right: 12px;
  }
}

/* ---------- header terracotta (dal prototipo approvato) ---------- */
body.mono-dark-home .site-header {
  background: linear-gradient(180deg, var(--mono-terracotta), #a95232);
  border-bottom: 1px solid rgba(0, 0, 0, 0.18);
  box-shadow: 0 14px 34px -22px rgba(0, 0, 0, 0.65);
}
body.mono-dark-home .site-header .brand span { color: var(--mono-cream); }
/* Menu in ANTRACITE (richiesta 17/7 sera): sul terracotta legano col resto
   del sito e — soprattutto — sul PANNELLO CREMA del menu mobile aperto le
   scritte crema erano invisibili (crema su crema). "Bottega Gastronomica"
   resta crema. Leggermente piu' grandi e piene per compensare sul terracotta. */
body.mono-dark-home .site-header .nav a {
  color: var(--mono-anthracite);
  font-size: 13px;
  font-weight: 900;
}
body.mono-dark-home .site-header .nav a:hover,
body.mono-dark-home .site-header .nav a:focus-visible { color: #000; }
body.mono-dark-home .site-header .nav a::after {
  background: linear-gradient(90deg, var(--mono-anthracite), rgba(38, 35, 33, 0.4));
}
/* logo piu' grande: deve spiccare (36→46px; da scrollato 30→38px) */
body.mono-dark-home .site-header .brand-logo { height: 46px; width: 120px; }
body.mono-dark-home .site-header.is-scrolled .brand-logo { height: 38px; }
/* ⚠️ 30/7 — LA SCRITTA "MENU" ERA QUASI INVISIBILE (segnalato da lui).
   Era `color: var(--mono-cream)`: crema su un tasto che ha il fondo
   `rgba(255,249,238,0.42)`, cioe' crema al 42% sopra il terracotta
   dell'intestazione. Il tasto diventa #d69e84 e il crema sopra fa **1.97**
   di contrasto (2.38 nel punto piu' scuro): un minimo di 4.5 e' richiesto,
   quindi era fuori di piu' del doppio. Praticamente si intuiva, non si
   leggeva.
   Adesso NERO — `--mono-anthracite` #262321, che e' il nero del sito e uno
   dei due colori del logo, non un nero qualsiasi: **6.75** (5.59 nel punto
   piu' scuro). Misurato, non stimato.
   Anche il bordo passa da crema a scuro: con la scritta nera un bordo chiaro
   faceva sembrare il tasto spento.
   ⚠️ Questo tasto ESISTE SOLO SU TELEFONO (`display: none` di regola,
   `inline-flex` sotto gli 820px in styles.css:2137), quindi qui non serve
   una media query: e' gia' solo mobile per costruzione. */
body.mono-dark-home .mobile-menu-toggle { color: var(--mono-anthracite); border-color: rgba(38, 35, 33, 0.35); }
body.mono-dark-home .header-action {
  background: rgba(21, 15, 10, 0.28);
  border-color: rgba(251, 239, 227, 0.55);
  color: var(--mono-cream);
  box-shadow: none;
}

/* ---------- sezioni chiare → notte (tutto il sito) ---------- */
body.mono-dark-home .page-hero,
body.mono-dark-home .page-section,
body.mono-dark-home .definition-section,
body.mono-dark-home .value-section,
body.mono-dark-home .convivium-feature,
body.mono-dark-home .app-gateway,
body.mono-dark-home .local-info-section,
body.mono-dark-home .local-faq-section,
body.mono-dark-home .opening-signup-section {
  background:
    radial-gradient(circle at 84% 10%, rgb(var(--mono-gold-rgb) / 0.10), transparent 30%),
    radial-gradient(circle at 12% 24%, rgb(var(--mono-terracotta-rgb) / 0.10), transparent 32%);
  color: var(--mono-cream);
}

/* ---------- testi → crema (regole larghe; le card vengono immunizzate sotto) ---------- */
body.mono-dark-home main h1,
body.mono-dark-home main h2,
body.mono-dark-home main h3,
body.mono-dark-home main h4 {
  color: var(--mono-cream);
}
body.mono-dark-home main p,
body.mono-dark-home main li,
body.mono-dark-home .definition-grid {
  color: rgba(244, 236, 221, 0.74);
}

/* ---------- accenti: ORO sul buio (la terracotta si spegne) ---------- */
body.mono-dark-home .eyebrow { color: var(--mono-champagne); margin-bottom: 18px; }
body.mono-dark-home .definition-section-title span + span,
body.mono-dark-home .definition-people-emphasis,
body.mono-dark-home main h1 em,
body.mono-dark-home main h2 em,
body.mono-dark-home .cinema-claim .soft {
  color: var(--mono-champagne);
}
body.mono-dark-home .section-heading h2,
body.mono-dark-home .page-section h2,
body.mono-dark-home .page-hero h1 { text-wrap: balance; }

/* ---------- firma / signup: card TERRACOTTA (richiesta 16/7) ---------- */
/* ⚠️ 29/7 — LEGGIBILITA': il capo chiaro del gradiente era `var(--mono-terracotta)`
   (#b85c38) e la frase "Lascia la tua email…" faceva 3.47 di contrasto, contro il
   minimo di 4.5 per il testo piccolo. E' la riga che spiega PERCHE' lasciare
   l'indirizzo, sul riquadro che raccoglie gli indirizzi: chi ha piu' di
   cinquant'anni o legge al sole la saltava.
   Servivano DUE mosse, una non bastava (misurato, non stimato):
     1. testo a crema PIENO invece che velato all'88%  -> da 3.47 a 4.33
     2. capo chiaro del gradiente #b85c38 -> #b45733   -> da 4.33 a 4.60 PASSA
   Il passo 2 e' uno scarto di 4 punti di rosso: la scheda e' la stessa, un
   soffio piu' scura. ⚠️ NON toccata `--mono-terracotta`: e' il rosso di tutto
   il sito e va lasciato dov'e'. Qui e' scurito SOLO questo gradiente. */
body.mono-dark-home .opening-signup {
  background: linear-gradient(150deg, #b45733, #9d4c2c);
  box-shadow: 0 30px 70px -34px rgba(0, 0, 0, 0.85);
}
body.mono-dark-home .opening-signup strong { color: var(--mono-cream); }
body.mono-dark-home .opening-signup small { color: #fff9ee; }
body.mono-dark-home .opening-signup .button.primary {
  background: var(--mono-champagne);
  border-color: var(--mono-champagne);
  color: #262321;
  box-shadow: none;
}
body.mono-dark-home .signup-status { color: rgba(251, 239, 227, 0.92); }

/* ---------- fix generici pagine interne ---------- */
/* seconda riga dei titoli a due righe: era terracotta-dark (si spegne sul buio) → ORO */
body.mono-dark-home main h1 span + span,
body.mono-dark-home main h2 span + span {
  color: var(--mono-champagne);
}
/* enfasi in grassetto fuori dalle card */
body.mono-dark-home main strong { color: var(--mono-cream); }
/* email lavora-con-noi */
body.mono-dark-home .jobs-email { color: var(--mono-champagne); }

/* ============================================================
   IMMUNIZZAZIONI (per ultime: a parità di specificità vincono).
   Le card restano CREMA col testo scuro; QR e input restano chiari.
   ============================================================ */
body.mono-dark-home .page-card,
body.mono-dark-home .local-info-card,
body.mono-dark-home .phone-card,
body.mono-dark-home .pdf-panel {
  color: var(--mono-anthracite);
  box-shadow: 0 30px 70px -34px rgba(0, 0, 0, 0.85);
}
body.mono-dark-home .page-card h2,
body.mono-dark-home .page-card h3,
body.mono-dark-home .page-card h4,
body.mono-dark-home .local-info-card h3,
body.mono-dark-home .phone-card h3,
body.mono-dark-home .pdf-panel h3 {
  color: var(--mono-anthracite);
}
body.mono-dark-home .page-card p,
body.mono-dark-home .page-card li,
body.mono-dark-home .local-info-card p,
body.mono-dark-home .phone-card p,
body.mono-dark-home .pdf-panel p {
  color: rgba(38, 35, 33, 0.74);
}
body.mono-dark-home .page-card .eyebrow,
body.mono-dark-home .local-info-card .eyebrow {
  color: var(--mono-terracotta);
}

/* ============================================================
   FIX LEGGIBILITÀ NOTTE (giro screenshot utente 16/7)
   ============================================================ */

/* Convivium: paragrafo leggibile sul buio; didascalia scura sulla card crema */
body.mono-dark-home .convivium-copy p { color: rgba(244, 236, 221, 0.78); }
body.mono-dark-home .convivium-mark { color: var(--mono-anthracite); }
body.mono-dark-home .convivium-mark p { color: rgba(38, 35, 33, 0.78); }

/* App: i 3 step diventano TERRACOTTA (dal prototipo, rendeva benissimo) */
/* ⚠️ 29/7 — stessa correzione di leggibilita' della card signup qui sopra, e per
   lo stesso motivo: sono le tre schede "Perche' scaricare l'app MONO", cioe'
   l'altro punto in cui il sito chiede qualcosa. Le paroline in alto
   (ORDINA/PAGA/PRENOTA) facevano 3.56 e le righe di spiegazione 3.39.
   Capo chiaro #b85c38 -> #b45733, testi a crema pieno. Il burro di
   `--mono-butter` sugli occhielli era la parte peggiore: sostituito. */
body.mono-dark-home .app-reason-grid article {
  background: linear-gradient(155deg, #b45733, #9d4c2c);
  border-color: rgba(0, 0, 0, 0.16);
  box-shadow: 0 26px 60px -32px rgba(0, 0, 0, 0.85);
}
body.mono-dark-home .app-reason-grid article:nth-child(n) span { color: #fff9ee; }
body.mono-dark-home .app-reason-grid article strong { color: var(--mono-cream); }
body.mono-dark-home .app-reason-grid article small { color: #fff9ee; }

/* bottoni "ghost" sul buio → CHAMPAGNE pieno (leggibili, eleganti) */
body.mono-dark-home .button.ghost,
body.mono-dark-home .convivium-feature .button.ghost {
  background: var(--mono-champagne);
  border-color: var(--mono-champagne);
  color: #262321;
}

/* nota sotto "Scarica l'app MONO" */
body.mono-dark-home .app-download-wrap small { color: rgba(244, 236, 221, 0.74); }

/* QR: card terracotta, QR resta bianco (deve scansionarsi) */
body.mono-dark-home .app-qr {
  background: var(--mono-terracotta);
  border-color: rgba(0, 0, 0, 0.15);
}
body.mono-dark-home .app-qr span { color: var(--mono-cream); }
body.mono-dark-home .app-qr img { background: #fff; border-radius: 12px; padding: 6px; }

/* phone-card: testi scuri sulla card chiara */
body.mono-dark-home .phone-card strong { color: var(--mono-anthracite); }
body.mono-dark-home .phone-card small { color: rgba(38, 35, 33, 0.72); }

/* ============================================================
   GASTRONOMIA — hero ridisegnato (notte):
   banner cashmere col logo centrale + claim sotto, video sotto
   il banner (non più assoluto sopra i testi), testi crema.
   ============================================================ */
body.mono-dark-home.gastronomia-page .page-hero {
  padding-right: clamp(20px, 6vw, 90px);
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}
body.mono-dark-home.gastronomia-page .page-hero .chapter-film {
  position: relative !important;
  right: auto;
  top: auto;
  transform: none;
  order: 10;
  width: min(880px, 96%);
  margin: clamp(28px, 4vw, 48px) auto 0;
}
.gastro-brand-banner {
  background: var(--mono-cashmere);
  border-radius: 30px;
  padding: clamp(26px, 4vw, 46px) clamp(22px, 5vw, 60px);
  max-width: 780px;
  margin: 0 auto;
  box-shadow: 0 46px 110px -46px rgba(0, 0, 0, 0.85);
  position: relative;
  z-index: 2;
}
/* ============================================================
   28/7 sera — VETRINA GASTRONOMIA: "LA LUCE" (sua scelta)

   Fra tre proposte provate dal vivo su /prova-gastronomia/ (Il sigillo ·
   La luce · La targa) ha scelto questa: «la luce vince nettamente su
   tutte le altre». Motivo del lavoro: il logo MONO e' il marchio di
   TUTTO il brand e li' era piccolo rispetto allo spazio — voleva
   «piu' importanza e sacralita'».

   Due mosse sole: il marchio molto piu' grande, e un alone caldo
   dietro che lo fa sembrare illuminato invece che appoggiato.
   ⚠️ `overflow: hidden` sulla carta serve a tenere l'alone dentro gli
   angoli arrotondati, se no sborda dai 30px di raggio.
   ⚠️ I figli vanno alzati a z-index 1: l'alone e' un ::before e
   altrimenti coprirebbe logo e titolo.
   ============================================================ */
body.mono-dark-home.gastronomia-page .gastro-brand-banner {
  overflow: hidden;
}
body.mono-dark-home.gastronomia-page .gastro-brand-banner::before {
  aspect-ratio: 1;
  background: radial-gradient(circle, rgba(203, 167, 90, 0.38), rgba(203, 167, 90, 0) 62%);
  content: "";
  left: 50%;
  pointer-events: none;
  position: absolute;
  top: clamp(-70px, -4vw, -20px);
  transform: translateX(-50%);
  width: min(124%, 920px);
  z-index: 0;
}
body.mono-dark-home.gastronomia-page .gastro-brand-banner > * {
  position: relative;
  z-index: 1;
}
body.mono-dark-home.gastronomia-page .gastro-brand-banner .gastronomia-hero-logo {
  width: min(520px, 74vw);
  margin: clamp(8px, 1.4vw, 20px) auto clamp(20px, 2.4vw, 32px);
}

/* 28/7 sera — la frase sotto la vetrina va in STAMPATELLO (suo).
   Il maiuscolo si fa qui e non riscrivendo il testo in pagina: nel
   sorgente resta la frase normale, che e' quella che leggono i lettori
   di schermo, e se cambia idea si tocca una riga sola.
   ⚠️ Un filo di spaziatura fra le lettere: in maiuscolo il Fraunces
   si stringe e senza diventa un blocco. MISURATO: in maiuscolo la
   frase chiede 632px e ne ha 760, quindi resta su una riga. */
body.mono-dark-home.gastronomia-page .gastronomia-hero-payoff {
  /* ⚠️ Il COLORE non sta qui ma nella regola piu' sopra (quella con
     `.page-hero`), che pesa di piu': l'oro messo qui non vinceva.
     Oro PRESO DAL FILE DEL LOGO, non a occhio: dentro
     mono-logo-primary.svg ci sono due soli colori, #262321 e #CBA75A,
     e il secondo e' esattamente --mono-champagne. Quindi non
     "somiglia" all'oro del marchio: e' lo stesso. */
  letter-spacing: 0.022em;
  text-transform: uppercase;
}

/* 28/7 sera — la descrizione: due righe, UNA RIGA CIASCUNA (suo).
   ⚠️ Il `<br>` da solo non bastava: la regola `max-width: 64ch`
   (experience.css) chiudeva il testo in 693px e la prima riga, che ne
   chiede 828, andava a capo lo stesso. Qui lo spazio utile e' 1252px,
   quindi basta alzare il tetto. Sotto i 900px torna ad andare a capo
   da sola, ed e' giusto cosi'. */
body.mono-dark-home.gastronomia-page .gastronomia-hero-description {
  max-width: min(900px, 100%);
}
body.mono-dark-home.gastronomia-page .gastro-brand-banner .gastronomia-hero-title {
  color: var(--mono-anthracite);
  font-size: clamp(22px, 2.6vw, 36px);
  line-height: 1.22;
  letter-spacing: -0.01em;
  max-width: none;
  margin: 0;
  text-wrap: balance;
}
body.mono-dark-home.gastronomia-page .gastro-brand-banner .gastronomia-hero-title > span {
  display: inline;
  margin: 0;
  text-wrap: initial;
}
body.mono-dark-home.gastronomia-page .page-hero .gastronomia-hero-payoff {
  /* 28/7 sera — era crema, ora l'ORO DEL MARCHIO. Il colore si cambia
     QUI e non in una regola nuova piu' sotto: questa ha un `.page-hero`
     in piu' e vincerebbe comunque. Aggiungere una regola invece di
     correggere questa avrebbe lasciato due punti che dicono il
     contrario, e il colore sarebbe rimasto crema (successo davvero,
     visto pubblicando). */
  color: var(--mono-champagne);
  margin-top: 28px;
}
body.mono-dark-home.gastronomia-page .page-hero .gastronomia-hero-description {
  color: rgba(244, 236, 221, 0.74);
  margin-inline: auto;
}

/* ============================================================
   FIX LEGGIBILITÀ NOTTE — audit strumentale 16/7 (2° giro)
   Due problemi OPPOSTI, entrambi verificati misurando il contrasto
   reale pagina per pagina:
   (A) testo SCURO rimasto sul buio: le regole di Codex con due classi
       (.mono-world ..., .about-page ...) battono per specificità le
       regole larghe "main p / main h*" scritte più sopra in questo file;
   (B) testo CREMA finito su superfici CHIARE opache ("isole di luce"):
       lì le regole larghe di questo file vincono e non dovrebbero.
   ============================================================ */

/* --- (A) paragrafi hero/sezione di TUTTE le interne ---------------
   .mono-world .page-hero p (0-2-1) vince su main p (0-1-3) e imponeva
   --mono-ink-soft = antracite sul buio (contrasto 1.07 = invisibile).
   La variabile è usata solo qui e in .mono-next-chapter__previous,
   entrambi su fondo scuro: ridefinirla sistema tutto in un punto. */
body.mono-dark-home {
  --mono-ink-soft: rgba(244, 236, 221, 0.74);
}

/* --- (A) seconda riga dei titoli hero: terracotta-dark si spegne sul
   buio (contrasto 2.69). Le regole per-pagina hanno 2 classi, quindi
   la regola larga più sopra non bastava. */
body.mono-dark-home .about-hero-title span + span,
body.mono-dark-home .about-impact-title span + span,
body.mono-dark-home .app-hero-title span + span,
body.mono-dark-home .contacts-hero-title span + span,
body.mono-dark-home .jobs-hero-title span + span {
  color: var(--mono-champagne);
}

/* --- (A) la-bottega, blocco "impatto": restava antracite sul buio --- */
body.mono-dark-home.about-page .about-impact-principle p,
body.mono-dark-home.about-page .about-impact-call {
  color: var(--mono-cream);
}
body.mono-dark-home.about-page .about-impact-principle p:last-child,
body.mono-dark-home.about-page .about-inline-emphasis,
body.mono-dark-home.about-page .about-highlight {
  color: var(--mono-champagne);
}

/* --- (B) isola di luce: banner cashmere della gastronomia.
   Qui l'oro sparisce (1.94): sulla card chiara serve la terracotta. */
body.mono-dark-home.gastronomia-page .gastro-brand-banner .gastronomia-hero-title span + span {
  color: var(--mono-terracotta-dark);
}

/* --- (B) isola di luce: pillola chiara sotto il banco (home) -------- */
body.mono-dark-home .product-app-note {
  color: rgba(38, 35, 33, 0.8);
}

/* --- (B) card firma/signup: è TERRACOTTA, e l'occhiello "STIAMO PER
   APRIRE" ci restava terracotta sopra (invisibile, 1.15). */
body.mono-dark-home .opening-signup span {
  color: var(--mono-butter);
}

/* ============================================================
   CONVIVIUM — "lastre crema sul buio" (scelta utente 16/7)
   Questa pagina ha un design tutto suo (style inline, non usa
   styles.css) e alterna di proposito fasce SCURE (.band, .closing)
   e fasce CHIARE (butter/cashmere). Il fondo pagina è passato al
   buio, ma le fasce chiare sono rimaste: lì le regole larghe di
   questo file scrivevano crema su crema (contrasto 1.0 = testo
   sparito). Qui le fasce chiare restano lastre di luce e si
   rimettono i colori ORIGINALI della pagina.
   NB: usare rgba/var espliciti, non --mono-ink-soft (qui sopra
   è stata ridefinita crema).
   ============================================================ */
body.mono-dark-home.convivium-page section[style*="butter"] h1,
body.mono-dark-home.convivium-page section[style*="butter"] h2,
body.mono-dark-home.convivium-page section[style*="butter"] h3,
body.mono-dark-home.convivium-page section[style*="butter"] h4,
body.mono-dark-home.convivium-page section[style*="butter"] .lede,
body.mono-dark-home.convivium-page .breather h1,
body.mono-dark-home.convivium-page .breather h2,
body.mono-dark-home.convivium-page .breather .pull,
body.mono-dark-home.convivium-page .photo-section h1,
body.mono-dark-home.convivium-page .photo-section h2,
body.mono-dark-home.convivium-page .photo-section h3,
body.mono-dark-home.convivium-page .photo-section .lede,
body.mono-dark-home.convivium-page .cta-block h2,
body.mono-dark-home.convivium-page .cta-block h3,
body.mono-dark-home.convivium-page .cta-block h4 {
  color: var(--mono-anthracite);
}
body.mono-dark-home.convivium-page section[style*="butter"] p,
body.mono-dark-home.convivium-page section[style*="butter"] li,
body.mono-dark-home.convivium-page .breather p,
body.mono-dark-home.convivium-page .photo-section p,
body.mono-dark-home.convivium-page .photo-section li,
body.mono-dark-home.convivium-page .cta-block p,
body.mono-dark-home.convivium-page .cta-block li {
  color: var(--mono-text-secondary);
}
/* occhielli: l'oro sparisce sul crema → torna la terracotta originale */
body.mono-dark-home.convivium-page section[style*="butter"] .eyebrow,
body.mono-dark-home.convivium-page .breather .eyebrow,
body.mono-dark-home.convivium-page .photo-section .eyebrow,
body.mono-dark-home.convivium-page .cta-block .eyebrow {
  color: var(--mono-terracotta);
}
/* le 7 tessere dei principi: ognuna ha il SUO accento (--c-accent) */
body.mono-dark-home.convivium-page .principio h4 {
  color: var(--c-accent, var(--mono-terracotta));
}
body.mono-dark-home.convivium-page .principio p {
  color: var(--mono-text-secondary);
}

/* --- fasce SCURE della stessa pagina: il testo "forte" (.pull, .v)
   era ink e restava invisibile sul buio (1.15/1.1). --- */
body.mono-dark-home.convivium-page .pull,
body.mono-dark-home.convivium-page .v {
  color: var(--mono-cream);
}
body.mono-dark-home.convivium-page .closing .pull {
  color: var(--mono-coral);
}
/* ...ma nelle fasce CHIARE il .pull resta scuro (era crema su crema, 1.08) */
body.mono-dark-home.convivium-page section[style*="butter"] .pull,
body.mono-dark-home.convivium-page .photo-section .pull {
  color: var(--mono-anthracite);
}

/* ============================================================
   CARD CREMA — renderle crema DAVVERO (audit 16/7)
   Le card erano pensate "crema col testo scuro", ma il loro crema
   è semitrasparente (0.72–0.86): sul fondo chiaro funzionava, sul
   buio diventava un beige fangoso rgb(199,191,178). Effetto: card
   spente e occhielli terracotta a contrasto 2.5.
   Rendendo il crema OPACO la card torna rgb(241,233,218) e i conti
   tornano: occhielli/link 5.27, testo 12.93.
   ============================================================ */
body.mono-dark-home .page-card,
body.mono-dark-home .pdf-panel {
  background:
    radial-gradient(circle at 82% 12%, rgba(203, 167, 90, 0.12), transparent 32%),
    linear-gradient(145deg, #fff9ee, #f4ecdd);
}
body.mono-dark-home .local-info-card {
  background:
    radial-gradient(circle at 82% 8%, rgba(203, 167, 90, 0.18), transparent 30%),
    #fff9ee;
}
/* sulla card crema la terracotta chiara resta debole → terracotta scura */
body.mono-dark-home .page-card .eyebrow,
body.mono-dark-home .local-info-card .eyebrow,
body.mono-dark-home .page-card > span,
body.mono-dark-home .local-info-card > span {
  color: var(--mono-terracotta-dark);
}

/* ============================================================
   HOME — accenti oro su fondi COLORATI (non sul buio)
   L'oro campagna serve sul NERO; su oliva e terracotta si spegne
   (2.5). Lì l'accento giusto è il burro. (Vedi la nota in fondo:
   oro = buio, burro/crema = superfici colorate.)
   ============================================================ */
body.mono-dark-home .product-system .eyebrow,
body.mono-dark-home .contact-strip .eyebrow,
body.mono-dark-home .opening-signup .eyebrow,
body.mono-dark-home .opening-signup-section .eyebrow {
  color: var(--mono-butter);
}
body.mono-dark-home .product-system .product-system-title span,
body.mono-dark-home .product-system .product-system-title em {
  color: var(--mono-butter);
}

/* ============================================================
   SISTEMA COLORE DEI TITOLI (scelta utente 17/7)
   I titoli bianchi "rendevano meno": ora il colore porta anche
   un'informazione. Due colori, invertiti secondo il contesto:
     PRODOTTO (gastronomia, pasticceria, aperitivo, app, home...)
       titolo ORO, accento BRACE
     PERSONE (Chi siamo, Lavora con noi, Convivium, Eventi)
       titolo BRACE, accento ORO
   BRACE #D87356 = via di mezzo terracotta↔corallo scelta dall'utente.
   ⚠️ Il brace vive SOLO sul buio (5.59). Su oliva crolla a 1.81 e su
   terracotta a 1.61: la' l'accento resta crema. Non spargerlo.
   ============================================================ */
body.mono-dark-home {
  /* Era #D87356 (via di mezzo terracotta↔corallo). Cambiato il 17/7 su
     richiesta: STESSO terracotta della tendina/header, "così è tutto
     connesso". Sul buio fa 3.97: buono per i TITOLI (soglia 3), non per
     testo piccolo — se serve un accento su testo minuto, usare l'oro. */
  --mono-brace: var(--mono-terracotta);
  --mono-oro-luminoso: #ebce7c; /* per l'OLIVA: l'oro normale li' sparisce (2.56) */
  /* 28/7 sera — stessa idea dell'oro luminoso, ma per il ROSSO, e SOLO
     per la parola "amore" sull'isola verde. La terracotta del sito li'
     fa 1,07: lui l'ha vista pubblicata e ha detto "avevi ragione, si
     vede poco". Questo e' il rosso piu' acceso che resta rosso: sotto
     l'ha vinta la salita di luminosita', sopra vira al salmone sbiadito.
     ⚠️ NON usarlo altrove: sul fondo scuro del resto del sito e' troppo
     chiaro e rompe il sistema, dove il rosso e' uno solo (--accento). */
  --mono-rosso-brillante: #ff8360;
  --mono-oro-pallido: #f2dfa0;  /* per la TERRACOTTA */
  --titolo: var(--mono-champagne);
  --accento: var(--mono-brace);
}
body.mono-dark-home.about-page,
body.mono-dark-home.jobs-page,
body.mono-dark-home.convivium-page,
body.mono-dark-home.events-page {
  --titolo: var(--mono-brace);
  --accento: var(--mono-champagne);
}

/* i titoli veri (h1/h2). h3/h4 restano crema: sono sottotitoli, e quasi
   sempre stanno dentro le card crema (gia' immunizzate piu' sopra). */
body.mono-dark-home main h1,
body.mono-dark-home main h2 {
  color: var(--titolo);
}
/* la parola-accento dentro il titolo.
   NON in lista (restano ORO, dalla regola piu' sopra):
   - .cinema-claim .soft: sta SOPRA IL VIDEO, e li' il terracotta fa 2.19;
   - .definition-people-emphasis: testo da 16px, il terracotta fa 3.77 (<4.5). */
body.mono-dark-home main h1 em,
body.mono-dark-home main h2 em,
body.mono-dark-home .definition-section-title span + span,
body.mono-dark-home .about-hero-title span + span,
body.mono-dark-home .about-impact-title span + span,
body.mono-dark-home .app-hero-title span + span,
body.mono-dark-home .contacts-hero-title span + span,
body.mono-dark-home .jobs-hero-title span + span {
  color: var(--accento);
}

/* --- ISOLE COLORATE: qui il brace non si vede, si usano gli ori dedicati --- */
/* OLIVA (banner verde): titolo oro luminoso, accento crema */
body.mono-dark-home .product-system .product-system-title {
  color: var(--mono-oro-luminoso);
}
/* 28/7 — il titolo era CREMA, non oro, e non per scelta: tutto il testo
   sta dentro gli <span>, e questa regola li dipingeva di crema, quindi
   l'oro dichiarato sull'h2 qui sopra non si vedeva MAI. Il proprietario
   l'ha notato: "lo vorrei dorato come gli altri titoli".
   ⚠️ MA non e' il champagne degli altri titoli: MISURATO sul verde vero
   (sage #4e6b47 → olive #6e6a3c) il champagne #cba75a fa 2,43-2,62,
   sotto il minimo di 3 previsto anche per i titoli grandi. L'oro
   luminoso fa 3,60-3,88: stesso oro di famiglia, ma leggibile qui.
   La parola-accento "amore" — vedi il blocco dedicato piu' sotto. */
body.mono-dark-home .product-system .product-system-title span {
  color: var(--mono-oro-luminoso);
}
/* 28/7 sera — "amore" e' ROSSO, e in DUE tempi, tutti e due voluti da lui.
   1) Prima l'ha chiesto nella terracotta del sito, sapendo cosa avevo
      misurato: "voglio sbatterci la testa, voglio vederlo io rosso su
      verde se rimane o meno". Pubblicato.
   2) L'ha guardato online e ha deciso: "avevi ragione, si vede poco.
      Aumenta, fai solo per quell'eccezione li' un rosso piu' brillante
      che stia bene col verde". Da qui --mono-rosso-brillante.
   ⚠️ Sul verde nemmeno questo arriva alla soglia 3 (fa 2,01 nel punto
   peggiore, contro 1,07 della terracotta): per superarla un rosso deve
   sbiadire fino al 29% di saturazione, e li' non e' piu' rosso. E' una
   scelta di gusto FATTA A OCCHIO SU UN PROVINO, non un numero raggiunto.
   Regge perche' e' una parola da 84px (42 sul telefono).
   ➡️ Se un giorno chiede piu' leggibilita' SENZA perdere il rosso,
   l'unica strada vera e' ridargli il BORDO che il verde gli toglie:
   -webkit-text-stroke: 2.5px #2b3a26 (provato, funziona, fa 4,03 fra
   lettera e contorno). Provino in scratchpad/provino.js.
   ➡️ Per tornare a com'era: qui var(--mono-cream) + rimettere il
   ::after della pennellata, conservato in fondo al file. */
body.mono-dark-home .product-system .product-system-title em {
  color: var(--mono-rosso-brillante);
}
/* TERRACOTTA (firma/signup): titolo oro pallido */
body.mono-dark-home .opening-signup h2,
body.mono-dark-home .opening-signup h3,
body.mono-dark-home .contact-strip h2 {
  color: var(--mono-oro-pallido);
}

/* ============================================================
   NAV piu' leggibile (richiesta 17/7 sera: "un pochino dispersivo")
   Voci del menu piu' grandi: sul terracotta desktop E nel pannello
   crema del menu mobile. Erano 13px -> 15px.
   ============================================================ */
body.mono-dark-home .site-header .nav a {
  font-size: 15px;
  font-weight: 850;
  letter-spacing: 0.005em;
}

/* ============================================================
   MOBILE — clip/video hero SOTTO i contenuti, mai a cavallo (17/7 sera)
   Su telefono le illustrazioni decorative (.mono-page-scene) e i video
   hero (.chapter-film) erano in posizione ASSOLUTA: finivano sopra i
   bottoni (eventi, app, dove-siamo, contatti) o tagliati a destra
   (gastronomia: right negativo). Qui su <=820px li mettiamo in FLUSSO,
   centrati, come ultimo elemento dell'hero: i bottoni restano in vista,
   la clip compare sotto. !important perche' le regole base hanno
   position:absolute !important e un right negativo che vincerebbero.
   ============================================================ */
@media (max-width: 820px) {
  body.mono-dark-home .page-hero {
    display: flex !important;
    flex-direction: column !important;
    padding-bottom: clamp(30px, 9vw, 64px) !important;
  }
  body.mono-dark-home.gastronomia-page .page-hero {
    padding-bottom: clamp(30px, 9vw, 64px) !important;
  }
  body.mono-dark-home .mono-page-scene,
  body.mono-dark-home .chapter-film {
    position: relative !important;
    order: 99 !important;
    inset: auto !important;
    transform: none !important;
    align-self: center !important;
    margin: clamp(20px, 6vw, 40px) auto 0 !important;
    opacity: 1 !important;
  }
  body.mono-dark-home .mono-page-scene { width: min(74vw, 300px) !important; }
  body.mono-dark-home .chapter-film { width: min(92vw, 520px) !important; }
  /* la scena su mobile e' sempre visibile (non dipende dallo scroll-awake) */
  body.mono-dark-home .page-hero.is-scene-awake .mono-page-scene,
  body.mono-dark-home .mono-page-scene { transform: none !important; }
}

/* ============================================================
   CONVIVIUM — via il "grembiule verde" (richiesta 17/7 sera)
   La scena decorativa iniettata nell'hero del progetto sociale (filo +
   .scene-team-apron, grembiule oliva) va tolta: pagina pulita come il
   resto. Assoluta -> nasconderla non sposta nulla.
   ============================================================ */
body.mono-dark-home.convivium-page .mono-page-scene--convivium { display: none !important; }

/* ============================================================
   VIDEO PRODOTTI — badge MONO a coprire il watermark "Gemini" (18/7)
   Iniettato da mono-enhance.js. Su DESKTOP nascosto (il ritaglio ovale
   gia' copre l'angolo, e il PC "e' perfetto"): si mostra SOLO su mobile,
   in basso a destra sopra lo stemma.
   ============================================================ */
body.mono-dark-home .chapter-film--products .chapter-film__badge { display: none; }
@media (max-width: 820px) {
  body.mono-dark-home .chapter-film--products .chapter-film__badge {
    display: flex;
    --video-badge-size: clamp(46px, 15vw, 74px);
    --video-badge-right: 7%;
    --video-badge-bottom: 9%;
    --video-badge-bg: var(--mono-cashmere);
    --video-badge-logo-scale: 0.74;
  }
}

/* ============================================================
   INVITO ALL'APP (18/7) — il sito racconta, l'app converte.
   10 pagine su 12 non nominavano nemmeno l'app: proprio quelle
   dove la persona sta leggendo con interesse. Qui l'invito chiude
   la pagina con una promessa SPECIFICA per quella pagina (non un
   generico "scarica l'app", che nessuno legge).
   Prefisso body.mono-dark-home: serve a battere le regole larghe
   "main p / main h*" scritte piu' sopra in questo file.
   ============================================================ */
body.mono-dark-home .mono-app-invito {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(16px, 3vw, 34px);
  flex-wrap: wrap;
  margin: clamp(26px, 5vw, 56px) auto clamp(10px, 2vw, 22px);
  max-width: 1020px;
  padding: clamp(22px, 3.4vw, 34px) clamp(22px, 4vw, 40px);
  border-radius: 28px;
  /* Terracotta appena piu' scuro del solito (#B25836 invece di #B85C38):
     impercettibile a occhio, ma porta la riga piccola da 4.33 a 4.61 di
     contrasto — sopra la soglia di legge anche nel punto piu' chiaro. */
  background: linear-gradient(150deg, #b25836, #9d4c2c);
  border: 1px solid rgba(0, 0, 0, 0.16);
  box-shadow: 0 30px 70px -34px rgba(0, 0, 0, 0.85);
  position: relative;
  z-index: 2;
}
body.mono-dark-home .mono-app-invito__testo {
  flex: 1 1 320px;
  min-width: 0;
}
body.mono-dark-home .mono-app-invito__occhiello {
  display: block;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  /* era burro: a 11px faceva 3.80, sotto la soglia. Bianco caldo -> 4.61 */
  color: #fff9ee;
  margin-bottom: 9px;
}
body.mono-dark-home .mono-app-invito__frase {
  margin: 0;
  font-family: "Fraunces", Georgia, "Times New Roman", serif;
  font-size: clamp(19px, 2.3vw, 27px);
  font-weight: 700;
  line-height: 1.2;
  color: var(--mono-cream);
  text-wrap: balance;
}
body.mono-dark-home .mono-app-invito__nota {
  margin: 9px 0 0;
  font-size: 13.5px;
  line-height: 1.5;
  /* bianco caldo PIENO: a 13.5px serve 4.5 di contrasto e il crema
     semitrasparente si fermava a 3.64 (misurato 18/7) */
  color: #fff9ee;
}
body.mono-dark-home .mono-app-invito .button {
  flex: 0 0 auto;
  background: var(--mono-champagne);
  border-color: var(--mono-champagne);
  color: #262321;
  box-shadow: none;
}
@media (max-width: 640px) {
  body.mono-dark-home .mono-app-invito { flex-direction: column; align-items: stretch; text-align: left; }
  body.mono-dark-home .mono-app-invito .button { width: 100%; justify-content: center; }
}

/* ============================================================
   CONTRASTO A NORMA su header e footer (18/7)
   I link erano semitrasparenti: 3.3 in header, 3.7 nel footer —
   sotto la soglia di legge (4.5 per testo normale).
   Footer: crema PIENO -> 5.32. Risolto.
   Menu header: sul terracotta (colore di mezza luminosita') nemmeno
   il nero pieno arriva a 4.5 (max 4.28). Portiamo il menu al massimo
   possibile SENZA cambiare il terracotta del marchio: 3.19 -> 4.28.
   ============================================================ */
body.mono-dark-home .site-footer a {
  color: #fff9ee;
}
body.mono-dark-home .site-header .nav a {
  color: #000;
}
body.mono-dark-home .site-header .nav a:hover,
body.mono-dark-home .site-header .nav a:focus-visible {
  color: #000;
  text-decoration: underline;
  text-underline-offset: 0.28em;
}

/* ============================================================
   CONTO ALLA ROVESCIA apertura (18/7)
   Accanto alla raccolta email: "mancano N giorni" da' un motivo per
   lasciare l'indirizzo adesso invece di rimandare a mai.
   ============================================================ */
body.mono-dark-home .mono-conto {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin: 14px 0 4px;
  flex-wrap: wrap;
}
/* specificita' alzata: `.opening-signup span` (piu' sopra) vincerebbe
   e tingerebbe il numero di burro invece che d'oro */
body.mono-dark-home .opening-signup .mono-conto .mono-conto__numero,
body.mono-dark-home .mono-conto__numero {
  font-family: "Fraunces", Georgia, "Times New Roman", serif;
  font-size: clamp(38px, 6vw, 58px);
  font-weight: 700;
  line-height: 1;
  color: #f2dfa0;
  letter-spacing: -0.02em;
  margin: 0;
}
body.mono-dark-home .opening-signup .mono-conto .mono-conto__testo,
body.mono-dark-home .mono-conto__testo {
  color: #fff9ee;
  margin: 0;
}
body.mono-dark-home .mono-conto__testo {
  font-size: 14px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #fff9ee;
}
body.mono-dark-home .mono-conto.is-aperto .mono-conto__testo {
  font-size: clamp(20px, 3vw, 28px);
  text-transform: none;
  letter-spacing: 0;
  font-family: "Fraunces", Georgia, serif;
  font-weight: 700;
}

/* ============================================================
   La scheda DA COMPILARE non si muove mai (18/7)
   Il tilt rendeva difficile centrare i campi: doppia garanzia,
   esclusa dal JS (mono-enhance.js) e bloccata anche qui.
   ============================================================ */
body.mono-dark-home .mono-form-card,
body.mono-dark-home .mono-form-card:hover,
body.mono-dark-home .mono-form-card.is-tilting {
  transform: none !important;
  will-change: auto !important;
}

/* ============================================================
   MENU HEADER — contrasto risolto schiarendo, non scurendo (18/7)

   Misurato sul fondo composito reale del gradiente, rgb(177,87,53):
     nero (com'era)   4.28  ✗   crema #fff9ee   4.68  ✓
     cashmere #f4ecdd 4.18  ✗   bianco pieno    4.90  ✓
   La nota precedente ("nemmeno il nero arriva a 4.5") era esatta ma
   guardava dalla parte sbagliata: sul terracotta di mezza luminosita'
   si passa la soglia ANDANDO VERSO IL CHIARO.

   ⚠️ Perche' era nero: sotto 820px .nav diventa un PANNELLO CREMA
   (styles.css:2111) e le scritte crema sparivano. Per questo la regola
   vale SOLO da 821px in su: nel pannello mobile il menu resta
   antracite e leggibile. Non togliere il media query.
   ============================================================ */
/* ⚠️ L'header resta il TERRACOTTA ACCESO di sempre (scelta utente 18/7:
   provata la barra piu' scura per reggere l'oro, poi rimessa com'era).
   Percio' quassu' il menu NON puo' essere oro: sul terracotta l'oro del
   marchio da' 2.15, il valore peggiore del sito. L'oro sta in tendina,
   dove il fondo e' scuro. */
@media (min-width: 821px) {
  body.mono-dark-home .site-header .nav a {
    color: #fff9ee;
  }
  body.mono-dark-home .site-header .nav a:hover,
  body.mono-dark-home .site-header .nav a:focus-visible {
    color: #fff;
    text-decoration: underline;
    text-underline-offset: 0.28em;
  }
  body.mono-dark-home .site-header .nav a::after {
    background: linear-gradient(90deg, #fff9ee, rgba(255, 249, 238, 0.4));
  }
}

/* ============================================================
   BADGE SUI VIDEO — copertura della filigrana, definitiva (18/7)

   PROBLEMA: il badge era dimensionato `clamp(50px, 7vw, 76px)`,
   cioe' legato alla FINESTRA. Ma il video si ferma a 1120px, il badge
   a 76px: piu' lo schermo e' grande, piu' il badge rimpicciolisce in
   proporzione al fotogramma.
     finestra 1280 -> film  870 -> badge 112px sul fotogramma
     finestra 1920 -> film 1120 -> badge  87px sul fotogramma
   La filigrana Gemini e' 46px e sta ferma a (1161,600) su 1280x720:
   a 1920 il margine si assottigliava fino a sbucare.

   SOLUZIONE: badge legato al VIDEO (unita' cqw) invece che alla
   finestra, e centrato sulla filigrana invece che 9px piu' in basso.
     da destra  1280-1161 = 119 -> 9.30%
     da sotto    720- 600 = 120 -> 16.65%
   Cosi' copre una porzione COSTANTE del fotogramma (8,9%) a ogni
   larghezza: 1280, 1920, 4K. Una volta per tutte.

   Su TELEFONO non cambia niente: la clamp minima resta 50px, che e'
   esattamente quel che usciva prima (7vw a 375px = 26px -> 50px).

   Fuori dal @supports non succede nulla e resta il comportamento
   di prima: nessun rischio sui browser vecchi.
   ============================================================ */
@supports (width: 1cqw) {
  .cinematic-film,
  .mono-cinematic-still {
    container-type: inline-size;
  }
  .cinematic-film .cinematic-film__badge,
  .mono-cinematic-still .mono-cinematic-still__badge {
    --mono-badge: clamp(50px, 8.9cqw, 132px);
    width: var(--mono-badge);
    height: var(--mono-badge);
    right: calc(9.3% - var(--mono-badge) / 2);
    bottom: calc(16.65% - var(--mono-badge) / 2);
  }
}

/* ============================================================
   BADGE DELLA HOME su PC — coprire la filigrana Gemini (25/7)

   Il video home e' `object-fit: cover` a tutto schermo (styles.css:2479),
   NON contenuto come gli altri film: quindi il fotogramma viene RITAGLIATO
   e la filigrana ✦ (nel sorgente a ~1180,592 su 1280x720) "galleggia"
   rispetto al badge. Il badge era piazzato in % dello SCHERMO (9% da destra,
   15,3% dal fondo, da `badgeDefaults` in cinematic-assets.js) invece che del
   fotogramma → su PC largo non la copriva piu'.

   Misurato dai DUE poster (fuoco E agnolotti: la filigrana ✦ e' nello stesso
   punto del fotogramma, ~1215,595 su 1280x720 = ~4% da destra, 17,4% dal
   fondo). Su schermi >= 16:9 il video riempie ESATTA la larghezza, quindi la
   filigrana resta STABILE a ~4% dal bordo destro; in verticale deriva col
   rapporto (dal ~11% su schermo largo al ~17% a 16:9 pieno).

   Percio': badge a 4% da destra, 13% dal fondo, e piu' GRANDE (100px) apposta
   per coprire tutta la deriva verticale (~11-17%) con un solo badge fisso.
   ⚠️ Il primo tentativo (7,8% / 15,5% / 88px) era troppo in alto e a sinistra:
   confermato dallo screenshot utente, la stellina sbucava in basso a destra.

   Solo da 821px in su: su TELEFONO il video ritaglia i lati e la filigrana
   finisce FUORI dal bordo destro (verificato: sul mobile non e' visibile),
   quindi li' il badge resta com'era, puramente decorativo.

   Agisce sulle PROPRIETA' del badge (non sulle --video-badge-*, che il JS
   mette inline e vincerebbero): 3 classi = specificita' sufficiente.
   ============================================================ */
@media (min-width: 821px) {
  body.mono-dark-home .cinema-hero .cinematic-film__badge {
    --mono-home-badge: 100px;
    width: var(--mono-home-badge);
    height: var(--mono-home-badge);
    /* max(16px, …): su finestre strette 4% diventa piccolo e il badge grande
       sporgerebbe dal bordo → il max lo tiene sempre almeno 16px dentro. */
    right: max(16px, calc(4% - var(--mono-home-badge) / 2));
    bottom: max(16px, calc(13% - var(--mono-home-badge) / 2));
  }
}

/* ============================================================
   FILM "La tavola delle occasioni" su Eventi (18/7)

   Stessa fascia chiara di .about-cinematic (experience.css:1312),
   che di proposito spezza il buio della pagina. Unica differenza:
   qui il riquadro sta CENTRATO. Su Chi siamo e' spostato a destra
   (.cinematic-film--about, margin-left ~90px) perche' li' dialoga
   con il testo di fianco; su Eventi non c'e' niente a fianco.

   Scritto qui e non in experience.css per non toccare i file di
   Codex: se un giorno si torna indietro, basta togliere questo.
   ============================================================ */
.events-cinematic {
  background:
    radial-gradient(circle at 86% 18%, rgba(203, 167, 90, 0.2), transparent 28rem),
    linear-gradient(135deg, rgb(var(--mono-butter-rgb) / 0.72), rgb(var(--mono-cashmere-rgb) / 0.94));
  padding: clamp(42px, 6vw, 88px) clamp(22px, 6vw, 92px);
}
.cinematic-film--events {
  margin-inline: auto;
}
@media (max-width: 820px) {
  .events-cinematic {
    padding: 34px clamp(18px, 5vw, 36px) 46px;
  }
}

/* ============================================================
   TENDINA MOBILE — NERA con le scritte ORO (18/7, richiesta
   dell'utente: e' qui che vive il filo dorato)

   Fondo = antracite #262321, il nero CALDO del marchio, non un
   nero puro: l'oro #CBA75A sopra da' 6.85. E' la regola d'oro
   del sistema colori applicata alla lettera — l'oro vuole il
   BUIO. Sull'header terracotta darebbe 2.15, per questo lassu'
   il menu resta crema.

   Il pannello era crema (styles.css:2111) con scritte nere.
   ============================================================ */
@media (max-width: 820px) {
  body.mono-dark-home .site-header .nav {
    background: linear-gradient(180deg, #262321, #1B1917);
    border: 1px solid rgba(203, 167, 90, 0.28);
    box-shadow: 0 24px 60px rgba(12, 10, 9, 0.5);
  }
  body.mono-dark-home .site-header .nav a {
    color: var(--mono-gold, #CBA75A);
    font-weight: 800;
  }
  body.mono-dark-home .site-header .nav a:hover,
  body.mono-dark-home .site-header .nav a:focus-visible {
    color: #EBCE7C;
    text-decoration: underline;
    text-underline-offset: 0.28em;
  }
  body.mono-dark-home .site-header .nav a::after {
    background: linear-gradient(90deg, #CBA75A, rgba(203, 167, 90, 0.4));
  }
}

/* ============================================================
   CONTROLLI DEL FILM HOME → in alto a destra, in colonna (24/7)
   Prima stavano in BASSO a destra e su iPhone finivano SOPRA la
   barra "Sii tra i primi a entrare in bottega" (segnalato da una
   cliente): l'audio e "Rivedi" coprivano il form iscrizione.
   Ora: angolo in alto a destra, uno sotto l'altro ("fila indiana").
   - top a ~86px: l'header e' `position:fixed` e galleggia in alto;
     cosi' i controlli gli restano SOTTO e non toccano il menu su PC.
   - `body.mono-dark-home` + questo file caricato per ultimo = vince
     sulle regole di mono-engineering.css (che e' di Codex, non toccato).
   Il tasto "⏸ Pausa" e' stato rimosso dall'HTML: era di troppo e il
   JS lo gestisce con `?.`, quindi niente si rompe senza di lui.
   ============================================================ */
body.mono-dark-home .cinema-cinematic-controls {
  top: clamp(80px, 10vh, 104px);
  bottom: auto;
  right: clamp(14px, 2.4vw, 30px);
  flex-direction: column;
  align-items: flex-end;
  gap: 8px;
}

/* ============================================================
   HERO HOME — IL MODULO EMAIL ERA TAGLIATO VIA (28/7)
   Difetto PREESISTENTE trovato misurando, non segnalato da nessuno.

   Il capitolo finale della hero (`.cinema-group.sg-3`) e' un riquadro
   ad altezza FISSA e ritagliata: `top` + `bottom` + `overflow:hidden`
   (styles.css:2544). Dentro ci stanno titolo, occhiello, testo, due
   bottoni, la riga apertura/indirizzo E il modulo "Sii tra i primi a
   entrare in bottega".
   Il titolo pero' e' passato da `clamp(24px,3.2vw,46px)` (styles.css)
   a `--mono-type-hero: clamp(58px,7vw,112px)` (mono-engineering.css:13,
   file di Codex): PIU' CHE RADDOPPIATO, e legato SOLO alla larghezza.
   Su uno schermo largo ma BASSO (un portatile qualunque) il titolo
   esplode a 96-107px e spinge il modulo fuori dal ritaglio.

   MISURATO sul sito vero, con la pagina reale (non a occhio):
     1366x658 -> campo email e bottone "Avvisami all'apertura"
                 COMPLETAMENTE invisibili, del riquadro si vedevano 5px
     1536x754 -> 216px fuori     1440x790 -> 156px fuori
     1280x690 ->  89px fuori     1920x970 ->  53px fuori
   Cioe': su quasi tutti i portatili la raccolta email in cima alla
   home NON ESISTEVA. E' il punto di conversione principale del sito.

   RIMEDIO (due leve, la meno distruttiva che passa la prova):
   1. il titolo ora guarda anche l'ALTEZZA: `min(--mono-type-hero, 9vh)`.
      Su schermi alti resta identico a prima (9vh > 112px), si stringe
      solo dove serve. E' la causa vera, quindi si corregge li'.
   2. su finestre basse sparisce SOLO la frase d'aiuto del modulo
      ("Lascia la tua email: ti avvisiamo..."): e' ripetuta PAROLA PER
      PAROLA nel riquadro in fondo alla pagina, quindi non si perde
      niente. La riga con data di apertura e indirizzo RESTA.
   Provato con la fila social gia' dentro: entra su 1920x970, 1536x754,
   1366x658, 1280x690.

   ⚠️ Agisco qui e non in mono-engineering.css: quello e' di Codex e
   il patto e' non toccarlo (layer isolato e reversibile).
   ============================================================ */
body.mono-dark-home .cinema-hero .cinema-claim {
  font-size: min(var(--mono-type-hero), 9vh);
}
@media (max-height: 820px) {
  body.mono-dark-home .cinema-hero .sg-3 .cinema-signup small { display: none; }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-lead { margin-bottom: 14px; }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-actions { margin-bottom: 12px; }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-note { margin-bottom: 12px; }
}

/* ---------- TELEFONO: stesso difetto, ma qui lo spazio non basta ----------
   Sul telefono il palco NON e' appiccicato in alto: l'header sta nel flusso
   (68px misurati) e il palco vale 86svh, cioe' header + palco = uno schermo.
   Per questo alzarlo a 100svh NON serve: spingerebbe solo il fondo sotto il
   bordo. L'unica strada e' far stare il contenuto in meno spazio.

   Scelta dell'UTENTE (28/7), messa davanti a un aut-aut misurato: sparisce
   la frase di descrizione ("Gastronomia, dolci e aperitivo a Santa Rita...")
   e RESTA la riga con data di apertura e indirizzo, che su un telefono e'
   l'informazione piu' utile. La descrizione non si perde: e' il testo della
   sezione prodotti poco piu' sotto.
   Il resto e' solo compattamento, senza togliere nulla: bottoni affiancati
   invece che impilati (114px -> 50), riquadro email piu' stretto, e la riga
   di stato vuota che non occupa piu' spazio finche' non dice qualcosa.
   Poi due gradini, solo per schermi via via piu' bassi.

   MISURATO col criterio giusto ("si vede senza scorrere", non "entra nel
   riquadro"): bottone "Avvisami all'apertura" VISIBILE su 430x745, 414x700,
   390x664, 360x560. Su iPhone SE (375x553) e sui vecchi 320x480 sta dentro
   il riquadro ma un dito sotto il bordo: prima era irraggiungibile. */
@media (max-width: 820px) {
  body.mono-dark-home .cinema-hero .sg-3 { top: 74px; bottom: 12px; }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-signup small { display: none; }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-lead { display: none; }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-eyebrow { margin-bottom: 10px; }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-note { margin-bottom: 10px; }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-actions {
    margin-bottom: 10px;
    flex-wrap: nowrap;
    gap: 8px;
  }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-actions .button {
    flex: 1 1 0;
    padding-left: 10px;
    padding-right: 10px;
    white-space: nowrap;
    font-size: 14px;
  }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-signup { gap: 8px; padding: 12px 14px; }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-signup-status:empty { display: none; }
}
/* schermi bassi: via l'occhiello (lo ripete il titolo subito sotto) */
@media (max-width: 820px) and (max-height: 760px) {
  body.mono-dark-home .cinema-hero .sg-3 .cinema-eyebrow { display: none; }
}
/* schermi bassissimi (iPhone SE e simili): ultima rete, o il bottone sparisce */
@media (max-width: 820px) and (max-height: 610px) {
  body.mono-dark-home .cinema-hero .sg-3 .cinema-note { display: none; }
  body.mono-dark-home .cinema-hero .cinema-claim { font-size: min(var(--mono-type-hero), 7.4vh); }
}

/* ---------- Fila social nella hero (28/7) ----------
   Sta SOTTO il riquadro dell'email: chi non lascia l'indirizzo puo'
   comunque seguire. In cima alla home invece che solo nel footer e
   nella scheda Contatti (che sta a 3191px di scorrimento).
   Colori: nessuno nuovo. Crema come `.cinema-note` qui accanto, un
   filo piu' acceso perche' sopra c'e' il video e non un fondo pieno.
   ⚠️ Il blocco nasce da JS: NIENTE `data-reveal` (resterebbe a
   opacity 0 per sempre, errore gia' pagato il 26/7). */
body.mono-dark-home .mono-social--hero { margin-top: 12px; }
body.mono-dark-home .mono-social--hero .mono-social__frase,
body.mono-dark-home .mono-social--hero .mono-social__lista a,
body.mono-dark-home .mono-social--sottohero .mono-social__frase,
body.mono-dark-home .mono-social--sottohero .mono-social__lista a {
  color: rgba(255, 249, 238, 0.92);
}
body.mono-dark-home .mono-social--hero .mono-social__lista a:hover,
body.mono-dark-home .mono-social--hero .mono-social__lista a:focus-visible,
body.mono-dark-home .mono-social--sottohero .mono-social__lista a:hover,
body.mono-dark-home .mono-social--sottohero .mono-social__lista a:focus-visible {
  background: rgba(255, 249, 238, 0.16);
  color: var(--mono-cream);
}

/* ---------- Le due case della fila social, una per volta ----------
   Sul TELEFONO la hero e' gia' piena fino all'orlo: infilarci anche i social
   avrebbe voluto dire sacrificare pure data e indirizzo, che l'utente ha
   scelto di tenere. Quindi li' la fila esce dal film e si mette SUBITO SOTTO,
   prima cosa che si incontra dopo l'apertura: nessun contenuto sacrificato e
   comunque lontanissimo dai 3191px della scheda su Contatti.
   Su COMPUTER resta dentro la hero, accanto al riquadro dell'email, dove e'
   stato verificato che ci sta (1920x970, 1536x754, 1366x658, 1280x690).
   Nel DOM ci sono tutte e due, ma ne vive sempre e solo UNA: `display:none`
   la toglie anche ai lettori di schermo, quindi niente doppioni letti a voce. */
body.mono-dark-home .mono-social--sottohero {
  justify-content: center;
  padding: 18px clamp(18px, 6vw, 40px) 4px;
  text-align: center;
}
@media (min-width: 821px) {
  body.mono-dark-home .mono-social--sottohero { display: none; }
}
@media (max-width: 820px) {
  body.mono-dark-home .mono-social--hero { display: none; }
}

/* ============================================================
   CONTATTI — TELEFONO A ROTELLA ANIMATO + QUARTO TASTO (28/7)

   Idea del proprietario, parole sue: "quei telefoni vecchi che si girava
   la rotella, si alza la cornetta col filo. Una cosa retro perche' noi
   siamo tradizionalmente moderni, che salta subito all'occhio e rende
   anche i tasti piu' vivi."
   Sta accanto ai tre tasti della chiusura "Ci vediamo, ci scriviamo, ci
   sentiamo", dove ora ce n'e' un quarto: "Seguici", che apre le icone.

   Colore ORO: verificato che li' il fondo e' SCURO (la regola crema di
   styles.css:1604 e' scavalcata dal tema notturno; misurato sul sito
   vero: titolo #CBA75A, testo crema). Quindi "oro solo sul buio" e'
   rispettato. Su fondo chiaro sarebbe stato terracotta scura.
   ============================================================ */
body.mono-dark-home .mono-chiamata {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: clamp(12px, 2.4vw, 26px);
  justify-content: center;
  margin-top: 30px;
}
/* Due tasti, il telefono, due tasti (28/7). I lati sono contenitori miei:
   `.hero-actions` originale viene svuotato e buttato, cosi' non eredito
   i suoi margini e non dipendo da un file che non e' mio. */
body.mono-dark-home .mono-chiamata__lato {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  justify-content: center;
}
/* Sul telefono va tutto in colonna: il disegno sale in cima, se no
   spezzerebbe i tasti in due gruppi lontani. */
@media (max-width: 720px) {
  body.mono-dark-home .mono-chiamata { flex-direction: column; }
  body.mono-dark-home .mono-chiamata__disegno { order: -1; }
}
body.mono-dark-home .mono-chiamata__disegno {
  color: var(--mono-champagne);
  flex: 0 0 auto;
  line-height: 0;
}
body.mono-dark-home .mono-telefono {
  height: auto;
  width: clamp(120px, 14vw, 168px);
}

/* L'animazione: il telefono SQUILLA. Il disegno ha gia' la cornetta
   sollevata (e' la posa pop), quindi il movimento giusto non e' alzarla
   ma far vibrare l'apparecchio e lampeggiare le saette, come nei fumetti.
   Due scosse secche, poi 4 secondi di pausa: si fa notare senza diventare
   un semaforo addosso a chi legge.
   ⚠️ `transform-box: fill-box` e' OBBLIGATORIO: senza, l'origine della
   rotazione e' l'angolo dell'intera SVG e il telefono parte per la tangente. */
body.mono-dark-home .mono-telefono__squillo,
body.mono-dark-home .mono-telefono__cornetta,
body.mono-dark-home .mono-telefono__saette {
  transform-box: fill-box;
}
/* 28/7 — "squilla troppo poco, bisogna velocizzarlo": il ciclo passa da
   5,5s a 3s e la scossa diventa piu' fitta (sei colpi invece di quattro).
   Risultato: squilla il doppio delle volte e piu' nervoso, ma resta una
   pausa di ~2s per non diventare un semaforo addosso a chi legge. */
body.mono-dark-home .mono-telefono__squillo {
  animation: mono-squillo 3s ease-in-out infinite;
  transform-origin: 50% 100%;
}
body.mono-dark-home .mono-telefono__cornetta {
  animation: mono-cornetta 3s ease-in-out infinite;
  transform-origin: 50% 100%;
}
body.mono-dark-home .mono-telefono__saette {
  animation: mono-saette 3s steps(1, end) infinite;
  transform-origin: center;
}
@keyframes mono-squillo {
  0%, 4%          { transform: rotate(0deg); }
  8%              { transform: rotate(-3.5deg); }
  12%             { transform: rotate(3.5deg); }
  16%             { transform: rotate(-3deg); }
  20%             { transform: rotate(3deg); }
  24%             { transform: rotate(-2deg); }
  28%, 100%       { transform: rotate(0deg); }
}
@keyframes mono-cornetta {
  0%, 4%          { transform: translateY(0) rotate(0deg); }
  10%             { transform: translateY(-2.5px) rotate(2.5deg); }
  18%             { transform: translateY(-1px) rotate(-2.5deg); }
  28%, 100%       { transform: translateY(0) rotate(0deg); }
}
@keyframes mono-saette {
  0%, 4%    { opacity: 0.35; }
  8%        { opacity: 1; }
  13%       { opacity: 0.4; }
  18%       { opacity: 1; }
  23%       { opacity: 0.4; }
  28%, 100% { opacity: 0.35; }
}
/* Chi ha chiesto meno movimento al sistema operativo lo vede fermo,
   e con le saette PIENE (non a mezza trasparenza, che sarebbe un difetto). */
@media (prefers-reduced-motion: reduce) {
  body.mono-dark-home .mono-telefono__squillo,
  body.mono-dark-home .mono-telefono__cornetta,
  body.mono-dark-home .mono-telefono__saette { animation: none; }
  body.mono-dark-home .mono-telefono__saette { opacity: 1; }
}

/* Il pannello che si apre dal tasto "Social".
   ⚠️ REGOLA DIFENSIVA, costata un bug il 28/7: una regola d'autore con
   `display` SCAVALCA l'attributo `hidden`, e il pannello restava sempre
   aperto ("clicco e non succede niente"). Il contenitore ora e' un div
   normale, ma questa riga fa da rete se un domani diventasse flex. */
body.mono-dark-home .mono-social-pannello[hidden] { display: none; }
body.mono-dark-home .mono-social-pannello {
  margin: 18px auto 0;
  max-width: 560px;
  text-align: center;
}
body.mono-dark-home .mono-social-pannello__frase {
  color: rgba(244, 236, 221, 0.86);
  font-size: clamp(15px, 1.3vw, 17px);
  margin: 0 0 16px;
}
body.mono-dark-home .mono-social--tendina { justify-content: center; }
body.mono-dark-home .mono-social--tendina .mono-social__lista a {
  color: var(--mono-champagne);
}

/* ---------- Icone social piu' VISIBILI (28/7) ----------
   "Sul PC son talmente piccole che non le avevo manco viste."
   Due leve, nessuna delle quali allarga il tasto (resta 44x44, spazio
   sudato nella hero): disegno da 26 a 30px, e un contorno che le fa
   leggere come tasti invece che come decorazione. */
body.mono-dark-home .mono-social--hero .mono-social__lista svg,
body.mono-dark-home .mono-social--sottohero .mono-social__lista svg,
body.mono-dark-home .mono-social--tendina .mono-social__lista svg {
  height: 40px;
  width: 40px;
}
/* Ingrandite due volte il 28/7. Dove c'e' spazio cresce anche il TASTO
   (64px) e soprattutto lo SPAZIO fra un'icona e l'altra: prima erano 8px,
   troppo vicine, e il dito rischiava di prendere quella sbagliata.
   Nella hero il tasto resta 44: li' ogni pixel era stato sudato per far
   entrare il modulo email, e allargarlo lo farebbe tagliare di nuovo. */
body.mono-dark-home .mono-social--sottohero .mono-social__lista a,
body.mono-dark-home .mono-social--tendina .mono-social__lista a,
body.mono-dark-home .mono-social--pagina .mono-social__lista a {
  min-height: 64px;
  min-width: 64px;
  height: 64px;
  width: 64px;
}
body.mono-dark-home .mono-social--sottohero .mono-social__lista,
body.mono-dark-home .mono-social--tendina .mono-social__lista,
body.mono-dark-home .mono-social--pagina .mono-social__lista { gap: 20px; }

/* ---------- Pagina /social/ "Entra nella MONO Family" (28/7) ----------
   Le icone compaiono due volte: in cima sotto il titolo e in fondo, dopo
   l'invito. Sono il motivo per cui la pagina esiste, quindi grandi e in
   chiaro sul buio; nessun colore nuovo. */
body.mono-dark-home .mono-social--pagina {
  justify-content: flex-start;
  margin-top: 26px;
}
body.mono-dark-home .mono-social--pagina .mono-social__lista svg {
  height: 40px;
  width: 40px;
}
body.mono-dark-home .mono-social--pagina .mono-social__lista a {
  border: 1px solid rgba(203, 167, 90, 0.5);
  color: var(--mono-champagne);
}
body.mono-dark-home .mono-social--pagina .mono-social__lista a:hover,
body.mono-dark-home .mono-social--pagina .mono-social__lista a:focus-visible {
  background: rgba(203, 167, 90, 0.14);
  color: var(--mono-cream);
}
/* Nella chiusura il testo e' centrato: le icone lo seguono */
body.mono-dark-home .social-closing .mono-social--pagina { justify-content: center; }
body.mono-dark-home .social-closing .hero-actions { margin-top: 26px; }
/* Nella hero il tasto resta 44, quindi li' il disegno non puo' fare 40 */
body.mono-dark-home .mono-social--hero .mono-social__lista svg {
  height: 34px;
  width: 34px;
}
body.mono-dark-home .mono-social--hero .mono-social__lista a,
body.mono-dark-home .mono-social--sottohero .mono-social__lista a,
body.mono-dark-home .mono-social--tendina .mono-social__lista a {
  border: 1px solid rgba(255, 249, 238, 0.34);
}
body.mono-dark-home .mono-social--tendina .mono-social__lista a {
  border-color: rgba(203, 167, 90, 0.5);
}

/* ============================================================
   PAGINA /social/ — ILLUSTRAZIONE LIKE / CUORE / COMMENTI (28/7)

   Sostituisce il MEGAFONO, che `data-mono-world="jobs"` portava qui ma e'
   gia' l'illustrazione di "Lavora con noi" (doppione segnalato da lui).
   Stile chiesto da lui: piatto, contorni spessi scuri, tondi che si
   sovrappongono. Disegno ORIGINALE (il riferimento che ha mandato e'
   un'icona d'archivio di terzi), nei colori MONO: terracotta, oro, oliva,
   crema, corallo. Stessa famiglia visiva del telefono di Contatti.

   ⚠️⚠️ LA REGOLA PIU' IMPORTANTE DI QUESTO BLOCCO
   `.mono-page-scene` nasce con `opacity: 0` (experience.css:318) e viene
   accesa da `.is-scene-awake`, che pero' la mette `setupPageScene()` —
   la stessa funzione che noi facciamo USCIRE SUBITO col segnaposto.
   Quindi la classe non arriva mai e senza queste due righe l'illustrazione
   resterebbe INVISIBILE PER SEMPRE. E' la terza volta che incontro questa
   trappola (data-reveal 26/7, scheda social 26/7): elemento nel DOM, a
   opacita' zero, e per l'utente semplicemente non esiste.
   ============================================================ */
body.mono-dark-home.social-page .page-hero .mono-page-scene--social {
  opacity: 1;
  transform: translate3d(var(--scene-x), calc(-50% + var(--scene-y)), 0) scale(1);
}
body.mono-dark-home .mono-social-scena svg { height: auto; width: 100%; }

/* L'animazione: batte il cuore, si preme il like, spunta il commento.
   Sfalsati dentro un giro di 3,2s (portato da 4s il 28/7, "un pelo piu' veloce"), cosi' sembra una conversazione e non
   tre cose che pulsano insieme. */
body.mono-dark-home .mono-social-scena__cuore,
body.mono-dark-home .mono-social-scena__like,
body.mono-dark-home .mono-social-scena__commento {
  transform-box: fill-box;
  transform-origin: center;
}
body.mono-dark-home .mono-social-scena__cuore {
  animation: mono-batte 3.2s ease-in-out infinite;
}
body.mono-dark-home .mono-social-scena__like {
  animation: mono-premi 3.2s ease-in-out infinite;
}
body.mono-dark-home .mono-social-scena__commento {
  animation: mono-spunta 3.2s ease-in-out infinite;
}
@keyframes mono-batte {
  0%, 8%    { transform: scale(1); }
  14%       { transform: scale(1.09); }
  20%       { transform: scale(1); }
  26%       { transform: scale(1.05); }
  32%, 100% { transform: scale(1); }
}
@keyframes mono-premi {
  0%, 36%   { transform: rotate(0deg) translateY(0); }
  44%       { transform: rotate(-9deg) translateY(3px); }
  52%       { transform: rotate(3deg) translateY(-1px); }
  60%, 100% { transform: rotate(0deg) translateY(0); }
}
@keyframes mono-spunta {
  0%, 62%   { transform: scale(1); }
  70%       { transform: scale(1.08); }
  78%       { transform: scale(0.98); }
  86%, 100% { transform: scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  body.mono-dark-home .mono-social-scena__cuore,
  body.mono-dark-home .mono-social-scena__like,
  body.mono-dark-home .mono-social-scena__commento { animation: none; }
}

/* ============================================================
   PASTICCERIA (28/7) — frusta con la panna + titolo su due righe

   1. L'ILLUSTRAZIONE. Sostituisce la "scena pastry" di experience.js
      (piatto + dolce + glassa costruiti con <span> e bordi), che il
      proprietario non riconosceva: "quella roba strana che non si
      capisce". Stessa famiglia visiva del telefono di Contatti e dei
      like di /social/: piatto, contorni scuri spessi, disco crema a
      pallini, colori MONO.
      ⚠️⚠️ Come sulla pagina /social/: bloccando `setupPageScene()` col
      segnaposto NON arriva `.is-scene-awake`, quindi senza le due righe
      qui sotto l'illustrazione resterebbe a `opacity: 0` PER SEMPRE.
      E' la QUARTA volta che questa trappola si presenta in questo sito.

   2. IL TITOLO. "Si ricorda." va a capo e prende `--accento`, che sulle
      pagine PRODOTTO e' la terracotta: esattamente il sistema di colori
      gia' in uso sui titoli a due righe delle altre pagine. Terracotta
      sul buio fa 3,97 -> va bene SOLO perche' e' un titolo grande.
   ============================================================ */
body.mono-dark-home.pasticceria-page .page-hero .mono-page-scene--frusta {
  opacity: 1;
  transform: translate3d(var(--scene-x), calc(-50% + var(--scene-y)), 0) scale(1);
}
body.mono-dark-home .mono-frusta svg { height: auto; width: 100%; }

body.mono-dark-home.pasticceria-page .pastry-hero-title span { display: block; }
body.mono-dark-home.pasticceria-page .pastry-hero-title span + span {
  color: var(--accento);
}

/* Un filo di movimento: la panna "monta" appena, la gabbia resta ferma.
   Lento e piccolo: e' una pagina di prodotto, non deve rubare la scena. */
body.mono-dark-home .mono-frusta__panna {
  animation: mono-monta 4.5s ease-in-out infinite;
  transform-box: fill-box;
  transform-origin: 50% 100%;
}
@keyframes mono-monta {
  0%, 100% { transform: translateY(0) scale(1); }
  45%      { transform: translateY(-2px) scale(1.03); }
}
@media (prefers-reduced-motion: reduce) {
  body.mono-dark-home .mono-frusta__panna { animation: none; }
}

/* La firma rossa dentro una card crema (28/7).
   #A83A28 e' la terracotta SCURA gia' in uso sulle card chiare: la
   terracotta di marchio su crema non tiene il contrasto, questa si'.
   ⚠️ E' un <p> con una classe, NON uno <span>: dentro `.page-card` uno
   <span> sciolto e' l'OCCHIELLO, e finirebbe in alto in maiuscoletto. */
body.mono-dark-home .page-card .mono-card-firma {
  color: #A83A28;
  font-weight: 800;
  margin-top: 10px;
}

/* Titolo della fascia serale su /aperitivo/ (28/7).
   ⚠️ COLORI INVERTITI di proposito rispetto al sistema: qui la PRIMA riga
   e' terracotta e la SECONDA oro, mentre sulle pagine prodotto la regola
   generale vuole titolo oro e accento terracotta. E' una scelta sua fatta
   guardando la pagina, non una svista: se un domani sembra un errore,
   e' voluta. Terracotta sul buio fa ~3,97 -> regge SOLO perche' e' un
   titolo grande, non replicare su testo piccolo. */
body.mono-dark-home.aperitivo-page .aperitivo-section-title span {
  color: var(--accento);
  display: block;
}
body.mono-dark-home.aperitivo-page .aperitivo-section-title span + span {
  color: var(--titolo);
}

/* "Rito contemporaneo" su /aperitivo/ (28/7): "Resti per un bicchiere."
   ORO, "Torni per il resto." TERRACOTTA.
   Qui i colori seguono il sistema NORMALE del sito (titolo = --titolo,
   accento = --accento), al contrario della fascia serale qui sopra dove
   sono invertiti di proposito. Serve una regola esplicita perche' la
   regola generica `main h2 span + span` farebbe oro anche il secondo. */
body.mono-dark-home.aperitivo-page .aperitivo-rito-title span { display: block; }
body.mono-dark-home.aperitivo-page .aperitivo-rito-title span + span {
  color: var(--accento);
}

/* ============================================================
   28/7 sera — LA TAVOLA CONDIVISA di /la-bottega/ DEVE VEDERSI

   ⚠️ QUINTA VOLTA per la trappola dell'opacita' zero. Il segnaposto
   `.mono-page-scene` in `la-bottega/index.html` fa uscire subito
   `setupPageScene()`, che percio' non aggiunge piu' `.is-scene-awake`,
   e senza quella `.mono-page-scene { opacity: 0 }` (experience.css)
   terrebbe il disegno NEL DOM E INVISIBILE PER SEMPRE.
   Rimedio in CSS come per le altre due illustrazioni fatte a mano
   (--social e --frusta): niente JavaScript, cosi' non c'e' niente che
   possa non partire. ⚠️ Io avevo scritto una funzione JS con
   IntersectionObserver ed era SBAGLIATO come metodo: in questo sito la
   convenzione e' gia' questa, e una regola CSS non puo' fallire.

   ⚠️ DIFFERENZA VOLUTA rispetto alla regola gemella di --frusta:
   quella impone anche il `transform`, SENZA limite di larghezza. Ma
   sotto gli 820px `.mono-page-scene` viene centrata con
   `left: 50%` + `translate3d(-50%, ...)`: imporre li' il transform da
   computer la sposterebbe di mezza larghezza fuori posto. Qui il
   transform si tocca SOLO da 821px in su.
   ============================================================ */
body.mono-dark-home.about-page .page-hero .mono-scene-tavola {
  opacity: 1;
}
@media (min-width: 821px) {
  body.mono-dark-home.about-page .page-hero .mono-scene-tavola {
    transform: translate3d(var(--scene-x), calc(-50% + var(--scene-y)), 0) scale(1);
  }
}
body.mono-dark-home .mono-scene-tavola svg { height: auto; width: 100%; }

/* ============================================================
   28/7 sera — /la-bottega/, TRE RITOCCHI CHIESTI DA LUI
   ============================================================ */

/* (1) "Un prodotto, da solo, non basta. / Ci prendiamo cura della tua
   scelta." — voleva la seconda riga su UNA RIGA SOLA.
   ⚠️ Non si e' rimpicciolito il testo: MISURATO, la riga e' larga
   1112px mentre il titolo era chiuso in 920 da
   `.page-section > h2 { max-width: 920px }` (styles.css) — ma la
   sezione di spazio ne ha 1252. Quindi basta ALLARGARE il titolo e il
   corpo resta grande. Solo da 821px in su: sotto, andare a capo e'
   giusto e la riga unica sarebbe illeggibile.
   Stessa cosa per "Il metodo la rende possibile.", che si spezzava in
   "Il metodo la / rende possibile." — suo: "non ha senso andare a capo". */
@media (min-width: 821px) {
  body.mono-dark-home.about-page .about-scelta-title,
  body.mono-dark-home.about-page .about-metodo-title {
    max-width: min(1180px, 100%);
  }
}

/* (2) Il cuore di posate di MonoConvivium.
   Sul telefono: sotto, centrato, piccolo. Da computer: a destra, nello
   spazio libero accanto al testo (che si ferma a 920px). */
body.mono-dark-home.about-page .about-impact { position: relative; }
body.mono-dark-home.about-page .about-convivium-cuore {
  display: block;
  height: auto;
  margin: 34px auto 6px;
  max-width: 230px;
  opacity: 0.9;
  width: 58%;
}
@media (min-width: 1081px) {
  /* 28/7 sera, secondo giro — suo: "cosi' tutto a destra diventa un po'
     anonimo, piu' grosso e piu' centrale".
     ⚠️ Sale all'altezza del TITOLO, non dei paragrafi: il titolo "Qui ogni
     scelta / nutre due volte." e' corto e finisce intorno a meta' pagina,
     quindi li' c'e' spazio vero. Piu' in basso i paragrafi arrivano a
     920px e il cuore ci finirebbe sopra. */
  /* 28/7 sera, TERZO giro — non ci siamo ancora, suo: "lo voglio piu'
     grosso, al centro di quel pezzo li', all'altezza della riga dove
     dice «E nutre il futuro, sostenendo MonoConvivium»".
     ⚠️ Il `top` e' misurato: quella riga cade a ~390px dall'inizio
     della sezione, quindi il cuore (alto ~330) parte a ~225 per
     restarci centrato. Legato a vw e non a vh: l'altezza della
     finestra non c'entra niente con dove cade il testo.
     ⚠️ Piu' in basso di cosi' non si puo' scendere granche': i
     paragrafi arrivano a 920px e il cuore ci finirebbe sopra. Qui la
     riga "formazione, lavoro e autonomia." e' corta e lascia campo. */
  /* 28/7 sera, QUARTO giro — suo: "ancora leggermente piu' basso, e piu'
     grosso, tipo il doppio di adesso".
     ⚠️ IL DOPPIO NON CI STA, ed e' misurato non stimato: 470 x 2 = 940,
     ma i paragrafi della sezione sono larghi 920px e il cuore ci
     finirebbe sopra. Il massimo che NON copre una lettera e' 610px in
     alto e 570 piu' in basso (misurato riga per riga sul sito vero).
     Preso 570 e sceso a 300: la direzione giusta, al massimo consentito.
     ➡️ Per andare davvero al doppio l'unica strada e' stringere la
     colonna di testo di questa sezione (920px sono ~100 battute, una
     misura di lettura gia' lunga): stringendola a ~620 si libererebbero
     300px e il cuore potrebbe arrivare a ~780. Da chiedergli. */
  body.mono-dark-home.about-page .about-convivium-cuore {
    margin: 0;
    max-width: none;
    position: absolute;
    /* ⚠️ Il margine destro e' stretto di proposito. A 570px di larghezza
       il bordo sinistro del cuore arrivava a 12px sopra la riga "Un
       lavoro che conta, dentro una squadra vera." (misurato dopo la
       pubblicazione). Invece di rimpicciolirlo, si sposta verso il bordo:
       cosi' resta della misura che ha chiesto. */
    right: clamp(14px, 1.7vw, 34px);
    top: clamp(180px, 21vw, 320px);
    /* ⚠️ 545 e non 570: a 570 restavano 7px fra il cuore e la riga "Un
       lavoro che conta...". Zero sovrapposizioni sulla carta, ma 7px
       sono dentro il margine con cui i caratteri rendono diversamente
       da un computer all'altro: basta poco e si toccano. Con 545 la
       distanza sale a ~32px e la differenza a occhio non si vede. */
    width: min(40vw, 545px);
  }
}

/* (3) La chiusura: centrata, piu' importante, nel ROSSO BRILLANTE.
   ⚠️ Questa e' la SECONDA e ULTIMA eccezione a --mono-rosso-brillante,
   che era nato solo per "amore" sull'isola verde della home. L'ha
   chiesto lui proprio per distinguerla dal rosso dei bottoni e darle
   piu' peso. Qui il fondo e' scuro, quindi si legge senza problemi:
   il limite dell'altro rosso valeva sul verde, non sul buio.
   ⚠️ Anche qui la larghezza va oltre i 920px di regola, se no
   "Contribuisci a costruire qualcosa di importante." va a capo. */
body.mono-dark-home.about-page .about-impact-closing {
  margin-left: auto;
  margin-right: auto;
  max-width: min(1240px, 100%);
  text-align: center;
}
body.mono-dark-home.about-page .about-impact-call {
  color: var(--mono-rosso-brillante);
  letter-spacing: -0.01em;
  margin-bottom: 18px;
}
body.mono-dark-home.about-page .about-impact-closing > p:last-child {
  margin-left: auto;
  margin-right: auto;
  max-width: 62ch;
}

/* 28/7 sera — /la-bottega/, titolo hero: "MONO" torna DORATO.
   Prima tutta la prima riga era rossa (il --titolo delle pagine PERSONE).
   Su sua indicazione: MONO oro · "nasce dalla cucina." rosso · "Cresce
   intorno alle persone." oro (quella era gia' cosi').
   Qui --accento VALE ORO, non rosso: su about/jobs/convivium/events i
   due colori sono invertiti rispetto alle pagine prodotto.
   ⚠️ `display: inline` obbligatorio: `.about-page .about-hero-title span`
   (styles.css:1384) mette display:block su OGNI span discendente, anche
   quelli annidati, e senza questa riga "MONO" finirebbe su una riga sua. */
body.mono-dark-home.about-page .about-hero-title .about-mono-oro {
  color: var(--accento);
  display: inline;
}

/* 28/7 sera — /lavora-con-noi/: "responsabilità vere." in DORATO.
   Era rosso come tutto il resto del titolo.
   ⚠️ Qui `--accento` VALE ORO: le pagine PERSONE (about, jobs,
   convivium, events) hanno i due colori invertiti rispetto a quelle
   prodotto. Scrivere `var(--accento)` e non `#CBA75A` a mano e' quello
   che tiene in piedi il sistema.
   ⚠️ Uno span SOLO: la regola `main h2 span + span` colpisce il
   SECONDO span e qui non entra in gioco. */
body.mono-dark-home.jobs-page .jobs-percorsi-title span {
  color: var(--accento);
}

/* ============================================================
   28/7 sera — /app/: due titoli ritoccati da lui
   ============================================================ */

/* "Meno passaggi." (oro) / "Più tempo per le cose buone." (ROSSO),
   una riga ciascuna.
   ⚠️ Serve la regola esplicita per il rosso: la generica
   `main h2 span + span` fa ORO ogni span dopo il primo, ed erano
   infatti dorate tutte e due.
   ⚠️ Sulla riga unica il caso e' curioso e vale la pena saperlo: la
   frase chiede 919px e il titolo ne aveva 920. Un solo pixel di
   margine, che gli arrotondamenti del testo si mangiano: bastava
   niente per mandarla a capo. Alzato a 1000, che e' comodo, contro i
   1252 di spazio utile della sezione. */
body.mono-dark-home.app-page .app-meno-title span + span {
  color: var(--accento);
}
@media (min-width: 821px) {
  body.mono-dark-home.app-page .app-meno-title {
    max-width: min(1000px, 100%);
  }
}

/* "MONO, quando vuoi TU." — rosso solo sull'ultima parola.
   ⚠️ Uno span SOLO: la regola `main h2 span + span` colpisce il
   SECONDO span e qui non entra in gioco. */
body.mono-dark-home.app-page .app-closing-title span {
  color: var(--accento);
}

/* ============================================================
   28/7 sera — /eventi/: LA TAVOLATA e la terza riga in rosso
   ============================================================ */

/* (1) L'illustrazione deve VEDERSI. ⚠️ Sesta volta per la trappola
   dell'opacita' zero: il segnaposto fa uscire subito setupPageScene(),
   che percio' non aggiunge piu' `.is-scene-awake`, e senza quella
   `.mono-page-scene { opacity: 0 }` la terrebbe invisibile per sempre.
   Regola CSS come per --social, --frusta e la tavola di /la-bottega/:
   niente JavaScript, cosi' non c'e' niente che possa non partire.
   ⚠️ Il `transform` si tocca SOLO da 821px in su: sotto, la scena e'
   centrata con left:50% + translate(-50%) e imporre qui la posa da
   computer la sposterebbe di mezza larghezza. */
body.mono-dark-home.events-page .page-hero .mono-scene-tavolata {
  opacity: 1;
}
@media (min-width: 821px) {
  body.mono-dark-home.events-page .page-hero .mono-scene-tavolata {
    transform: translate3d(var(--scene-x), calc(-50% + var(--scene-y)), 0) scale(1);
  }
}
body.mono-dark-home .mono-scene-tavolata svg { height: auto; width: 100%; }

/* (2) "Facile da organizzare." torna al ROSSO del sito.
   Storia, perche' spiega la scelta finale ed evita di rifare il giro:
   - prima l'aveva chiesta in #FF8360 (il rosso di "amore"): guardandola
     non gli e' piaciuta, e aveva ragione. Erano TRE CALDI VICINI
     (terracotta, oro, corallo): si impastavano e la terza riga sembrava
     una variante della prima invece di chiudere;
   - poi ha provato dal vivo quattro versioni su /prova-colori/,
     compreso il cashmere in fondo e una col verde oliva;
   - ha scelto la piu' sobria: "i colori del font, quindi dorato e
     rosso, nulla di piu'". Nessun colore nuovo nel sistema.
   Quindi rosso / oro / rosso. Serve la regola esplicita perche' la
   generica `main h2 span + span` fa oro OGNI span dopo il primo, e la
   terza riga sarebbe dorata come la seconda.
   `--titolo` su /eventi/ vale terracotta: le pagine PERSONE hanno i due
   colori invertiti rispetto a quelle prodotto. */
body.mono-dark-home.events-page .events-proposal-title span:nth-child(3) {
  color: var(--titolo);
}

/* 28/7 sera — /gastronomia/, sezione "Disponibilità", riscritta da lui.
   "La cucina è all'opera." (oro) / "E presto saprai cosa assaggiare
   oggi." (ROSSO), su due righe, una riga ciascuna.
   ⚠️ Regola esplicita obbligatoria: la generica `main h2 span + span`
   farebbe la seconda riga ORO. Stessa avvertenza dei titoli gemelli.
   ⚠️ MISURATO a 1440: la riga rossa chiede 1175px e il titolo era
   chiuso in 920 da `.page-section > h2`; lo spazio utile della sezione
   e' 1252, quindi basta allargare. Il paragrafo: la seconda frase
   chiede 851px contro i 715 del suo max-width, stessa cura.
   Sotto gli 821px tutto torna ad andare a capo da solo, ed e' giusto. */
body.mono-dark-home.gastronomia-page .gastronomia-banco-title span { display: block; }
body.mono-dark-home.gastronomia-page .gastronomia-banco-title span + span {
  color: var(--accento);
}
@media (min-width: 821px) {
  body.mono-dark-home.gastronomia-page .gastronomia-banco-title {
    max-width: min(1220px, 100%);
  }
  body.mono-dark-home.gastronomia-page .gastronomia-banco-testo {
    max-width: min(890px, 100%);
  }
}

/* 28/7 sera — /gastronomia/, "Radici vere, / FORMA CONTEMPORANEA.":
   due righe vere e la seconda in ROSSO, chiesto da lui.
   ⚠️ Serve la regola esplicita: quella generica `main h2 span + span`
   farebbe la seconda riga ORO. Stessa avvertenza gia' scritta per i due
   titoli di /aperitivo/ — se un domani sembra una svista, non lo e'.
   ⚠️ Rosso normale del sito (--accento = terracotta), NON il rosso
   brillante, che vive solo sull'isola verde della home. */
body.mono-dark-home.gastronomia-page .gastronomia-radici-title span { display: block; }
body.mono-dark-home.gastronomia-page .gastronomia-radici-title span + span {
  color: var(--accento);
}

/* 28/7 sera — "Quando la bottega rallenta, resta il GUSTO.": rosso solo
   sull'ultima parola, chiesto da lui. Stessa mossa gia' fatta sulla home
   con "porta qui": uno <span> nel titolo e il resto resta oro.
   ⚠️ Qui va il rosso NORMALE del sito (--accento = terracotta #B85C38,
   3,93 sul fondo scuro), NON il --mono-rosso-brillante: quello vive solo
   sull'isola verde della home, dove la terracotta sparirebbe.
   ⚠️ Uno span SOLO: la regola generica `main h1 span + span` colpisce il
   SECONDO span e qui non entra in gioco. */
body.mono-dark-home.aperitivo-page .page-hero h1 span {
  color: var(--accento);
}

/* ============================================================
   "amore": la PENNELLATA E' STATA TOLTA (28/7 sera)

   STORIA, perche' serve se un domani si torna indietro.
   Il 28/7 mattina il proprietario voleva "amore" in rosso mattone.
   MISURATO: la terracotta su quel verde fa 1,22 -> come TESTO le
   lettere perdono il bordo. Ma come MACCHIA PIENA si vede benissimo
   (rosso e verde hanno luminosita' simile e tinte opposte), quindi la
   parola era rimasta CREMA con la pennellata rossa sotto.
   La sera ha chiesto il contrario, e a ragion veduta: "voglio
   sbatterci la testa, voglio vederlo io rosso su verde se rimane o
   meno". Fatto: parola rossa (regola piu' sopra), pennellata via.

   ⚠️ PER TORNARE INDIETRO basta rimettere le due regole qui sotto e
   riportare l'`em` a var(--mono-cream). La pennellata e' un SVG
   scritto dentro il CSS, nessun file da scaricare;
   `preserveAspectRatio='none'` la allunga quanto la parola.

body.mono-dark-home .product-system .product-system-title em {
  position: relative;
}
body.mono-dark-home .product-system .product-system-title em::after {
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 22' preserveAspectRatio='none'%3E%3Cpath d='M2 6 C42 1 84 13 124 5 C152 0 176 8 198 3 L198 15 C176 21 152 13 124 18 C84 26 42 15 2 20 Z' fill='%23B85C38'/%3E%3C/svg%3E") no-repeat center / 100% 100%;
  bottom: -0.04em;
  content: "";
  height: 0.17em;
  left: -1.5%;
  pointer-events: none;
  position: absolute;
  right: -1.5%;
}
   ============================================================ */

/* ============================================================
   ALTRI DUE ROSSI CHIESTI IL 28/7 SERA (fondo scuro, non verde:
   qui la terracotta fa 3,93, sopra la soglia 3 dei titoli grandi)

   1. "Trasparenza al banco. Semplice a casa." — titolo su DUE RIGHE,
      DUE COLORI (aggiornato il 29/7: prima era tutto rosso).
      1a riga ROSSA, 2a riga ORO — richiesta sua guardando la pagina.
      La 1a riga eredita il rosso dall'h2; la 2a lo scavalca con
      `var(--titolo)`, che sulla home vale ORO (le pagine PRODOTTO hanno
      i due colori invertiti rispetto a quelle PERSONE, riga 535/542).
      ⚠️ La regola esplicita e' voluta anche se la generica
      `main h2 span + span` farebbe gia' oro: qui l'h2 e' rosso per
      conto suo e senza una regola SULLO span la seconda riga
      erediterebbe il rosso.
   2. "La strada per qualcosa di buono porta qui." — rosso SOLO su
      "porta qui" (suo: "lo scrivi solo porta qui in rosso"), che in
      `index.html` e' avvolto in uno <span>. Il resto resta oro perche'
      e' testo sciolto dell'h2. ⚠️ Uno span SOLO: la regola generica
      `main h2 span + span` colpisce il SECONDO span e qui non entra.
   ============================================================ */
body.mono-dark-home .value-section h2 {
  color: var(--accento);
}
body.mono-dark-home .value-section h2 span {
  display: block;
}
body.mono-dark-home .value-section h2 span + span {
  color: var(--titolo);
}
body.mono-dark-home .local-info-section h2 span {
  color: var(--accento);
}

/* ============================================================
   SEZIONE APP DELLA HOME — rimessa in ordine (28/7)

   Richiesta sua: "la trovo disordinata". Tolta la card "Ordina. Paga.
   Torna." (diceva a parole quello che i tre riquadri rossi dicono gia')
   e al suo posto, nella colonna di destra, e' salito il QR, che prima
   stava schiacciato in fondo alla colonna sinistra.
   Risultato: una cosa sola per lato. A sinistra si legge, a destra si fa.
   ============================================================ */
body.mono-dark-home .app-gateway > .app-qr--colonna {
  align-self: center;
  flex-direction: column;
  gap: 20px;
  justify-content: center;
  margin-top: 0;
  max-width: none;
  padding: clamp(22px, 3vw, 34px);
  text-align: center;
  width: 100%;
}
body.mono-dark-home .app-qr--colonna img {
  height: auto;
  padding: 12px;
  width: min(260px, 52vw);
}
body.mono-dark-home .app-qr--colonna span {
  font-size: clamp(15px, 1.3vw, 17px);
  font-weight: 700;
}
/* Sotto i 900px la griglia va in colonna: il QR non deve diventare
   un lenzuolo largo quanto lo schermo. */
@media (max-width: 900px) {
  body.mono-dark-home .app-gateway > .app-qr--colonna {
    justify-self: center;
    max-width: 380px;
  }
}

/* Titolo della sezione app su due righe (28/7): prima "Tutto in un tap"
   restava attaccato e la sezione sembrava sbilanciata. */
body.mono-dark-home .app-gateway-title span { display: block; }
body.mono-dark-home .app-gateway-title span + span { color: var(--accento); }

/* ============================================================
   29/7 — LA FASCIA LEGALE DEL FOOTER (P. IVA e dati dell'impresa)

   Obbligo di legge: la partita IVA va sulla home page (art. 35 DPR 633/1972).
   Serve anche alla fiducia: un ufficio acquisti che deve ordinare un catering
   cerca la P. IVA prima di scrivere, e se non la trova tu non esisti come
   fornitore.

   PERCHE' UNA FASCIA SCURA E NON SEMPLICEMENTE UNA RIGA IN PIU'
   Il footer e' un gradiente terracotta (#a83a28 -> #b85c38). Su quel fondo il
   testo crema fa 4.33 nel punto piu' chiaro: per un testo di 13px e' sotto la
   soglia di 4.5. Con la velatura scura il fondo scende a #8f4c32/#843426 e il
   crema arriva a 6.17-8.01. Misurato, non stimato.
   In piu' separa i dati burocratici dalla navigazione, che e' il modo in cui
   li tengono tutti i siti fatti bene: si trovano quando li cerchi e non
   rubano l'occhio quando non li cerchi.

   ⚠️ `flex-basis: 100%`: il footer e' un flex con `space-between`, senza
   questa riga la fascia diventerebbe una terza colonna schiacciata accanto
   al marchio e al menu.
   ============================================================ */
/* ⚠️ 30/7 — RIDOTTA A UNA RIGA, e non e' una svista.
   Sua richiesta: nel footer resta SOLO la partita IVA. Sede legale, ragione
   sociale (che contiene nome e cognome), REA e PEC sono suoi dati privati e
   NON c'e' nessun obbligo di pubblicarli: l'art. 2250 c.c. che li impone vale
   per le societa', e MONO e' una ditta individuale. Obbligatoria e' solo la
   P. IVA (art. 35 DPR 633/1972).
   Essendo una riga sola, la fascia scura di prima sarebbe stata una scatola
   vuota: adesso e' discreta, allineata a destra accanto al menu del footer.
   ⚠️ Il fondo terracotta piu' chiaro fa 4.33 col crema pieno: per un testo
   cosi' piccolo si tiene la velatura scura, che lo porta a 6.17. */
body.mono-dark-home .site-footer__legale {
  background: rgba(38, 35, 33, 0.28);
  border-radius: 999px;
  color: #fff9ee;
  font-size: 12px;
  letter-spacing: 0.02em;
  line-height: 1.4;
  margin: 0;
  padding: 6px 14px;
  white-space: nowrap;
}
body.mono-dark-home .site-footer__legale a {
  color: #fff9ee;
  text-decoration: underline;
  text-decoration-color: rgba(255, 249, 238, 0.45);
  text-underline-offset: 2px;
}
body.mono-dark-home .site-footer__legale a:hover,
body.mono-dark-home .site-footer__legale a:focus-visible {
  text-decoration-color: #fff9ee;
}

/* ============================================================
   29/7 — LA PAGINA /privacy/

   Pagina NUOVA, quindi qui non si sta cambiando niente di esistente: sono gli
   unici stili di elenco del sito, perche' finora nessuna pagina aveva bisogno
   di elenchi (una pagina di informativa senza elenchi e' illeggibile).
   Tutto il resto della pagina usa le classi che c'erano gia'
   (.page-hero, .page-section, .page-section.alt, .eyebrow): il davanti e'
   identico alle altre 13 pagine, come voluto.
   ============================================================ */
body.mono-dark-home.privacy-page .privacy-elenco {
  list-style: none;
  margin: 0 0 18px;
  max-width: 920px;
  padding: 0;
}
body.mono-dark-home.privacy-page .privacy-elenco li {
  line-height: 1.6;
  padding: 0 0 10px 26px;
  position: relative;
}
/* Il pallino e' un quadratino ORO, non un bullet di sistema: cosi' l'elenco
   appartiene al sito invece di sembrare incollato da un modulo. */
body.mono-dark-home.privacy-page .privacy-elenco li::before {
  background: var(--mono-champagne);
  content: "";
  height: 6px;
  left: 4px;
  position: absolute;
  top: 0.62em;
  width: 6px;
}
body.mono-dark-home.privacy-page .privacy-elenco strong {
  color: #fff9ee;
}
/* Il riquadro coi dati dell'impresa: righe corte, nessun pallino, monospaziato
   nei numeri no — resta il carattere del sito, ma piu' stretto di riga. */
body.mono-dark-home.privacy-page .privacy-elenco--dati li {
  padding-bottom: 2px;
}
body.mono-dark-home.privacy-page .privacy-elenco--dati li::before {
  display: none;
}
body.mono-dark-home.privacy-page .privacy-blocco h3 {
  color: var(--mono-champagne);
  font-size: clamp(17px, 1.5vw, 21px);
  margin: 26px 0 10px;
}
body.mono-dark-home.privacy-page .privacy-aggiornata {
  border-top: 1px solid rgba(255, 249, 238, 0.18);
  font-size: 13.5px;
  margin-top: 28px;
  padding-top: 16px;
}

/* ============================================================
   29/7 — LA SPUNTA DEL CONSENSO sui due moduli email

   ⚠️⚠️ TRAPPOLA GIA' PAGATA DUE VOLTE SU QUESTO SITO, evitata qui:
   in `styles.css` esiste `.cinema-signup input { flex: 1 1 200px;
   border-radius: 999px; background: rgba(255,249,238,.94); padding: 12px 16px }`
   — una regola pensata per il CAMPO EMAIL che colpisce QUALUNQUE input dentro
   il modulo. Senza le righe qui sotto la casella del consenso diventava una
   PILLOLA CREMA larga 200px senza spunta. E' lo stesso difetto del 24/7 sul
   modulo di /eventi/ (`.mono-form input` con appearance:none), risolto la'
   nello stesso modo. Se un domani la casella "sembra un campo di testo",
   e' questa regola che e' saltata.

   Specificita': `.cinema-signup input` vale (0,1,1), questa (0,3,1). Vince.
   ============================================================ */
body.mono-dark-home .signup-consenso {
  align-items: flex-start;
  color: #fff9ee;
  cursor: pointer;
  display: flex;
  font-size: 12.5px;
  gap: 9px;
  line-height: 1.45;
  /* ⚠️ Il <label> AVVOLGE la casella: si spunta anche toccando il testo.
     Su un telefono e' la differenza fra un bersaglio da 20px e uno da tutta
     la riga — e la casella da sola sarebbe sotto il minimo di 24px. */
  margin: 0;
  text-align: left;
  text-transform: none;
  letter-spacing: normal;
}
body.mono-dark-home .signup-consenso input[type="checkbox"] {
  appearance: auto;
  -webkit-appearance: checkbox;
  accent-color: #6e6a3c;
  background: none;
  border: none;
  border-radius: 0;
  cursor: pointer;
  flex: none;
  height: 18px;
  margin: 1px 0 0;
  min-height: 0;
  min-width: 0;
  padding: 0;
  width: 18px;
}
body.mono-dark-home .signup-consenso a {
  color: #fff9ee;
  text-decoration: underline;
  text-underline-offset: 2px;
}
/* Nel riquadro terracotta in fondo alla home il modulo non e' un grid come
   quello della hero: serve un filo d'aria sopra, se no la riga si incolla
   al bottone. */
body.mono-dark-home .opening-signup .signup-consenso {
  margin-top: 10px;
}
/* ⚠️ FINESTRE BASSE — il motivo per cui questa regola esiste.
   Il 28/7 e' stato corretto il difetto piu' grave del sito: su quasi tutti i
   portatili il modulo email della hero finiva TAGLIATO fuori dal ritaglio
   (a 1366x658 se ne vedevano 5px). Il rimedio fu far sparire la frase d'aiuto
   sotto gli 820px d'altezza. La spunta del consenso e' obbligatoria e NON puo'
   sparire allo stesso modo: qui si stringe al minimo leggibile invece.
   Da riverificare sul sito vero a 1366x658, 1280x690, 390x664 e 375x553. */
/* ⚠️⚠️ LO SPAZIO RECUPERATO PER FAR STARE LA SPUNTA — misurato sul sito vero
   il 29/7, non stimato.

   La spunta e' obbligatoria e aggiunge ~41px al riquadro della hero, che era
   gia' al limite: il 28/7 era stato corretto il difetto piu' grave del sito
   (il modulo email tagliato fuori su quasi tutti i portatili) e il margine
   rimasto era di pochi pixel. Aggiungendo la spunta il bottone "Avvisami
   all'apertura" e' uscito di 5px a 1366x658 e di 26px su iPhone SE.

   Da dove si recuperano, in ordine di quanto rendono e di quanto poco costano:
   1. la riga di stato VUOTA: ha `min-height: 1em` e occupa ~15px piu' il suo
      spazio, per non dire niente finche' non si preme. Sparisce da vuota
      (la regola esisteva gia' sotto gli 820px di LARGHEZZA: qui vale anche
      per le finestre BASSE, che e' il caso dei portatili);
   2. i margini interni del riquadro, stretti di qualche pixel;
   3. sui telefoni bassissimi, il titolone: da 7.4vh a 6.4vh. E' lo stesso
      meccanismo gia' in uso, non una leva nuova.

   VERIFICATO DAL VIVO, bottone e spunta ENTRAMBI dentro lo schermo:
     1366x658 -> bottone a 643 (15px di margine), spunta a 586
     1280x690 -> bottone a 644 (46px di margine), spunta a 587
      400x682 -> bottone a 671, spunta a 557
      385x568 (iPhone SE) -> bottone a 559 (9px), spunta a 447
   ⚠️ Se un domani si aggiunge una riga qualsiasi a questo riquadro, RIFARE
   queste quattro misure. Il margine e' di pochi pixel per costruzione. */
@media (max-height: 820px) {
  body.mono-dark-home .cinema-hero .sg-3 .signup-consenso {
    font-size: 11.5px;
    gap: 7px;
    line-height: 1.35;
  }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-signup-status:empty { display: none; }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-signup { gap: 7px; padding: 12px 16px; }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-lead { margin-bottom: 10px; }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-actions { margin-bottom: 9px; }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-note { margin-bottom: 9px; }
}
/* Telefoni bassissimi (iPhone SE e simili): ultimo gradino.
   ⚠️ La casella scende a 16px ma il bersaglio da toccare resta TUTTA LA RIGA,
   perche' il <label> avvolge la casella: sopra il minimo di 24px. */
@media (max-width: 820px) and (max-height: 610px) {
  body.mono-dark-home .cinema-hero .cinema-claim { font-size: min(var(--mono-type-hero), 6.4vh); }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-signup { gap: 6px; padding: 10px 13px; }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-signup strong { font-size: 15px; }
  body.mono-dark-home .cinema-hero .sg-3 .signup-consenso { font-size: 10.5px; gap: 6px; line-height: 1.3; }
  body.mono-dark-home .cinema-hero .sg-3 .signup-consenso input[type="checkbox"] { height: 16px; width: 16px; }
  body.mono-dark-home .cinema-hero .sg-3 .cinema-actions { margin-bottom: 7px; }
}

/* ============================================================
   29/7 — /dove-siamo/: l'avviso dell'apertura e la mappa (voci 13 e 17)
   ============================================================ */
/* L'avviso: deve farsi leggere ma non urlare. Oro sul fondo notte fa 7.36. */
body.mono-dark-home .location-apertura {
  border-left: 3px solid var(--mono-champagne);
  color: #fff9ee;
  font-size: 15px;
  line-height: 1.6;
  margin: 22px 0 0;
  max-width: 720px;
  padding: 4px 0 4px 16px;
}
body.mono-dark-home .location-apertura strong {
  color: var(--mono-champagne);
}
/* ============================================================
   LA MAPPA di /dove-siamo/ — GOOGLE MAPS (30/7)

   ⚠️⚠️ CORREZIONE DI UNA MIA AFFERMAZIONE SBAGLIATA DEL 29/7.
   Il 29/7 avevo messo OpenStreetMap scrivendo che la mappa di Google
   "avrebbe messo i suoi cookie, e allora sarebbe servito il banner".
   Il 30/7 l'ho VERIFICATO invece di darlo per buono, ed e' falso:
   l'incorporamento di Google Maps non manda NESSUN `Set-Cookie` al
   caricamento (controllate le intestazioni della risposta) e nel browser
   `document.cookie` resta vuoto. Il banner non serve comunque.
   Quello che resta vero: l'incorporamento manda l'indirizzo IP del
   visitatore a Google — ma il sito lo fa GIA' su tutte e 16 le pagine con i
   caratteri di Google, quindi qui non si aggiunge nessuna esposizione nuova.
   E' dichiarato sull'informativa privacy, voce per voce.
   Passata a Google su sua richiesta: "mi piace di piu'". E ha ragione anche
   funzionalmente: la gente sa gia' usarla, e ci trova dentro le indicazioni
   stradali e Street View senza uscire dalla pagina.

   ⚠️ LA QUERY E' COL NOME DELLA BOTTEGA, non col solo indirizzo.
   Verificato: con "Mono Bottega Gastronomica, Via Barletta 72D, Torino"
   Google trova la SCHEDA e restituisce 45.0479235,7.6432628 — le stesse
   coordinate del blocco dati della home. Col solo indirizzo il pin sarebbe
   anonimo e a 45.0477415,7.6430286, cioe' una ventina di metri piu' in la'.
   Se un domani il pin perde il nome della bottega, e' questa query che e'
   stata cambiata.

   `border` chiara perche' la mappa e' un rettangolo BIANCO su fondo notte e
   senza un bordo sembrerebbe un buco nella pagina.
   Rapporto 16:9 su computer, piu' alta e stretta sul telefono.
   ============================================================ */
body.mono-dark-home .location-mappa {
  border: 1px solid rgba(255, 249, 238, 0.22);
  border-radius: 16px;
  margin: 0 0 34px;
  max-width: 920px;
  overflow: hidden;
}
body.mono-dark-home .location-mappa iframe {
  aspect-ratio: 16 / 9;
  border: 0;
  display: block;
  width: 100%;
}
@media (max-width: 700px) {
  body.mono-dark-home .location-mappa iframe { aspect-ratio: 4 / 3; }
}

/* ============================================================
   30/7 — «COS'E' UNA BOTTEGA GASTRONOMICA» sulla home

   Sua osservazione, ed era un buco vero: il sito diceva «MONO e' una bottega
   gastronomica contemporanea» ma non diceva MAI cosa c'e' dentro. Il nome e'
   nato proprio perche' chiamarla gastronomia, o ristorante, o pasticceria era
   riduttivo: e' un formato che le tiene tutte insieme.
   Servono anche a Google: la scheda dell'attivita' dichiara hamburger,
   cocktail, pasta fresca e pasticceria, e Google confronta scheda e sito. Se
   il sito non li nomina, i due segnali tirano in direzioni diverse.

   La riga dell'elenco e' piu' piccola e piu' fitta del paragrafo: e' un
   inventario, non un pensiero. Il filetto oro a sinistra la lega al testo
   sopra senza farne un riquadro a se'.
   ============================================================ */
body.mono-dark-home .definition-elenco {
  border-left: 2px solid rgba(203, 167, 90, 0.4);
  font-size: 0.94em;
  line-height: 1.62;
  padding-left: 16px;
}

/* ============================================================
   30/7 — LE CINQUE DOMANDE PRATICHE su /dove-siamo/ (voce 17, 2a parte)

   Cercando nel testo di tutte le pagine non compariva MAI: posti a sedere,
   parcheggio, carrozzina, carta, bancomat, glutine. Sono le domande che una
   persona si fa PRIMA di uscire di casa: se non le trova qui, le chiede
   altrove o non viene. Risposte dettate da lui.

   E' una <dl>, non una griglia di schede: domanda e risposta sono legate, e
   per un lettore di schermo `dt`/`dd` dicono esattamente questo. Una scheda
   non lo direbbe.
   ============================================================ */
body.mono-dark-home .location-pratiche {
  display: grid;
  gap: 0;
  margin: 6px 0 0;
  max-width: 760px;
}
body.mono-dark-home .location-pratiche dt {
  color: var(--mono-champagne);
  font-size: clamp(15px, 1.3vw, 17px);
  font-weight: 700;
  margin-top: 22px;
}
body.mono-dark-home .location-pratiche dt:first-of-type { margin-top: 8px; }
body.mono-dark-home .location-pratiche dd {
  color: #fff9ee;
  line-height: 1.6;
  margin: 5px 0 0;
  /* la stanghetta oro lega visivamente la risposta alla sua domanda */
  border-left: 2px solid rgba(203, 167, 90, 0.35);
  padding-left: 14px;
}

/* ============================================================
   29/7 — IL QR SULLA PAGINA /app/ (voce 29)

   Sulla home il QR e' un <button> che apre un riquadro ingrandito. Qui e' un
   <div>: si inquadra e basta.
   ⚠️ Percio' vanno SPENTE le tre cose che `.app-qr` mette per farsi capire
   come cliccabile — `cursor: zoom-in`, il sollevamento al passaggio del mouse
   e l'ombra: un blocco che sembra un tasto e non fa niente e' peggio che non
   averlo. `:hover` e `:focus-visible` non li ereditera' comunque (non e'
   focalizzabile), ma il cursore a lente si', e va tolto a mano.
   ⚠️ NON riusare `.app-qr--colonna` da sola: quelle regole valgono solo come
   figlio diretto di `.app-gateway`, che su questa pagina non esiste.
   ============================================================ */
body.mono-dark-home .app-qr--statico {
  align-self: center;
  cursor: default;
  flex-direction: column;
  gap: 14px;
  margin-top: 26px;
  padding: 18px;
  text-align: center;
  transform: none;
}
body.mono-dark-home .app-qr--statico img {
  height: auto;
  padding: 10px;
  width: min(220px, 60vw);
}
body.mono-dark-home .app-qr--statico span {
  font-size: 14px;
  font-weight: 600;
}
