/* ============================================================================
   SITE — il CSS di QUESTA azienda
   ----------------------------------------------------------------------------
   Vuoto di proposito. Qui si scrive tutto il design: sezioni, griglie, layout,
   stati, componenti — seguendo gli assi assegnati nel BRIEF e la skill
   `ui-ux-pro-max`.

   Non si scrive in base.css: quello è il pavimento uguale per tutte le bozze.
   ========================================================================= */

/* ============================================================================
   CONVENZIONI — scritte dalla sessione 1 (Apertura), valgono per tutta la
   pagina. Le sezioni che seguono ereditano queste tre cose invece di
   reinventarle: il peso dei titoli, i pulsanti, la misura delle icone.
   ========================================================================= */

/* Anton esiste in un peso solo (400). base.css mette 600 su tutti i titoli e
   il browser lo simula ingrassando i contorni: il titolo esce sporco e più
   largo del previsto. Lo si annulla qui una volta per tutte — è scritto anche
   in tokens.css come cosa che site.css «deve» fare. */
h1,
h2,
h3,
h4 {
  font-weight: 400;
}

/* I due pulsanti della pagina. `--raggio-interattivo` è 0 (asse `spigolo`):
   il bordo netto è la forma del foglio tagliato, non una svista.
   Altezza minima 3rem = 48px, sopra il minimo di 44px per il dito. */
.bottone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  min-height: 3rem;
  padding: 0.75rem 1.5rem;
  border: var(--bordo-spessore) solid transparent;
  border-radius: var(--raggio-interattivo);
  font-size: var(--t-piccolo);
  font-weight: 500;
  letter-spacing: 0.04em;
  line-height: 1.2;
  text-decoration: none;
  cursor: pointer;
  transition:
    background-color var(--durata-breve) var(--curva),
    border-color var(--durata-breve) var(--curva),
    color var(--durata-breve) var(--curva);
}

.bottone--pieno {
  background: var(--accento);
  border-color: var(--accento);
  color: var(--su-accento);
}

/* Al passaggio scurisce, non si ingrandisce: uno `scale` su un pulsante in
   riga sposta quello accanto. `--accento-inchiostro` regge 7:1 col bianco. */
.bottone--pieno:hover {
  background: var(--accento-inchiostro);
  border-color: var(--accento-inchiostro);
}

.bottone--vuoto {
  background: transparent;
  border-color: var(--testo);
  color: var(--testo);
}

.bottone--vuoto:hover {
  background: var(--testo);
  color: var(--fondo);
}

/* ============================================================================
   CONVENZIONI DI SEZIONE — la parte che NON cambia da una sezione all'altra
   ----------------------------------------------------------------------------
   Le undici sezioni sono state scritte da sessioni diverse, e ognuna si era
   riscritta per conto suo la testata, l'occhiello, la riga di fonte e le
   etichette in maiuscolo: stessa figura, valori vicini ma mai uguali.
   L'occhiello usciva a 13px in quattro sezioni e a 15 in sei; le etichette di
   dato a 12, 13 o 15 con cinque tracciature diverse; la riga di fonte con due
   interlinee e due allineamenti; il titolo con tre misure di colonna.
   Da qui in giù i ruoli sono sei e valgono per tutta la pagina: testata,
   occhiello, titolo, guida, coda filettata, etichetta. Ogni sezione dichiara
   solo la propria eccezione — mai di nuovo la regola.
   ========================================================================= */

:root {
  /* Lo stacco dentro la testata e sotto la testata. Il secondo valore segue
     la densità assegnata dal piano (STUDIO.md §6b): le sezioni rade
     respirano di più anche qui dentro, non solo nel padding di sezione. */
  --gap-testata: clamp(0.6rem, 0.45rem + 0.5vw, 1rem);
  --stacco-testata: clamp(1.5rem, 1.1rem + 1.6vw, 2.75rem);
  --stacco-testata-rada: clamp(2.25rem, 1.5rem + 2.8vw, 4.25rem);

  /* Lo stacco di una coda (note, fonte, chiosa) dal corpo della sezione, e il
     respiro sotto il filetto che la introduce. */
  --stacco-coda: clamp(1.5rem, 1.1rem + 1.6vw, 2.5rem);
  --pad-filetto: clamp(1rem, 0.8rem + 0.6vw, 1.4rem);

  /* Le due tipografie di servizio. L'occhiello è l'etichetta di una SEZIONE e
     sta a --t-piccolo; l'etichetta è quella di un DATO dentro la sezione, e
     sta un gradino sotto. Due corpi e due tracciature al posto di tre e sei. */
  --t-etichetta: 0.8125rem;
  --traccia-occhiello: 0.3em;
  --traccia-etichetta: 0.16em;

  /* La colonna del titolo di sezione, misurata in caratteri di Anton. */
  --misura-titolo: 24ch;
  --misura-guida: 60ch;
}

/* ——— La testata ——————————————————————————————————————————————————————————
   Griglia con un gap solo: nessun figlio della testata porta margini propri.
   Erano dieci blocchi, sei a griglia e quattro a margini, con quattro stacchi
   diversi sotto. */
.cosa-disegno__testata,
.come-si-lavora__testata,
.tecniche__testata,
.lavori__testata,
.studio__testata,
.recensioni__testata,
.premi__testata,
.prezzi__testata,
.domande__testata,
.dove-siamo__testata {
  display: grid;
  gap: var(--gap-testata);
  margin-block-end: var(--stacco-testata);
}

/* Le quattro sezioni rade del piano §6b: 3, 6, 8 e 11. */
.come-si-lavora__testata,
.studio__testata,
.premi__testata,
.dove-siamo__testata {
  margin-block-end: var(--stacco-testata-rada);
}

/* ——— L'occhiello ————————————————————————————————————————————————————————
   Maiuscolo spaziatissimo nell'accento scurito (6,8:1 su --fondo). `flex`
   anche dove non c'è icona: così le sezioni che ce l'hanno e quelle che non
   ce l'hanno non sono due regole. */
.cosa-disegno__occhiello,
.come-si-lavora__occhiello,
.tecniche__occhiello,
.lavori__occhiello,
.studio__occhiello,
.recensioni__occhiello,
.premi__occhiello,
.prezzi__occhiello,
.domande__occhiello,
.dove-siamo__occhiello {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0;
  color: var(--accento-inchiostro);
  font-size: var(--t-piccolo);
  font-weight: 500;
  letter-spacing: var(--traccia-occhiello);
  line-height: 1.3;
  text-transform: uppercase;
}

/* La tracciatura dell'occhiello si applica anche DOPO l'icona, che per il
   motore è un carattere: senza questo l'icona resta staccata dal testo di
   0,3em in più del gap. */
.cosa-disegno__occhiello .icona,
.come-si-lavora__occhiello .icona,
.tecniche__occhiello .icona,
.lavori__occhiello .icona,
.studio__occhiello .icona,
.recensioni__occhiello .icona,
.premi__occhiello .icona,
.prezzi__occhiello .icona,
.domande__occhiello .icona,
.dove-siamo__occhiello .icona {
  --icona: 1.15rem;
  letter-spacing: normal;
}

/* ——— Il titolo ——————————————————————————————————————————————————————————
   Tutti allo stesso livello (h2), allo stesso corpo (--t-h2) e sulla stessa
   colonna. `font-family` arriva da base.css, `font-weight: 400` dalla regola
   in testa a questo file: qui non si ripetono. */
.cosa-disegno__titolo,
.come-si-lavora__titolo,
.tecniche__titolo,
.lavori__titolo,
.studio__titolo,
.recensioni__titolo,
.premi__titolo,
.prezzi__titolo,
.domande__titolo,
.dove-siamo__titolo {
  margin: 0;
  max-inline-size: var(--misura-titolo);
  font-size: var(--t-h2);
  line-height: 1.06;
  text-wrap: balance;
}

/* ——— Il paragrafo guida —————————————————————————————————————————————————— */
.cosa-disegno__guida,
.come-si-lavora__guida,
.tecniche__guida,
.lavori__guida,
.studio__guida,
.recensioni__guida,
.prezzi__guida,
.domande__guida,
.dove-siamo__guida {
  margin: 0;
  max-inline-size: var(--misura-guida);
  color: var(--testo-tenue);   /* 6,0:1 su --fondo */
  font-size: var(--t-corpo);
  line-height: 1.6;
}

/* ——— La coda filettata ———————————————————————————————————————————————————
   Il gesto che chiude cinque sezioni su undici: un filetto da un pixel e
   sotto una riga tenue a corpo piccolo. Cambia solo che cosa ci sta dentro —
   una prova sociale, tre note, una frase, una chiosa. */
.apertura__prove,
.come-si-lavora__coda,
.tecniche__note,
.lavori__coda,
.prezzi__chiosa {
  margin: 0;
  padding-block-start: var(--pad-filetto);
  border-block-start: var(--bordo-spessore) solid var(--bordo);
  color: var(--testo-tenue);
  font-size: var(--t-piccolo);
  line-height: 1.55;
}

/* Le quattro che stanno in fondo alla sezione prendono anche lo stacco. */
.come-si-lavora__coda,
.tecniche__note,
.lavori__coda,
.prezzi__chiosa {
  margin-block-start: var(--stacco-coda);
}

/* ——— La riga della fonte —————————————————————————————————————————————————
   Icona sospesa alla prima riga e testo tenue, sotto tutto. Quattro sezioni
   la usavano con due interlinee, due allineamenti e tre stacchi. */
.premi__fonte,
.prezzi__fonte,
.domande__fonte,
.dove-siamo__fonte {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  margin: var(--stacco-coda) 0 0;
  max-inline-size: 78ch;
  color: var(--testo-tenue);
  font-size: var(--t-piccolo);
  line-height: 1.55;
}

.premi__fonte .icona,
.prezzi__fonte .icona,
.domande__fonte .icona,
.dove-siamo__fonte .icona {
  --icona: 1.1rem;
  margin-block-start: 0.15em;
}

/* ——— L'etichetta di dato —————————————————————————————————————————————————
   Un gradino sotto l'occhiello: stesso maiuscolo, corpo e tracciatura più
   piccoli. `font-family` esplicito perché due di queste sono h3, e senza
   uscirebbero in Anton come i titoli. */
.tecniche__gergo,
.tecniche__etichetta,
.studio__ruolo,
.studio__dato dt,
.recensioni__numero dt,
.recensioni__pagella-titolo,
.prezzi__targa-etichetta,
.prezzi__unita,
.prezzi__termine,
.dove-siamo__etichetta {
  color: var(--testo-tenue);
  font-family: var(--font-testo);
  font-size: var(--t-etichetta);
  font-weight: 500;
  letter-spacing: var(--traccia-etichetta);
  line-height: 1.3;
  text-transform: uppercase;
}

/* ——— Il valore in Anton ——————————————————————————————————————————————————
   Due misure sole: il dato in riga (una prova sociale, una voce di listino) e
   il dato che è la figura di un pannello. Erano cinque regole con quattro
   corpi e tre interlinee. */
.apertura__prove strong,
.studio__dato dd,
.recensioni__voto,
.prezzi__valore,
.dove-siamo__valore {
  margin: 0;
  color: var(--testo);
  font-family: var(--font-titoli);
  font-weight: 400;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}

.apertura__prove strong,
.studio__dato dd,
.recensioni__voto {
  font-size: var(--t-h4);
}

.prezzi__valore,
.dove-siamo__valore {
  font-size: var(--t-h3);
}

/* ——— Il link di servizio con la freccia ——————————————————————————————————
   Due sezioni lo usano, e lo avevano scritto due volte. L'anello di fuoco
   NON si ridichiara: base.css dà già `2px solid var(--accento)` con 3px di
   scarto, che è esattamente quello che serviva. */
.domande__vai a .icona,
.dove-siamo__azione a .icona {
  --icona: 1rem;
  transition: transform var(--durata-breve) var(--curva);
}

.domande__vai a:hover .icona,
.domande__vai a:focus-visible .icona,
.dove-siamo__azione a:hover .icona,
.dove-siamo__azione a:focus-visible .icona {
  transform: translateX(2px);
}

/* ============================================================================
   1 — APERTURA
   ----------------------------------------------------------------------------
   Impianto: `.u-cover` a schermo pieno + `.u-imposter`. La foto riempie tutto
   il campo in `position:absolute`; il testo sta in un pannello opaco stretto
   appoggiato in basso a sinistra. Nessuna colonna, nessuna
   `grid-template-columns` a due valori: quella è la forma di quasi tutte le
   sezioni che vengono dopo, e qui servirebbe solo a far somigliare il primo
   schermo al secondo.

   Il pannello è opaco (alpha 1, non un vetro): il contrasto del claim non
   dipende da che cosa capita sotto di lui nella fotografia.
   ========================================================================= */

.apertura {
  --altezza: 100svh;
  position: relative;
  justify-content: flex-end;   /* il pannello scende in basso da solo */
  padding: 0;
  /* L'header è `fixed`: senza questo il bordo alto della foto gli finisce
     sotto. Con `border-box` la sezione resta alta esattamente uno schermo. */
  padding-block-start: var(--altezza-header, 4rem);
  overflow: hidden;
  background: var(--fondo-alt);   /* si vede solo finché la foto non è pronta */
}

.apertura__foto {
  position: absolute;
  inset: 0;
  z-index: 0;
  inline-size: 100%;
  block-size: 100%;
  object-fit: cover;
  object-position: 50% 50%;
}

/* Il velo: bianco pieno nell'angolo in basso a sinistra, trasparente verso
   l'alto a destra, dove la foto deve restare foto. Due sfumature invece di
   una diagonale sola perché il taglio deve seguire i due bordi del pannello,
   non una linea a 45°. */
.apertura__velo {
  position: absolute;
  inset: 0;
  z-index: 0;
  background:
    linear-gradient(to top,
      rgba(253, 253, 253, 0.88) 0%,
      rgba(253, 253, 253, 0.3) 38%,
      rgba(253, 253, 253, 0) 64%),
    linear-gradient(to right,
      rgba(253, 253, 253, 0.55) 0%,
      rgba(253, 253, 253, 0) 58%);
}

.apertura__ancora {
  position: relative;
  z-index: 1;
  margin-block-end: clamp(1.5rem, 0.9rem + 2.4vw, 3.5rem);
}

.apertura__pannello {
  display: grid;
  gap: clamp(1.15rem, 0.85rem + 0.9vw, 1.85rem);
  inline-size: min(100%, 46rem);
  padding: clamp(1.5rem, 1rem + 2vw, 3rem);
  background: var(--fondo);
  border: var(--bordo-spessore) solid var(--bordo);
}

/* ——— Il marchio, in tipografia ————————————————————————————————————————————
   Il logo grafico è già nell'intestazione, due centimetri più sopra:
   ripeterlo qui sarebbe lo stesso segno due volte nella stessa schermata.
   Quello che si ripete è il *logotipo* — maiuscolo, lineare, spaziatissimo,
   le due parole attaccate, come nel file del marchio. */
.apertura__marchio {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 1.25rem;
  font-size: var(--t-piccolo);
  line-height: 1.4;
}

.apertura__logotipo {
  color: var(--accento-inchiostro);
  font-weight: 500;
  letter-spacing: 0.3em;
  text-transform: uppercase;
}

.apertura__luogo {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  color: var(--testo-tenue);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

/* ——— Il claim ————————————————————————————————————————————————————————————
   È l'unico titolo della pagina autorizzato a uscire dalla scala: --t-h1 si
   ferma a 4,25rem, questo arriva a 4,75rem. Interlinea più stretta di
   --interlinea-titoli perché a questo corpo 1,22 apre buchi fra le righe.
   Il margine di base.css sparisce: la distanza la dà il `gap` della griglia. */
.apertura__claim {
  margin: 0;
  font-size: clamp(2.375rem, 1.1rem + 4.6vw, 4.75rem);
  line-height: 1.04;
  letter-spacing: -0.005em;
  text-wrap: balance;
}

.apertura__sottotitolo {
  max-inline-size: 48ch;
  color: var(--testo-tenue);
  font-size: clamp(1.0625rem, 1rem + 0.3vw, 1.25rem);
  line-height: 1.62;
}

.apertura__azioni {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

/* ——— La prova sociale ————————————————————————————————————————————————————
   Il filetto sopra separa i numeri dall'invito senza aggiungere un blocco.
   Il «5,0» in Anton: è il dato più forte che questa azienda ha, e a corpo di
   testo si perderebbe in mezzo alla riga. */
.apertura__prove {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem 2rem;
}

.apertura__prove li {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}

.apertura__prove .icona {
  color: var(--accento-inchiostro);
}


/* Sotto i 48rem il pannello prende tutta la gronda e la foto si stringe: il
   soggetto (la busta con la ceralacca) sta al centro, quindi il ritaglio
   resta quello giusto. Il velo si alza perché su uno schermo stretto il
   pannello copre più campo e il bordo fra i due deve restare morbido. */
@media (max-width: 48rem) {
  .apertura__velo {
    background:
      linear-gradient(to top,
        rgba(253, 253, 253, 0.9) 0%,
        rgba(253, 253, 253, 0.35) 50%,
        rgba(253, 253, 253, 0) 78%);
  }

  .apertura__azioni .bottone {
    flex: 1 1 14rem;
  }
}

/* ============================================================================
   2 — CHE COSA DISEGNO
   ----------------------------------------------------------------------------
   Impianto: `.u-bento`. Non è la forma dell'apertura e non è quella della
   sezione 3: là non c'è griglia, sotto c'è una riga sola di quattro passi.
   Qui la griglia È la sezione, e dice il messaggio da sola — dodici caselle
   piene si leggono come «tanta roba» prima ancora di leggere un titolo.

   Il filetto è CONDIVISO, non ripetuto. Le tessere non hanno un bordo
   ciascuna: il `gap` è di 1px e sotto c'è `--bordo`, così fra due tessere
   passa una riga sola invece di due appiccicate. È il reticolo di un foglio
   tagliato, che è esattamente quello che questa azienda vende.

   Il conto delle celle torna a ogni larghezza — 4 colonne × 3 righe, 3 × 4,
   2 × 6, e a colonna sola 9 righe (sotto i 40rem base.css toglie lo span
   alla tessera grande). Non resta mai una casella vuota che spezzi il
   reticolo: è il motivo per cui i 10 prodotti stanno in 9 tessere.
   ========================================================================= */

/* ——— La griglia ——————————————————————————————————————————————————————————
   `--minimo: 17rem` non è un numero a caso: dentro `--larghezza-max` (78rem)
   fa cadere `auto-fit` su 4 colonne e mai su 5, che è l'unica larghezza in
   cui una tessera 2x2 più otto piccole riempie le righe esatte.
   `--riga: 13rem` dà alla tessera grande, su due righe, un campo quasi 3/2:
   la foto ci entra praticamente senza taglio. */
.cosa-disegno__bento {
  --minimo: 17rem;
  --riga: 13rem;
  --gap: var(--bordo-spessore);
  margin: 0;
  padding: 0;
  list-style: none;
  background: var(--bordo);
  border: var(--bordo-spessore) solid var(--bordo);
}

.cosa-disegno__tessera {
  display: grid;
  align-content: space-between;
  gap: clamp(1rem, 0.8rem + 0.8vw, 1.75rem);
  padding: clamp(1rem, 0.8rem + 0.6vw, 1.4rem);
  background: var(--fondo);
}

/* Il bollo: quadrato rosso pieno con il segno bianco dentro. È il logo
   ridotto a texture — nove volte in una griglia non urla, riempie. L'icona
   sta INLINE nell'SVG, quindi `currentColor` è il bianco del bollo; dentro
   un <img> sarebbe nera su rosso e non si vedrebbe. */
.cosa-disegno__bollo {
  display: grid;
  place-items: center;
  inline-size: 2.5rem;
  block-size: 2.5rem;
  background: var(--accento);
  color: var(--su-accento);
}

.cosa-disegno__bollo .icona {
  --icona: 1.375rem;
  vertical-align: 0;
}

.cosa-disegno__testo {
  display: grid;
  gap: 0.4rem;
}

.cosa-disegno__nome {
  margin: 0;
  font-size: var(--t-h4);
  line-height: 1.14;
}

.cosa-disegno__riga {
  margin: 0;
  color: var(--testo-tenue);   /* 6,0:1 su --fondo */
  font-size: var(--t-piccolo);
  line-height: 1.55;
}

/* ——— La tessera grande ————————————————————————————————————————————————————
   La foto è in `position:absolute`. In flusso alzerebbe le due righe che la
   tessera attraversa, e le tessere piccole accanto diventerebbero riquadri
   vuoti alti quanto lei.
   La lastra col testo è a filo dei tre bordi, con un filetto sopra: non è il
   pannello sospeso dell'apertura, è la fascia di una didascalia. */
.cosa-disegno__tessera--grande {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 0;
  padding: 0;
  overflow: hidden;
}

.cosa-disegno__foto {
  position: absolute;
  inset: 0;
  z-index: 0;
  inline-size: 100%;
  block-size: 100%;
  object-fit: cover;
  object-position: 50% 45%;
}

.cosa-disegno__lastra {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.35rem 1rem;
  inline-size: 100%;
  padding: clamp(1rem, 0.8rem + 0.6vw, 1.4rem);
  background: var(--fondo);
  border-block-start: var(--bordo-spessore) solid var(--bordo);
}

.cosa-disegno__lastra .cosa-disegno__bollo {
  grid-row: span 2;
}

.cosa-disegno__lastra .cosa-disegno__nome {
  align-self: end;
  font-size: var(--t-h3);
}

.cosa-disegno__lastra .cosa-disegno__riga {
  max-inline-size: 52ch;
}

/* ——— A colonna sola ——————————————————————————————————————————————————————
   Alla stessa soglia in cui base.css toglie lo span alla tessera grande.
   Qui la foto torna IN FLUSSO con la sua proporzione: non c'è più nessuna
   riga condivisa da gonfiare, e sovrapposta a una tessera alta 13rem
   resterebbe una striscia di fotografia sotto la lastra. */
@media (max-width: 40rem) {
  .cosa-disegno__bento {
    --riga: 7rem;
  }

  .cosa-disegno__tessera--grande {
    display: block;
    overflow: visible;
  }

  .cosa-disegno__foto {
    position: static;
    display: block;
    aspect-ratio: 3 / 2;
    block-size: auto;
  }

  .cosa-disegno__lastra .cosa-disegno__nome {
    font-size: var(--t-h4);
  }
}

/* ============================================================================
   3 — COME SI ARRIVA ALLA STAMPA
   ----------------------------------------------------------------------------
   Impianto: elenco numerato ORIZZONTALE. Quattro colonne paritarie, il numero
   in Anton sopra, un filetto rosso continuo sotto i numeri che attraversa
   tutta la sezione, e il testo appeso sotto il filetto.

   Non è la griglia della sezione 2 e non è la tabella della 4: non c'è nessuna
   `grid-template-columns` a due valori, non ci sono schede con un bordo
   ciascuna, non c'è un reticolo. C'è una riga sola, e la cosa che si vede per
   prima è una linea rossa lunga quanto la pagina con quattro numeri sopra.
   Densità rada: quattro voci dove sopra ce n'erano dodici, e il doppio d'aria
   fra testata ed elenco.

   Il filetto è un elemento vero e unico (`[data-filo-passi]`), non quattro
   pezzi e non uno pseudo-elemento: la sessione del movimento deve poterlo
   prendere e disegnarlo con un `scaleX` solo (STUDIO.md §6c). Qui c'è solo
   `transform-origin`, mai un `transform`: a riposo — senza JS, o con
   `prefers-reduced-motion` — la linea è già intera.

   La geometria del filetto è calcolata, non indovinata: il numero occupa una
   riga alta esattamente `--corpo-numero` (`line-height: 1`), il nodo una riga
   alta `--riga-nodo`, e il filetto cade nel mezzo della seconda. Cambiando il
   corpo del numero la linea si sposta da sola e i nodi restano sopra di lei.
   ========================================================================= */

/* ——— La pista: il filetto e i quattro passi ——————————————————————————————
   Le misure stanno qui e non sui figli perché il filetto (fratello dell'<ol>)
   e i nodi (nipoti) devono leggere gli stessi numeri. */
.come-si-lavora__pista {
  --corpo-numero: clamp(3rem, 1.9rem + 3.4vw, 4.5rem);
  --riga-nodo: 1.75rem;
  --nodo: 0.875rem;
  --filo-spessore: 2px;
  position: relative;
}

/* Da bordo a bordo del contenitore, non solo da un numero all'altro: deve
   passare sotto tutti e quattro e uscire dal quarto, altrimenti è un
   sottolineato lungo e non una linea che attraversa.
   Rosso pieno: è un segno, non un testo, e su --fondo un filetto di 2px in
   --accento sta a 4,45:1, molto sopra il 3:1 che serve a un elemento
   grafico. */
.come-si-lavora__filo {
  position: absolute;
  z-index: 0;
  inset-inline: 0;
  top: calc(var(--corpo-numero) + (var(--riga-nodo) - var(--filo-spessore)) / 2);
  block-size: var(--filo-spessore);
  background: var(--accento);
  transform-origin: left center;
}

.come-si-lavora__passi {
  position: relative;
  z-index: 1;   /* i nodi stanno SOPRA il filetto, non sotto */
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  column-gap: clamp(1.25rem, 0.3rem + 2.6vw, 3rem);
  margin: 0;
  padding: 0;
  list-style: none;
}

/* `list-style: none` toglie a Safari la semantica di lista: `role="list"`
   nell'HTML gliela restituisce. Il numero visibile è testo vero (01…04), non
   un marcatore generato: è contenuto, e va letto anche ad alta voce. */
.come-si-lavora__passo {
  display: grid;
  grid-template-rows: var(--corpo-numero) var(--riga-nodo) auto;
  row-gap: 0;
}

/* Anton, e nell'accento pieno: STUDIO.md autorizza --accento come colore dei
   titoli grandi (4,45:1 su --fondo, sopra il 4,5:1 alla misura di un testo
   grande, che ne chiede 3). A corpo di testo servirebbe
   --accento-inchiostro — qui siamo a 48-72px.
   `line-height: 1` non è estetica: rende la riga alta esattamente
   --corpo-numero, che è il valore su cui il filetto calcola il suo `top`. */
.come-si-lavora__numero {
  align-self: end;
  color: var(--accento);
  font-family: var(--font-titoli);
  font-size: var(--corpo-numero);
  font-weight: 400;
  line-height: 1;
  letter-spacing: -0.01em;
}

/* Il quadrato del marchio, ridotto a tacca di misura. Pieno e più spesso
   della linea, così si legge come nodo e non come ispessimento. */
.come-si-lavora__nodo {
  align-self: center;
  justify-self: start;
  inline-size: var(--nodo);
  block-size: var(--nodo);
  background: var(--accento);
}

.come-si-lavora__testo {
  display: grid;
  gap: 0.45rem;
  padding-block-start: clamp(0.85rem, 0.7rem + 0.5vw, 1.35rem);
}

/* Griglia e non flex: il titolo va a capo su una o due righe a seconda della
   larghezza, e con `align-items: start` l'icona resta appesa alla prima riga
   invece di scivolare al centro di due. */
.come-si-lavora__nome {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: start;
  gap: 0.55rem;
  margin: 0;
  font-size: var(--t-h4);
  line-height: 1.18;
}

.come-si-lavora__nome .icona {
  --icona: 1.2rem;
  margin-block-start: 0.15em;
  color: var(--accento-inchiostro);   /* 6,8:1: qui è un segno a corpo piccolo */
  vertical-align: 0;
}

.come-si-lavora__riga {
  margin: 0;
  color: var(--testo-tenue);
  font-size: var(--t-piccolo);
  line-height: 1.55;
}

.come-si-lavora__riga a {
  color: var(--accento-inchiostro);
  text-underline-offset: 0.2em;
}

/* La coda: una riga sola e il telefono vero. Il filetto sopra è lo stesso
   gesto della prova sociale in apertura — separa senza aprire un blocco. Il
   pulsante è quello vuoto, non quello pieno: l'azione primaria è già nel
   primo schermo e qui non deve competere. */
.come-si-lavora__coda {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: clamp(0.9rem, 0.6rem + 1vw, 1.75rem);
}

.come-si-lavora__coda span {
  max-inline-size: 48ch;
}

/* ——— Sotto i 62rem: la stessa linea, girata ——————————————————————————————
   Quattro colonne da 1fr sotto i 990px darebbero titoli di due parole spezzati
   in quattro righe. L'elenco va in colonna e il filetto diventa verticale: è
   lo stesso disegno ruotato — numero da una parte, nodo sulla linea, testo
   dall'altra — non un secondo impianto.
   La `x` del filetto è calcolata come lo era la `y`: larghezza della colonna
   del numero + il vuoto + metà della colonna del nodo. */
@media (max-width: 62rem) {
  .come-si-lavora__pista {
    --corpo-numero: clamp(2.25rem, 1.85rem + 1.6vw, 2.75rem);
    --colonna-numero: 3.5rem;
    --vuoto-nodo: 0.9rem;
  }

  .come-si-lavora__filo {
    inset-inline: auto;
    inset-inline-start: calc(
      var(--colonna-numero) + var(--vuoto-nodo) +
      (var(--riga-nodo) - var(--filo-spessore)) / 2
    );
    top: 0;
    bottom: 0;
    inline-size: var(--filo-spessore);
    block-size: auto;
    transform-origin: center top;
  }

  .come-si-lavora__passi {
    grid-template-columns: 1fr;
    row-gap: clamp(1.75rem, 1.4rem + 1.6vw, 2.5rem);
  }

  .come-si-lavora__passo {
    grid-template-columns: var(--colonna-numero) var(--riga-nodo) 1fr;
    grid-template-rows: auto;
    column-gap: var(--vuoto-nodo);
  }

  /* Allineato a destra: i numeri si appoggiano al filetto invece di
     galleggiare a sinistra di una colonna vuota. */
  .come-si-lavora__numero {
    align-self: start;
    text-align: end;
  }

  /* Il nodo scende all'altezza della metà del numero, così sta sulla linea
     dov'è il passo e non in cima al blocco di testo. */
  .come-si-lavora__nodo {
    align-self: start;
    justify-self: center;
    margin-block-start: calc((var(--corpo-numero) - var(--nodo)) / 2);
  }

  .come-si-lavora__testo {
    padding-block-start: 0;
  }
}

/* ============================================================================
   4 — LE TECNICHE DI STAMPA
   ----------------------------------------------------------------------------
   Impianto: una TABELLA VERA, a bande alternate. Non è il reticolo della
   sezione 2 (là il filetto è continuo e chiude ogni cella su quattro lati, qui
   non c'è nemmeno una riga verticale) e non è la riga di passi della 3 (là
   quattro colonne con molta aria, qui quattro fasce orizzontali fitte). Quello
   che si vede scorrendo senza leggere sono quattro bande larghe quanto la
   pagina: in tutta la pagina non c'è nient'altro di questa forma.

   Le bande fanno il lavoro che in una tabella farebbero le righe di
   separazione, e lo fanno meglio: l'occhio segue una riga lunga 78rem senza
   perdere il rigo, che è l'unico difetto vero di una tabella a tre colonne
   larga così. Le verticali non servono — le colonne sono già separate da
   quaranta caratteri di vuoto.

   Il fondo delle bande è `--fondo-alt` (#eceff1), lo stesso della palette.
   `--testo-tenue` sopra ci sta a 5,2:1 — meno dei 6,0:1 che ha su `--fondo`,
   ma sopra il 4,5:1 richiesto. È il motivo per cui la colonna «com'è» resta
   in `--testo-tenue` e non scende oltre.
   ========================================================================= */

/* ——— La tabella ——————————————————————————————————————————————————————————
   Le bande sbordano di `--pad-cella` da tutt'e due i lati, e il testo dentro
   rientra della stessa misura: così la prima lettera di «Tipografica» cade
   esatta sotto la prima lettera del titolo, invece che spostata di un padding.
   Il debordo (max 1,15rem) resta sempre dentro la gronda (min 1,25rem),
   quindi non tocca mai il bordo dello schermo e non apre scorrimento
   orizzontale. */
.tecniche__tabella {
  --pad-cella: clamp(0.85rem, 0.7rem + 0.5vw, 1.15rem);
  --pad-riga: clamp(0.9rem, 0.75rem + 0.6vw, 1.35rem);
  inline-size: calc(100% + var(--pad-cella) * 2);
  margin-inline: calc(var(--pad-cella) * -1);
  table-layout: fixed;
  border-collapse: collapse;
}

/* Le larghezze stanno sulla riga di testata, che è l'unica che le decide con
   `table-layout: fixed`. La colonna della tecnica è la più stretta: porta due
   parole e un'icona, non un discorso. */
.tecniche__tabella thead th:nth-child(1) { inline-size: 21%; }
.tecniche__tabella thead th:nth-child(2) { inline-size: 40%; }
.tecniche__tabella thead th:nth-child(3) { inline-size: 39%; }

.tecniche__tabella th,
.tecniche__tabella td {
  padding: var(--pad-riga) var(--pad-cella);
  font-weight: 400;
  text-align: start;
  vertical-align: top;
}

/* Le intestazioni di colonna hanno lo stesso trattamento dell'occhiello:
   maiuscolo, spaziatissimo, nell'accento scurito (6,8:1). Il filetto sotto è
   nero e spesso 2px — è la riga di testata di un listino stampato. Rosso no,
   di proposito: una linea rossa orizzontale di 2px è già il segno della
   sezione 3, e ripeterla qui accosterebbe le due sezioni proprio nel punto in
   cui devono distinguersi. */
.tecniche__tabella thead th {
  padding-block: 0 0.85rem;
  border-block-end: 2px solid var(--testo);
  color: var(--accento-inchiostro);
  font-size: var(--t-etichetta);
  font-weight: 500;
  letter-spacing: var(--traccia-etichetta);
  line-height: 1.3;
  text-transform: uppercase;
  vertical-align: bottom;
}

/* Dispari e non pari: la prima riga è già una banda, e la forma della sezione
   si legge dal primo colpo d'occhio invece che dalla seconda riga in giù. */
.tecniche__tabella tbody tr:nth-child(odd) {
  background: var(--fondo-alt);
}

/* La riga di chiusura: senza, l'ultima fascia bianca finisce nel nulla e la
   tabella sembra tagliata. */
.tecniche__tabella tbody tr:last-child th,
.tecniche__tabella tbody tr:last-child td {
  border-block-end: var(--bordo-spessore) solid var(--bordo);
}

/* ——— La colonna della tecnica ————————————————————————————————————————————
   Il nome in Anton: è l'unica cosa di questa sezione che va letta a distanza,
   e in quattro righe di tabella fa da àncora per l'occhio. */
.tecniche__segno {
  --icona: 1.5rem;
  margin-block-end: 0.7rem;
  color: var(--accento-inchiostro);   /* 6,8:1 su --fondo, 6,0:1 sulla banda */
}

.tecniche__nome {
  display: block;
  font-family: var(--font-titoli);
  font-size: var(--t-h4);
  font-weight: 400;
  line-height: 1.1;
}

.tecniche__gergo {
  display: block;
  margin-block-start: 0.35rem;
}

/* ——— Le due colonne di destra ————————————————————————————————————————————
   Pesi diversi apposta: «com'è» è la spiegazione e sta in tenue, «quando
   conviene» è la risposta alla domanda del visitatore — capire cosa può
   chiedere — e sta nell'inchiostro pieno. */
.tecniche__come,
.tecniche__conviene {
  font-size: var(--t-piccolo);
  line-height: 1.55;
}

.tecniche__come {
  color: var(--testo-tenue);
}

.tecniche__conviene {
  color: var(--testo);
}

/* L'etichetta di colonna ripetuta dentro la cella serve solo quando la testata
   sparisce, cioè da 60rem in giù. Sopra non esiste. */
.tecniche__etichetta {
  display: none;
}

/* ——— Le note di coda ————————————————————————————————————————————————————
   Filetto sopra e voci in riga: è lo stesso gesto della prova sociale in
   apertura e della coda della sezione 3. Nessun pulsante — il telefono è due
   sezioni più su e nel primo schermo, e qui competerebbe con la tabella. */
.tecniche__note {
  display: flex;
  flex-wrap: wrap;
  gap: 0.85rem 2.25rem;
}

.tecniche__note li {
  display: flex;
  align-items: flex-start;
  gap: 0.55rem;
  flex: 1 1 18rem;
  max-inline-size: 40ch;
}

.tecniche__note .icona {
  --icona: 1.15rem;
  margin-block-start: 0.2em;
  color: var(--accento-inchiostro);
  vertical-align: 0;
}

/* ——— Sotto i 60rem: la tabella si impila ————————————————————————————————
   A 960px le tre colonne stanno sotto i 200px l'una e la prosa si sfilaccia in
   parole singole. Le righe diventano quattro blocchi impilati: nome della
   tecnica in cima, poi le due voci, ognuna preceduta dalla sua etichetta.
   La banda alternata resta — è quella che tiene insieme il blocco e che
   distingue una riga dalla successiva.

   Non si passa a scorrimento orizzontale, che sarebbe la soluzione svelta:
   la sezione qui sotto («I lavori») è una galleria che scorre di lato, e due
   sezioni consecutive che si trascinano in orizzontale si leggerebbero come
   la stessa cosa.

   La testata resta nel documento, solo ritagliata via: `display:none` la
   toglierebbe anche ai lettori di schermo, e le celle perderebbero
   l'intestazione di colonna proprio dove serve di più. Le etichette visibili
   dentro le celle sono `aria-hidden`, quindi nessuno le sente due volte. */
@media (max-width: 60rem) {
  .tecniche__tabella,
  .tecniche__tabella tbody,
  .tecniche__tabella tr,
  .tecniche__tabella th,
  .tecniche__tabella td {
    display: block;
  }

  .tecniche__tabella thead {
    position: absolute;
    inline-size: 1px;
    block-size: 1px;
    padding: 0;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }

  .tecniche__tabella tbody tr {
    padding-block: var(--pad-riga);
  }

  .tecniche__tabella tbody tr + tr {
    border-block-start: var(--bordo-spessore) solid var(--bordo);
  }

  /* Il padding verticale passa alla riga: sulle celle raddoppierebbe a ogni
     giunzione. Quello orizzontale resta, ed è il rientro delle bande. */
  .tecniche__tabella th,
  .tecniche__tabella td {
    padding-block: 0;
  }

  .tecniche__tabella tbody tr:last-child th,
  .tecniche__tabella tbody tr:last-child td {
    border-block-end: 0;
  }

  .tecniche__tabella tbody tr:last-child {
    border-block-end: var(--bordo-spessore) solid var(--bordo);
  }

  /* Il nome torna in riga con l'icona: impilato occuperebbe tre righe in cima
     a ogni blocco per due parole. */
  .tecniche__tabella .tecniche__tecnica {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.15rem 0.7rem;
    padding-block-end: 0.9rem;
  }

  .tecniche__segno {
    margin-block-end: 0;
  }

  .tecniche__gergo {
    margin-block-start: 0;
  }

  /* Discendente e non classe secca: la regola qui sopra che azzera
     `padding-block` sulle celle è `.tecniche__tabella td`, che con una classe
     e un elemento pesa più di `.tecniche__come` da sola — l'ordine nel file
     non basterebbe a farla passare. */
  .tecniche__tabella .tecniche__come {
    padding-block-end: 0.9rem;
  }

  .tecniche__etichetta {
    display: block;
    margin-block-end: 0.3rem;
    color: var(--accento-inchiostro);
  }
}

/* ============================================================================
   5 — I LAVORI
   ----------------------------------------------------------------------------
   Impianto: la composizione assegnata — griglia di card con l'icona grande in
   alto al posto della foto e testo breve sotto, su `.u-switcher`. Otto voci,
   densità fitta.

   Niente campiture e niente riquadri, di proposito. La 2 è un reticolo di
   tessere piene tenute insieme da un filetto condiviso, la 4 è una tabella a
   bande larghe quanto la pagina: sono le due forme *piene* della pagina, una
   di fianco all'altra. Questa è la forma *vuota* — solo otto filetti di testa
   e otto disegni rossi grandi su bianco. Scorrendo senza leggere è una tavola
   di pittogrammi, e non somiglia né al reticolo né alle fasce.

   Il rosso pieno `--accento` sul segno e non `--accento-inchiostro`: l'icona è
   un elemento grafico, non testo, e il minimo che deve reggere è 3:1 (qui
   4,5:1 su --fondo). È la stessa scelta del filetto della sezione 3.

   Il conto delle celle torna a ogni larghezza, che è la trappola di un
   impianto a flex che va a capo: otto voci con un rigo spaiato in coda
   diventerebbero due card larghe il doppio delle altre. Le percentuali qui
   sotto lo impediscono — 21% lascia passare quattro voci per riga e blocca la
   quinta (105% non ci sta), 44% ne lascia passare due e blocca la terza (132%
   non ci sta), e sotto `--soglia-switcher` base.css le porta a colonna tutte
   insieme. Otto voci fanno quindi 4+4, 2+2+2+2 oppure 8 righe singole: mai
   una riga monca.
   ========================================================================= */

/* ——— La griglia ——————————————————————————————————————————————————————————
   Solo custom property: la regola di `.u-switcher` non si riscrive. La soglia
   è 26rem perché a 375px il contenuto del contenitore misura ~21rem e deve
   già essere a colonna sola. */
.lavori__elenco {
  --gap: clamp(1.25rem, 0.9rem + 1.4vw, 2.25rem);
  --soglia-switcher: 26rem;
  margin: 0;
  padding: 0;
}

/* Il filetto sta SOPRA la card, non intorno: è il rigo di una tavola di
   caratteri, non il bordo di una scheda. Quattro filetti staccati per riga si
   distinguono a colpo d'occhio dalle fasce piene della tabella sopra, che
   sono larghe quanto la pagina e non si interrompono mai. */
.lavori__lavorazione {
  min-inline-size: 21%;
  padding-block-start: clamp(0.9rem, 0.75rem + 0.5vw, 1.25rem);
  border-block-start: var(--bordo-spessore) solid var(--bordo);
}

/* Il segno è la cosa più grande della sezione: 40→56px di tratto iconoir da
   1,5. `display:block` sull'svg e `vertical-align:0` perché il -0.15em che
   base.css mette per allineare l'icona alla linea di base del testo, qui che
   l'icona è sola dentro uno span, lascerebbe sotto una riga di vuoto. */
.lavori__segno {
  --icona: clamp(2.5rem, 1.9rem + 2.2vw, 3.5rem);
  display: block;
  margin-block-end: clamp(0.7rem, 0.6rem + 0.4vw, 1rem);
  color: var(--accento);
}

.lavori__segno .icona {
  display: block;
  vertical-align: 0;
}

.lavori__nome {
  margin: 0 0 0.45rem;
  font-size: var(--t-h4);
  line-height: 1.1;
}

.lavori__riga {
  margin: 0;
  color: var(--testo-tenue);
  font-size: var(--t-piccolo);
  line-height: 1.55;
}

/* ——— La coda ————————————————————————————————————————————————————————————
   Filetto sopra e una frase sola in colonna di lettura: è il gesto delle note
   della sezione 4 senza le tre voci affiancate. Nessun pulsante — il telefono
   è nel primo schermo e nella coda della 3, e qui competerebbe con gli otto
   segni. */
.lavori__coda {
  max-inline-size: var(--misura-guida);
}

.lavori__coda a {
  color: var(--accento-inchiostro);
  text-underline-offset: 0.2em;
}

/* Sotto i 60rem quattro colonne darebbero card da ~200px con «Sigillo col
   monogramma» spezzato su tre righe. Due per riga, e il conto resta pari. */
@media (max-width: 60rem) {
  .lavori__lavorazione {
    min-inline-size: 44%;
  }
}

/* ============================================================================
   6 — LO STUDIO, E CHI CI LAVORA
   ----------------------------------------------------------------------------
   Impianto: la composizione assegnata — due file. Sopra una `grid` di tre voci
   con foto, sotto una fascia su `.u-cover` con `--altezza` ridotta. Rada.

   Perché non somiglia a niente di quello che ha intorno. La 5, appena sopra, è
   una tavola di otto pittogrammi rossi su bianco senza campiture e senza
   riquadri; la 7, appena sotto, sarà una griglia di tre schede citazione. Qui
   il peso sta tutto nelle FOTOGRAFIE: tre immagini verticali affiancate, senza
   riquadro e senza fondo, e sotto una lastra piena larga quanto il
   contenitore. Scorrendo senza leggere sono tre foto e un blocco grigio — la
   pagina fin qui non ha mai avuto né tre immagini in riga né una campitura di
   quella dimensione.

   La lastra è `--fondo-alt`, non l'accento: la fascia piena rossa è la sezione
   8, due sotto, ed è l'unico punto in cui il marchio deve alzare la voce. Qui
   il grigio freddo della palette entra in pagina per la prima volta come
   superficie — nell'apertura c'era solo come fondo di attesa della foto.

   Contrasti misurati su `--fondo-alt` (#eceff1), che è più scuro di `--fondo`
   e quindi va verificato a parte: `--testo` 15,5:1, `--testo-tenue` 5,4:1,
   `--accento-inchiostro` 6,0:1. Tutti sopra 4,5:1. Il rosso pieno `--accento`
   su questo grigio NON è inchiostro di testo da nessuna parte: sta solo sotto
   il pulsante, con il bianco sopra.
   ========================================================================= */

/* ——— Fila 1: il trittico ——————————————————————————————————————————————————
   `minmax(0, 1fr)` e non `1fr`: la misura minima automatica di una colonna di
   griglia è il contenuto, e una parola lunga («progettazione») basta a farla
   sfondare oltre la sua terza parte. Tre colonne o una sola, mai due: con tre
   voci, due colonne lasciano un rigo spaiato largo il doppio. */
.studio__voci {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(1.5rem, 1.1rem + 1.8vw, 2.75rem);
  margin: 0;
  padding: 0;
  list-style: none;
}

.studio__voce {
  display: grid;
  align-content: start;
  gap: clamp(0.55rem, 0.45rem + 0.4vw, 0.85rem);
}

/* La foto in `.u-frame`: proporzione fissa e ritaglio, così le tre colonne
   restano alte uguali senza che l'immagine più alta trascini le altre. In
   verticale (4/5) di proposito — il formato che nessun'altra sezione usa. */
.studio__cornice {
  --rapporto: 4 / 5;
  margin-block-end: clamp(0.35rem, 0.3rem + 0.3vw, 0.7rem);
  background: var(--fondo-alt);   /* si vede solo finché la foto non è pronta */
}

/* L'etichetta della voce: stesso gesto dell'occhiello di sezione, un gradino
   sotto — 0,24em invece di 0,3em, come le etichette di colonna della 4. */
.studio__ruolo {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0;
  color: var(--accento-inchiostro);
}

/* Tre verbi, un soggetto solo: è il messaggio della sezione fatto tipografia.
   `--t-h3` e non `--t-h4` come nella 5: là le voci erano otto e fitte, qui
   sono tre e rade, e devono reggere il confronto con una fotografia. */
.studio__nome {
  margin: 0;
  font-size: var(--t-h3);
  line-height: 1.1;
}

.studio__riga {
  margin: 0;
  color: var(--testo-tenue);
  font-size: var(--t-corpo);
  line-height: 1.6;
}

/* ——— Fila 2: la fascia ————————————————————————————————————————————————————
   `.u-cover` ridotta. Non si riscrive la regola del pavimento: si passa
   `--altezza`, e `justify-content: space-between` fa il resto — la frase resta
   attaccata al bordo alto, dati e invito scendono in fondo. Il `padding` di
   `.u-cover` è `--spazio-blocco`, troppo stretto per una campitura di questa
   larghezza: qui vale la gronda interna della lastra. */
.studio__fascia {
  --altezza: clamp(14rem, 10rem + 9vw, 19rem);
  margin-block-start: clamp(2rem, 1.4rem + 2.4vw, 3.5rem);
  padding: clamp(1.5rem, 1.1rem + 1.8vw, 2.75rem);
  background: var(--fondo-alt);
  border: var(--bordo-spessore) solid var(--bordo);
}

/* Roboto e non Anton: sopra c'è già un h2 in Anton a --t-h2, e una seconda
   riga condensata grande a mezzo metro di distanza farebbe due titoli in
   concorrenza. Qui serve una frase che si legge, non un'insegna. */
.studio__sintesi {
  max-inline-size: 46ch;
  margin: 0;
  font-size: clamp(1.125rem, 1.05rem + 0.35vw, 1.4375rem);
  line-height: 1.5;
  text-wrap: pretty;
}

.studio__chiusura {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  justify-content: space-between;
  gap: clamp(1.25rem, 0.9rem + 1.4vw, 2.25rem);
  margin: 0;
}

.studio__dati {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem clamp(1.5rem, 1rem + 2vw, 3rem);
  margin: 0;
}

.studio__dato {
  display: grid;
  gap: 0.3rem;
}

.studio__dato dt {
  display: flex;
  align-items: center;
  gap: 0.45rem;
}

/* ——— Le due soglie ————————————————————————————————————————————————————————
   64rem: sotto, tre colonne darebbero foto larghe ~180px con «Il tavolo da
   disegno» su tre righe. Si passa a colonna sola e le foto diventano
   orizzontali (3/2), altrimenti tre ritratti 4/5 impilati fanno una sezione
   alta quattro schermi. */
@media (max-width: 64rem) {
  .studio__voci {
    grid-template-columns: minmax(0, 1fr);
    gap: clamp(1.75rem, 1.3rem + 2vw, 2.75rem);
  }

  .studio__cornice {
    --rapporto: 3 / 2;
  }

  .studio__voce {
    max-inline-size: 60ch;
  }
}

/* 48rem: la fascia perde l'altezza minima — con dati e invito già impilati,
   `space-between` produrrebbe solo un buco in mezzo. */
@media (max-width: 48rem) {
  .studio__fascia {
    --altezza: 0;
    gap: clamp(1.5rem, 1.1rem + 1.6vw, 2.5rem);
  }

  .studio__invito {
    inline-size: 100%;
  }
}

/* ============================================================================
   7/11 — COSA DICONO LE COPPIE
   ----------------------------------------------------------------------------
   Impianto assegnato: elenco compatto di virgolettati brevi a due colonne
   (`.u-switcher`), senza foto, con la fonte a fine riga. NON la griglia di tre
   schede del piano — la divergenza è motivata in index.html e dichiarata in
   DA-CONFERMARE.md.

   Il principio estetico di tutta la sezione: **nessun contenitore**. Niente
   riquadri, niente fondi, niente ombre — le citazioni sono separate da filetti
   da un pixel e basta. È la scelta che la rende irriconoscibile dalla 6 (che è
   un trittico di fotografie) e dalla 8 (che è una campitura rossa piena), e
   allo stesso tempo è la forma coerente col marchio: uno studio che vende
   carta tagliata netta non mette schede con l'ombra sotto.

   Le schede citazione sarebbero state anche la scelta sbagliata per il
   contenuto: sei riquadri di altezza diversa con dentro tre righe di testo
   sono sei buchi bianchi. Un elenco filettato non ha altezza da pareggiare.
   ========================================================================= */

/* ——— La barra dei numeri ————————————————————————————————————————————————
   L'aggregato è il compito in tre secondi, quindi arriva prima delle
   citazioni. Filetto rosso spesso sopra (l'unico tratto d'accento della
   sezione) e filetto sottile sotto: la barra si legge come una riga di
   tabella, non come un pannello. `<dl>` e non `<ul>` perché sono coppie
   etichetta/valore — e i tre `<div>` sono l'involucro che la specifica
   ammette per tenere insieme dt e dd. */
.recensioni__numeri {
  display: flex;
  flex-wrap: wrap;
  margin: 0 0 clamp(2rem, 1.5rem + 2vw, 3.25rem);
  border-block-start: 3px solid var(--accento);
  border-block-end: var(--bordo-spessore) solid var(--bordo);
}

/* `flex-basis` in rem e non in percentuale: sotto i 640px i tre numeri devono
   poter andare a capo da soli, senza media query, e restare comunque larghi
   abbastanza da tenere «Coppie che la consigliano» su due righe al massimo. */
.recensioni__numero {
  display: flex;
  flex: 1 1 13rem;
  flex-direction: column-reverse;   /* il valore sopra, l'etichetta sotto */
  gap: 0.35rem;
  padding: clamp(1rem, 0.8rem + 0.9vw, 1.6rem) clamp(1rem, 0.8rem + 0.9vw, 1.75rem);
}

/* Il divisorio è sul lato iniziale di ogni numero tranne il primo: così non
   resta un filetto orfano quando la riga va a capo. */
.recensioni__numero + .recensioni__numero {
  border-inline-start: var(--bordo-spessore) solid var(--bordo);
}

.recensioni__numero dt {
  display: flex;
  align-items: center;
  gap: 0.45rem;
}

/* Anton grande, come il «5,0» dell'apertura e i dati della 6: in questa
   pagina il numero è sempre in condensato. */
.recensioni__cifra {
  margin: 0;
  font-family: var(--font-titoli);
  font-weight: 400;
  font-size: clamp(2.5rem, 1.9rem + 3vw, 4.25rem);
  line-height: 0.95;
  font-variant-numeric: lining-nums;
}

/* L'accento pieno solo qui, e solo su un corpo enorme: #ee0000 misura 4,53:1
   sul fondo, che è oltre il 3:1 richiesto dal testo grande e sarebbe stanco
   su un paragrafo (§tokens.css, `corpo_saturo`). Un solo numero rosso in
   tutta la sezione — è quello che deve arrivare per primo. */
.recensioni__cifra--accento {
  color: var(--accento);
}

/* ——— Le due colonne di virgolettati ——————————————————————————————————————
   `--soglia-switcher` alzata da 30rem a 46rem: col default le due colonne
   restano affiancate fino a ~480px di contenitore, cioè colonne da 240px in
   cui una citazione si spezza in righe da quattro parole. A 46rem impilano
   quando la colonna scenderebbe sotto ~22rem, che è la misura minima in cui
   un virgolettato resta leggibile. */
.recensioni__elenco {
  --soglia-switcher: 46rem;
  --gap: clamp(1.5rem, 0.9rem + 2.4vw, 3.5rem);
}

.recensioni__colonna {
  margin: 0;
  padding: 0;
  list-style: none;
}

/* Il filetto sta SOPRA ogni voce, prima compresa: così le due colonne
   attaccano allineate sullo stesso tratto e l'elenco si chiude senza un
   filetto pendente in fondo. */
.recensioni__voce {
  padding-block: clamp(1rem, 0.85rem + 0.7vw, 1.6rem);
  border-block-start: var(--bordo-spessore) solid var(--bordo);
}

/* Tre righe, due colonne: le virgolette in una gronda stretta a sinistra, il
   testo e la fonte nella colonna larga. `minmax(0, 1fr)` per la seconda
   colonna, altrimenti una parola lunga la fa sfondare (§.studio__voci). */
.recensioni__citazione {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: clamp(0.6rem, 0.5rem + 0.4vw, 0.9rem);
  row-gap: clamp(0.5rem, 0.45rem + 0.25vw, 0.75rem);
  margin: 0;
}

.recensioni__virgolette {
  --icona: 1.5rem;
  margin-block-start: 0.15em;
  color: var(--accento-inchiostro);
}

/* `--t-corpo` e non un corpo da citazione gonfiato: sono sei, e la densità
   assegnata è «fitta». L'interlinea scende a 1,5 dall'1,78 del corpo — una
   citazione di tre righe con l'interlinea del testo lungo si sfilaccia. */
.recensioni__testo {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: var(--t-corpo);
  line-height: 1.5;
  text-wrap: pretty;
}

.recensioni__testo p {
  margin: 0;
}

/* Le virgolette basse tipografiche disegnate dal CSS: nel markup il testo
   della recensione è nudo, così resta identico alla fonte e chi lo copia non
   si porta via i segni. */
.recensioni__testo p::before {
  content: '\00AB';
}

.recensioni__testo p::after {
  content: '\00BB';
}

/* «La fonte a fine riga», letteralmente: allineata al bordo destro della
   colonna del testo, sotto l'ultima riga del virgolettato. È il gesto
   editoriale che distingue una citazione attribuita da una scheda cliente —
   e nessun'altra sezione della pagina allinea niente a destra. */
.recensioni__fonte {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: flex-end;
  gap: 0.35rem 0.5rem;
  grid-column: 2;
  font-size: var(--t-piccolo);
  line-height: 1.3;
  text-align: end;
}

.recensioni__nome {
  color: var(--testo);
  font-weight: 500;
  letter-spacing: 0.02em;
}

.recensioni__data,
.recensioni__portale {
  color: var(--testo-tenue);
}

/* Il separatore sta su `::before` del pezzo che introduce, non su `::after`
   del precedente: quando la fonte va a capo su schermo stretto, «· Matrimonio
   .com» si legge, «27/08/2025 ·» lasciato in sospeso a fine riga no. Colore
   `--bordo`: è punteggiatura di servizio, non testo. */
.recensioni__data::before,
.recensioni__portale::before {
  content: '·';
  margin-inline-end: 0.5rem;
  color: var(--bordo);
}

/* ——— La pagella dei cinque assi ——————————————————————————————————————————
   Chiude la sezione col dato che rende non generica la media. Fondo grigio
   chiaro, che è l'unica campitura della sezione e serve a staccarla
   dall'elenco filettato subito sopra. */
.recensioni__pagella {
  margin-block-start: clamp(2rem, 1.5rem + 2vw, 3.25rem);
  padding: clamp(1.15rem, 0.9rem + 1.1vw, 1.85rem) clamp(1.15rem, 0.9rem + 1.4vw, 2.25rem);
  background: var(--fondo-alt);
  border: var(--bordo-spessore) solid var(--bordo);
}

/* Roboto e non Anton: è un'etichetta, non un titolo — sopra ci sono già un h2
   condensato e tre numeri condensati, e un quarto pezzo in Anton qui farebbe
   della sezione un manifesto invece di una pagina di prove. */
.recensioni__pagella-titolo {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0 0 clamp(0.85rem, 0.7rem + 0.5vw, 1.25rem);
}

.recensioni__pagella-titolo .icona {
  color: var(--accento-inchiostro);
}

/* `auto-fit` con un minimo generoso: cinque voci stanno in riga sui monitor
   larghi, diventano tre + due, poi due + due + una, poi una colonna. Le
   `minmax(0, …)` per lo stesso motivo di sempre. */
.recensioni__assi {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(15rem, 100%), 1fr));
  gap: 0.65rem clamp(1rem, 0.7rem + 1.2vw, 2rem);
  margin: 0;
  padding: 0;
  list-style: none;
}

.recensioni__assi > li {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding-block-end: 0.5rem;
  border-block-end: var(--bordo-spessore) solid var(--bordo);
  font-size: var(--t-piccolo);
  line-height: 1.3;
}

.recensioni__assi .icona {
  color: var(--testo-tenue);
}

/* `margin-inline-start: auto` spinge il voto al bordo destro della sua cella:
   cinque «5,0» incolonnati sono la figura che dice «tutti pieni» prima che si
   leggano le etichette. */
.recensioni__asse {
  color: var(--testo-tenue);
}

.recensioni__voto {
  margin-inline-start: auto;
}

/* ——— Sotto i 40rem —————————————————————————————————————————————————————
   A 375px la gronda della citazione mangia un quinto della larghezza utile:
   le virgolette passano sopra il testo, in flusso, e la fonte torna a
   sinistra — allinearla a destra su una colonna da 300px la fa sembrare
   staccata dalla citazione che attribuisce. */
@media (max-width: 40rem) {
  .recensioni__citazione {
    grid-template-columns: minmax(0, 1fr);
    row-gap: 0.4rem;
  }

  .recensioni__virgolette {
    --icona: 1.25rem;
    margin-block-start: 0;
  }

  .recensioni__fonte {
    grid-column: 1;
    justify-content: flex-start;
    text-align: start;
  }
}

/* ============================================================================
   8/11 — CINQUE ANNI DI WEDDING AWARDS
   ----------------------------------------------------------------------------
   Impianto del piano, senza deroghe: fascia piena rossa a tutta larghezza
   (`.su-scuro` su `--accento`) con le cinque annate in Anton grande.

   Perché la campitura sta sulla `<section>` e non su un figlio: la sezione è
   già larga quanto il documento, quindi il fondo arriva ai bordi da solo.
   Nessun trucco a base di `100vw` e margini negativi — su un documento con la
   barra di scorrimento visibile `100vw` è più largo del contenuto e produce
   lo scorrimento orizzontale che il BRIEF conta come difetto.

   Nessun contenitore interno, nessuna scheda, nessuna griglia di testo: un
   asse verticale solo. È la forma più lontana possibile dalle due colonne di
   virgolettati della 7 sopra e dalla lista di definizione della 9 sotto.
   ========================================================================= */

.premi {
  background: var(--accento);

  /* Il contrasto di questa sezione, che tokens.css aveva già previsto.
     `.su-scuro` di base scrive `color: var(--su-scuro)`, cioè #f5f6f7: su
     #ee0000 misura 4,19:1 e NON passa. Il bianco puro misura 4,53:1 ed è
     l'unico inchiostro che regge su questo rosso, quindi qui dentro sia
     `--su-scuro` sia `--su-scuro-tenue` (che `.su-scuro` rilega a
     `--testo-tenue`) valgono #fff.

     Conseguenza voluta: in questa sezione NON esiste un grigio di servizio.
     La gerarchia secondaria la fanno corpo, spaziatura e dimensione
     dell'icona — mai l'opacità, che rimetterebbe il contrasto sotto soglia
     esattamente come il grigio che stiamo evitando. */
  --su-scuro: #ffffff;
  --su-scuro-tenue: #ffffff;

  /* `--bordo` di default (#d3d8dc) è tarato sul fondo chiaro: sul rosso è un
     filetto sporco. Qui i tratti sono bianchi trasparenti. Volutamente NON
     `color-mix()`: un fondo scritto con `color-mix` esce dal renderer come
     `color(srgb …)` e il misuratore di leggibilità lo legge come quasi nero.
     Qui il valore è un filetto e non un fondo, ma la regola resta una sola
     per tutto il file. */
  --bordo: rgba(255, 255, 255, 0.45);

  /* Densità RADA, ed è un vincolo del piano. `.u-sezione` dà
     `var(--spazio-sezione)`: qui vale una volta e mezza, perché una lastra di
     colore pieno stretta sul contenuto sembra un banner pubblicitario. La
     regola sovrascrive `.u-sezione` per ordine nel file, non per specificità:
     site.css viene dopo base.css. */
  padding-block: calc(var(--spazio-sezione) * 1.5);
}

/* `rem` e non `ch`: il `ch` di questo blocco si misura sul Roboto ereditato,
   non sull'Anton del titolo, e a 34ch il titolo si spezzerebbe in sei righe.
   34rem tiene l'h2 su due righe piene al corpo massimo. */
.premi__testata {
  max-inline-size: 34rem;
}

/* Stesso gesto dell'occhiello di tutte le sezioni precedenti — nessuna
   sezione reinventa la sua etichetta. Cambia una cosa sola, e deve cambiare:
   altrove l'occhiello è `--accento-inchiostro`, qui l'accento è il FONDO,
   quindi eredita il bianco della sezione e non dichiara nessun colore. */
.premi__occhiello {
  color: inherit;   /* qui l'accento è il FONDO: l'inchiostro è il bianco */
}

/* ——— Le cinque annate ——————————————————————————————————————————————————
   La figura della sezione. Cinque celle paritarie in UNA riga: il compito in
   tre secondi è contare, e cinque cose in fila si contano senza leggerle.

   Colonne esplicite e non `auto-fit`: con cinque tessere `auto-fit` passa da
   5 a 4 e lascia un orfano in seconda riga per metà dei viewport. I due
   gradini dichiarati qui sotto sono gli unici che non spaiano il conto — 5,
   poi 3+2. `minmax(0, 1fr)` e non `1fr` perché una colonna a `min-content`
   non scenderebbe mai sotto la larghezza di quattro cifre di Anton, e la
   griglia sborderebbe dal contenitore invece di stringersi. */
.premi__annate {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: clamp(1.25rem, 0.5rem + 2.4vw, 2.5rem);
  margin: 0;
  padding: 0;
  list-style: none;
}

/* Filetto bianco spesso SOPRA ogni cella, non fra una cella e l'altra: un
   separatore verticale si spezzerebbe quando la riga va a capo, e la prima
   cella della seconda riga si troverebbe un filetto in mezzo al niente. */
.premi__annata {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: clamp(0.6rem, 0.5rem + 0.5vw, 1rem);
  padding-block-start: clamp(0.75rem, 0.6rem + 0.6vw, 1.25rem);
  border-block-start: 2px solid currentColor;
}

.premi__trofeo {
  --icona: clamp(1.25rem, 1rem + 1vw, 1.75rem);
}

/* Il corpo è calcolato sulla cella, non a occhio: a 1440px la colonna è
   ~192px e quattro cifre di Anton misurano ~0,55em l'una, cioè ~184px a 83px
   di corpo. Il tetto a 5,5rem è il margine che tiene le cifre dentro la
   colonna anche se entra in gioco il fallback (`Haettenschweiler`,
   `Arial Narrow`), che ha metriche più larghe. */
.premi__anno {
  font-family: var(--font-titoli);
  font-weight: 400;
  font-size: clamp(2.5rem, 0.9rem + 4.8vw, 5.5rem);
  line-height: 0.9;
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
}

/* ——— Il perché, e la fonte ——————————————————————————————————————————————
   Due paragrafi e basta: la sezione è rada, e il lavoro visivo l'hanno già
   fatto le annate. Il primo dice come si vince quel premio — senza quella
   frase cinque numeri grossi sono cinque bollini. Il secondo elenca gli anni
   per esteso, ed è lì per un motivo preciso: gli anni non sono consecutivi, e
   un lettore veloce leggerebbe «dal 2020 al 2025». */
.premi__lead {
  margin: var(--stacco-testata-rada) 0 0;
  max-inline-size: var(--misura-guida);
  font-size: var(--t-corpo);
  line-height: 1.6;
}

/* La fonte segue la riga di coda comune, ma qui non c'è grigio di servizio:
   su #ee0000 il bianco è l'unico inchiostro che regge (§.premi). */
.premi__fonte {
  margin-block-start: var(--pad-filetto);
}

/* ——— Sotto i 52rem ——————————————————————————————————————————————————————
   Cinque colonne diventano tre: a 832px la cella scende a ~132px e quattro
   cifre a 58px di corpo ne misurano ~115. Più stretto di così le cifre
   arriverebbero a toccarsi. Tre colonne (3 + 2) è l'unico gradino che non
   lascia una cella sola in fondo. */
@media (max-width: 52rem) {
  .premi__annate {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* ============================================================================
   9/11 — PREZZI, MINIMI E TEMPI
   ----------------------------------------------------------------------------
   Impianto del piano, senza deroghe: LISTA DI DEFINIZIONE a due colonne, col
   prezzo come numero grande a sinistra e cinque condizioni a destra.

   Le due colonne sono `20rem` e «il resto», non due percentuali: la targa deve
   essere larga quanto basta a contenere la cifra al corpo massimo, e non un
   terzo di qualunque schermo. È la differenza fra una misura e un rapporto, ed
   è la ragione per cui questa sezione non è l'ennesima variante di 60/40.

   Che cosa la distingue dalle vicine scorrendo senza leggere: la 8 sopra è una
   lastra rossa piena, la 10 sotto sarà una colonna stretta di `<details>`.
   Qui c'è una targa grigia con dentro una cifra enorme e, accanto, sei filetti
   orizzontali. Nessuna delle tre condivide una linea.

   Densità FITTA, ed è un vincolo del piano: le righe del `<dl>` hanno il
   respiro minimo che tiene separati sei blocchi di testo. La densità sta nella
   spaziatura, MAI nel corpo del testo: le spiegazioni restano a `--t-corpo`
   (≥16px anche sul telefono), perché una tabella di prezzi scritta a 13px è il
   modo più rapido per far chiudere la pagina a chi sta facendo i conti.
   ========================================================================= */

/* ——— Testata ————————————————————————————————————————————————————————————
   Stesso gesto delle sezioni precedenti: occhiello con icona in
   `--accento-inchiostro`, h2 in Anton, paragrafo guida. Nessuna sezione
   reinventa la propria etichetta. */
/* ——— Le due colonne —————————————————————————————————————————————————————
   `minmax(0, 20rem)` e non `20rem` secco: senza il minimo a 0 la colonna non
   scenderebbe mai sotto la larghezza della cifra in Anton, e sui viewport
   intermedi la griglia sborderebbe dal contenitore invece di stringersi.
   `align-items: start` tiene la targa alta quanto il suo contenuto: allungarla
   fino in fondo al `<dl>` la trasformerebbe in una colonna di fondo grigio,
   che è un'altra figura. */
.prezzi__quadro {
  display: grid;
  grid-template-columns: minmax(0, 20rem) minmax(0, 1fr);
  align-items: start;
  gap: clamp(1.5rem, 0.8rem + 2.4vw, 3rem);
}

/* ——— La targa del prezzo ————————————————————————————————————————————————
   Fondo `--fondo-alt` (#eceff1) e filetto da un pixel: è l'unico piano
   rialzato della sezione, e serve a staccare il numero dal `<dl>` senza dargli
   un colore. Il rosso qui NON entra sulla cifra: la sezione sopra è una lastra
   di `--accento` a tutta larghezza, e un numero rosso subito sotto si
   leggerebbe come una colatura di quella. Il numero è già la cosa più grande
   della sezione, non gli serve anche il colore.
   Contrasti misurati su #eceff1: `--testo` 15,7:1, `--testo-tenue` 5,3:1,
   `--accento-inchiostro` 6,0:1. Tutti sopra soglia. */
.prezzi__targa {
  padding: clamp(1.25rem, 1rem + 1.2vw, 2rem);
  background: var(--fondo-alt);
  border: var(--bordo-spessore) solid var(--bordo);
}

.prezzi__targa-etichetta {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  margin: 0;
}

/* Il corpo è calcolato sulla colonna, non a occhio. A 1440px il contenitore
   dà 1120px di contenuto, la targa ne prende 320 e il padding ne toglie 64:
   restano 256px. In Anton «2» e «8» avanzano ~0,55em l'una, il trattino
   ~0,4em, l'euro ~0,45em di un corpo già ridotto al 42%: a 6rem (96px) la riga
   misura ~53+38+53+41 = 185px, con 71px di margine. Il tetto a 6rem è quel
   margine, e serve al fallback (`Haettenschweiler`, `Arial Narrow`), che ha
   metriche più larghe di Anton. */
.prezzi__forbice {
  display: flex;
  align-items: baseline;
  margin: clamp(0.35rem, 0.25rem + 0.4vw, 0.6rem) 0 0;
  font-family: var(--font-titoli);
  font-weight: 400;
  font-size: clamp(3.25rem, 1.8rem + 5.4vw, 6rem);
  line-height: 0.86;
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
}

.prezzi__trattino {
  margin-inline: 0.06em;
  color: var(--accento-inchiostro);
}

.prezzi__valuta {
  margin-inline-start: 0.14em;
  font-size: 0.42em;
  letter-spacing: 0;
}

.prezzi__unita {
  margin: 0.35rem 0 0;
}

/* La riga che rende il numero un'informazione invece che un cartellino: senza
   di lei «2–8 €» è una forbice larga quattro volte e chi legge non sa da che
   parte cadrà. `align-items: flex-start` più il micro-margine sull'icona la
   riportano sulla linea di base della prima riga di testo. */
.prezzi__chiosa {
  display: flex;
  align-items: flex-start;
  gap: 0.55rem;
}

.prezzi__chiosa .icona {
  margin-block-start: 0.2em;
  color: var(--accento-inchiostro);
}

/* ——— Il `<dl>`: sei filetti, cinque condizioni ——————————————————————————
   Filetto SOPRA ogni riga più uno di chiusura sul `<dl>`: sei linee, il conto
   di un listino. Un `border-block-end` per riga avrebbe lasciato il blocco
   aperto in alto, staccato dalla targa che gli sta accanto. */
.prezzi__condizioni {
  margin: 0;
  border-block-end: var(--bordo-spessore) solid var(--bordo);
}

/* Termine a sinistra, valore a destra: la seconda coppia di colonne della
   sezione, e quella che rende `<dl>` la semantica giusta e non un vezzo — ogni
   riga è termine → valore, che è esattamente la matrice di un listino.
   `10.5rem` è la misura di «Spedizione in Italia» su due righe con l'icona
   davanti, cioè il termine più lungo dei cinque. */
.prezzi__voce {
  display: grid;
  grid-template-columns: minmax(0, 10.5rem) minmax(0, 1fr);
  gap: clamp(0.75rem, 0.5rem + 0.8vw, 1.5rem);
  padding-block: clamp(0.9rem, 0.75rem + 0.6vw, 1.35rem);
  border-block-start: var(--bordo-spessore) solid var(--bordo);
}

.prezzi__termine {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
}

.prezzi__segno {
  --icona: 1.15rem;
  margin-block-start: 0.05em;
  color: var(--accento-inchiostro);
}

/* `margin-inline-start: 0` esplicito: il reset di base.css azzera i margini
   con `* { margin: 0 }`, ma un `dd` senza rientro è troppo facile da perdere
   in un refactor per lasciarlo implicito. */
.prezzi__definizione {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  margin-inline-start: 0;
}

/* Anton anche qui: sono i cinque numeri che si scorrono senza leggere le
   spiegazioni, e devono avere lo stesso segno della cifra nella targa — più
   piccoli di un ordine di grandezza, così la gerarchia resta una sola.
   `<b>` e non `<strong>`: è rilievo tipografico, non enfasi di significato. */
.prezzi__spiega {
  max-inline-size: var(--misura-guida);
  color: var(--testo-tenue);
  font-size: var(--t-corpo);
  line-height: 1.55;
}

/* ——— La riga della fonte ————————————————————————————————————————————————
   Come nella 7 e nella 8: la provenienza dei numeri si dichiara a parole, in
   pagina, senza link in uscita verso il marketplace (STUDIO.md §3). Qui la
   riga fa anche un secondo lavoro — dire per COSA valgono quelle cifre, cioè
   le partecipazioni, così nessuno legge «2 €» pensando a un tableau. */
/* ——— Sotto i 58rem ——————————————————————————————————————————————————————
   Le due colonne si impilano: a 928px la targa scenderebbe sotto i 20rem e la
   cifra comincerebbe a stringersi mentre accanto il `<dl>` ha ancora spazio.
   Impilata, la targa resta una fascia larga col numero al corpo pieno — che è
   il compito in tre secondi, e sul telefono arriva per primo. */
@media (max-width: 58rem) {
  .prezzi__quadro {
    grid-template-columns: minmax(0, 1fr);
  }

  /* Da targa a fascia: cifra e chiosa vanno in riga finché ci stanno, invece
     di lasciare mezzo schermo di grigio vuoto a destra del numero. Il
     `min(16rem, 100%)` è la guardia che impedisce alla traccia di superare il
     contenitore quando lo schermo è più stretto di 16rem. */
  .prezzi__targa {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(16rem, 100%), 1fr));
    gap: clamp(1rem, 0.7rem + 1.2vw, 1.75rem);
    align-items: end;
  }

  .prezzi__chiosa {
    margin-block-start: 0;
    padding-block-start: 0;
    border-block-start: 0;
  }
}

/* ——— Sotto i 34rem ——————————————————————————————————————————————————————
   A 544px la colonna del termine scende sotto 10,5rem e «Spedizione in
   Italia» si spezzerebbe in tre righe accanto a un valore di due caratteri.
   Il `<dl>` va in colonna: termine sopra, valore e spiegazione sotto. I
   filetti restano, quindi la figura del listino non cambia. */
@media (max-width: 34rem) {
  .prezzi__voce {
    grid-template-columns: minmax(0, 1fr);
    gap: 0.5rem;
  }
}

/* ============================================================================
   10/11 — DOMANDE FREQUENTI
   ----------------------------------------------------------------------------
   Impianto del piano, senza deroghe: ACCORDION `<details>` in COLONNA DI
   LETTURA SINGOLA, larghezza contenuta.

   «Larghezza contenuta» qui è una misura, non una percentuale: 44rem, poco
   sopra la `--larghezza-lettura` (38rem) perché la riga della domanda deve
   contenere icona + testo + freccia senza spezzarsi, e ben sotto le 78rem del
   contenitore. La colonna è CENTRATA, ed è l'unica della pagina: tutte le
   altre sezioni allineano a sinistra dentro `u-contenitore`. È la differenza
   che si vede scorrendo senza leggere — sopra (9) una targa col numero enorme
   e sei filetti lunghi quanto la pagina, sotto (11) tre pannelli paritari
   affiancati, qui una pila stretta al centro di righe tutte uguali.

   Densità FITTA, e sta nella spaziatura: le voci sono attaccate, divise da un
   filetto da un pixel, senza gap e senza schede. Il corpo del testo NON si
   riduce — le risposte restano a `--t-corpo` (≥16px anche sul telefono),
   perché una risposta a 13px è una risposta che non si legge.

   Nessuna animazione di apertura: l'altezza di `<details>` non si anima senza
   JS o senza `::details-content` (troppo recente per essere l'unica strada), e
   una transizione a metà supporto è peggio di nessuna. L'unico movimento è la
   freccia che ruota, 180ms — micro-interazione di stato, non movimento di
   pagina: il movimento della pagina lo progetta la sessione di chiusura.
   ========================================================================= */

/* ——— La colonna ————————————————————————————————————————————————————————— */
.domande__colonna {
  max-inline-size: 44rem;
  margin-inline: auto;
}

/* ——— Testata ————————————————————————————————————————————————————————————
   Stesso gesto delle sezioni precedenti — occhiello con icona in
   `--accento-inchiostro`, h2 in Anton, paragrafo guida — ma allineato a
   sinistra DENTRO la colonna stretta, non centrato: il testo centrato su tre
   righe di paragrafo si legge peggio, e la colonna è già la figura. */
/* ——— La pila —————————————————————————————————————————————————————————————
   Filetto sopra la prima voce e sotto ognuna: la pila si chiude da entrambi i
   capi e si legge come un blocco unico invece che come sette righe sciolte. */
.domande__elenco {
  border-block-start: var(--bordo-spessore) solid var(--bordo);
}

.domande__voce {
  border-block-end: var(--bordo-spessore) solid var(--bordo);
}

/* ——— La domanda ——————————————————————————————————————————————————————————
   `list-style: none` + `::-webkit-details-marker` è la coppia che serve: la
   prima toglie il triangolo a Firefox e ai Chromium recenti, la seconda a
   Safari, che il marker lo disegna ancora con lo pseudo-elemento suo. Senza la
   seconda riga, su Safari resta un triangolino nero accanto all'icona.

   `min-block-size: 44px`: la riga è il bersaglio da toccare, e 44 è il minimo
   che una mano centra al primo colpo. Il padding la porta comunque oltre, ma
   la guardia serve alla domanda corta.

   `cursor: pointer` perché è un comando, non un paragrafo. */
.domande__domanda {
  display: flex;
  align-items: center;
  gap: clamp(0.6rem, 0.5rem + 0.4vw, 0.9rem);
  min-block-size: 44px;
  padding-block: clamp(0.85rem, 0.7rem + 0.5vw, 1.15rem);
  cursor: pointer;
  list-style: none;
  color: var(--testo);
  font-size: var(--t-h4);
  font-weight: 500;
  line-height: 1.35;
  transition: color var(--durata-breve) var(--curva);
}

.domande__domanda::-webkit-details-marker {
  display: none;
}

/* L'anello di fuoco sta sulla riga intera, `inset` così non viene tagliato dal
   filetto della voce sopra. `:focus-visible` e non `:focus`: al click del
   mouse l'anello non deve comparire. */
.domande__domanda:focus-visible {
  outline: 2px solid var(--accento);
  outline-offset: -3px;
}

.domande__domanda:hover {
  color: var(--accento-inchiostro);
}

/* Il segno di sinistra è l'icona iconoir della voce: dà alla riga chiusa un
   appiglio che non è testo, e rende la pila scorribile a colpo d'occhio. Resta
   in `--accento-inchiostro` (6,8:1 su --fondo) e non in `--accento`: a
   1,15rem il rosso puro è il difetto `corpo_saturo` di tokens.css. */
.domande__segno {
  --icona: 1.35rem;
  color: var(--accento-inchiostro);
}

.domande__testo {
  flex: 1 1 auto;
  min-inline-size: 0;
  text-wrap: pretty;
}

/* La freccia sta in fondo alla riga e ruota all'apertura. `flex-shrink: 0` è
   già in `.icona`; qui serve solo il perno e la durata. */
.domande__freccia {
  --icona: 1.25rem;
  margin-inline-start: auto;
  color: var(--testo-tenue);
  transition: transform var(--durata-breve) var(--curva);
}

.domande__voce[open] .domande__freccia {
  transform: rotate(180deg);
}

.domande__voce[open] .domande__domanda {
  color: var(--accento-inchiostro);
}

/* ——— La risposta —————————————————————————————————————————————————————————
   Rientrata quanto l'icona più il gap, così il testo parte sotto la domanda e
   non sotto il segno: la colonna di lettura resta una sola linea verticale.
   `--larghezza-lettura` la tiene sotto le ~70 battute anche quando la colonna
   è al massimo. */
.domande__risposta {
  padding-inline-start: calc(1.35rem + clamp(0.6rem, 0.5rem + 0.4vw, 0.9rem));
  padding-block-end: clamp(1rem, 0.85rem + 0.6vw, 1.5rem);
}

.domande__risposta p {
  margin: 0;
  max-inline-size: var(--larghezza-lettura);
  color: var(--testo-tenue);
  font-size: var(--t-corpo);
  line-height: 1.6;
}

/* ——— Il rimando ——————————————————————————————————————————————————————————
   Non è un pulsante: è un link di servizio, e deve pesare meno della risposta.
   La freccia scivola di 2px al passaggio — `transform` e non `margin`, così
   non ridisegna il riquadro.

   Il selettore è discendente (`.domande__risposta .domande__vai`) e non
   `.domande__vai` secco: la regola `.domande__risposta p { margin: 0 }` qui
   sopra ha specificità 0-1-1 e vincerebbe su una classe sola, lasciando il
   rimando incollato alla risposta. Due classi, non un `!important`. */
.domande__risposta .domande__vai {
  margin-block-start: clamp(0.65rem, 0.55rem + 0.4vw, 0.9rem);
}

.domande__vai a {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  color: var(--accento-inchiostro);
  font-size: var(--t-piccolo);
  font-weight: 500;
  text-decoration: none;
  border-block-end: var(--bordo-spessore) solid currentColor;
  padding-block-end: 0.15rem;
}

/* ——— La riga della fonte ————————————————————————————————————————————————
   Stessa figura delle sezioni 8 e 9: icona sospesa e testo tenue, sotto tutto.
   `align-items: start` perché il testo è lungo e l'icona deve stare alla prima
   riga, non al centro del blocco. */
/* ——— Sotto i 30rem ——————————————————————————————————————————————————————
   A 480px il rientro della risposta si mangia due battute per riga senza dare
   niente in cambio: la linea verticale la fa già il bordo dello schermo. Le
   domande restano rientrate, le risposte no. */
@media (max-width: 30rem) {
  .domande__risposta {
    padding-inline-start: 0;
  }
}

/* ============================================================================
   11 — DOVE SIAMO E COME SI PRENOTA
   ----------------------------------------------------------------------------
   Impianto: `.u-switcher` del pavimento, tre pannelli paritari. La regola non
   si riscrive: si tocca solo `--soglia-switcher`, che è la larghezza sotto la
   quale i tre vanno in colonna TUTTI E TRE INSIEME. A 54rem i pannelli in riga
   restano sopra i 17rem l'uno — sotto quella misura «Via Mater Gratiae 31» e
   «393 181 4389» in Anton comincerebbero a spezzarsi, ed è il punto in cui la
   colonna diventa più leggibile della riga.

   Perché non somiglia alla 10 (accordion) né alla 2 (bento): quella sopra è una
   colonna di lettura stretta che si apre e si chiude; questa è una fascia larga
   di tre riquadri fermi, ognuno con un'icona grande in testa e un filetto rosso
   sul bordo alto — il segno di taglio di un foglio, non un bordo di scheda. Il
   bento ha tessere unite da un filo di 1px; qui i pannelli sono staccati e
   respirano: la densità assegnata è RADA.

   Il terzo pannello è pieno di rosso perché è l'ultimo atto della pagina: il
   compito di questa sezione è far telefonare, e su tre riquadri identici il
   telefono non pesa più dell'indirizzo.
   ========================================================================= */

/* Il filetto in alto stacca l'ultima sezione dalla coda delle FAQ, che
   finiscono con una riga di fonte tenue e nessun bordo. */
.dove-siamo {
  border-block-start: var(--bordo-spessore) solid var(--bordo);
}

/* ——— I tre pannelli ——————————————————————————————————————————————————————
   Solo custom property: `.u-switcher` sta in base.css e non si riscrive. */
.dove-siamo__pannelli {
  --soglia-switcher: 54rem;
  --gap: clamp(1rem, 0.6rem + 1.6vw, 2rem);
  align-items: stretch;
}

/* Colonna flessibile e non griglia, per una ragione sola: l'azione va spinta in
   fondo con `margin-block-start: auto`, e in una griglia con `align-content:
   start` quel margine non ha spazio libero da mangiare. I pannelli sono
   paritari in larghezza per via dello switcher, e devono esserlo anche nel
   punto in cui cade il link. */
.dove-siamo__pannello {
  display: flex;
  flex-direction: column;
  gap: clamp(0.5rem, 0.4rem + 0.4vw, 0.85rem);
  padding: clamp(1.5rem, 1.15rem + 1.6vw, 2.5rem);
  background: var(--fondo-alt);
  border-block-start: 3px solid var(--accento);
}

/* L'icona grande è l'appiglio dei tre secondi: si riconosce il pannello prima
   di leggerlo. In `--accento-inchiostro` (6,8:1 su --fondo-alt) e non
   nell'accento puro, che a questo corpo squillerebbe sopra al dato. */
.dove-siamo__simbolo {
  --icona: clamp(2.25rem, 1.8rem + 1.8vw, 3.25rem);
  margin-block-end: clamp(0.25rem, 0.15rem + 0.4vw, 0.6rem);
  color: var(--accento-inchiostro);
}

/* L'etichetta è un h3, ma non deve sembrare un titolo: sta in Roboto maiuscolo
   spaziato, tenue, e lascia tutto il peso al dato sotto. */
.dove-siamo__etichetta {
  margin: 0;
}

/* Il dato. `font-style: normal` non è pignoleria: <address> nasce in corsivo
   nel foglio di stile del browser, e un Anton finto-corsivo è inclinato dal
   motore, non disegnato. */
.dove-siamo__valore {
  font-style: normal;   /* <address> nasce in corsivo: Anton non ha il corsivo */
}

.dove-siamo__nota {
  margin: 0;
  display: flex;
  align-items: start;
  gap: 0.5rem;
  color: var(--testo-tenue);
  font-size: var(--t-piccolo);
  line-height: 1.6;
}

.dove-siamo__nota .icona {
  --icona: 1.1rem;
  margin-block-start: 0.2em;
}

/* L'azione cade in fondo al pannello, alla stessa altezza in tutti e tre: i
   pannelli si stirano all'altezza della riga (`align-items: stretch`, il
   default dello switcher) e `auto` si mangia lo spazio che avanza. Quando i tre
   vanno in colonna ognuno è alto quanto il proprio contenuto, non avanza
   niente, e il margine si comporta come uno zero: nessuna media query. */
.dove-siamo__azione {
  margin: 0;
  margin-block-start: auto;
  padding-block-start: clamp(0.4rem, 0.3rem + 0.4vw, 0.75rem);
}

/* I due link di servizio (mappa e rimando ai tempi): stesso trattamento del
   rimando nelle FAQ, ma con 44px di altezza di presa perché sono i due
   bersagli piccoli della sezione. La riga sotto è `text-decoration` e non un
   `border-block-end`: il bordo si disegnerebbe sul fondo della scatola da
   44px, staccato dalle lettere di una decina di pixel. */
.dove-siamo__azione a:not(.bottone) {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  min-block-size: 44px;
  color: var(--accento-inchiostro);
  font-size: var(--t-piccolo);
  font-weight: 500;
  text-decoration: underline;
  text-decoration-thickness: var(--bordo-spessore);
  text-underline-offset: 0.35em;
}

.dove-siamo__azione a:not(.bottone):hover {
  text-decoration-color: transparent;
}

/* ——— Il pannello del telefono ————————————————————————————————————————————
   Fondo `--accento`. Come nella fascia dei premi, --su-scuro e --su-scuro-tenue
   si rilegano a bianco puro: su #ee0000 il bianco misura 4,53:1 ed è l'unico
   inchiostro che passa. Il grigio chiaro dei token (#b3b9c0) qui darebbe 1,9:1.
   `.su-scuro` sul tag rilega da solo --testo-tenue. */
.dove-siamo__pannello--chiamare {
  --su-scuro: #ffffff;
  --su-scuro-tenue: #ffffff;
  background: var(--accento);
  border-block-start-color: var(--testo);
}

.dove-siamo__pannello--chiamare .dove-siamo__simbolo,
.dove-siamo__pannello--chiamare .dove-siamo__valore {
  color: var(--su-accento);
}

.dove-siamo__pannello--chiamare .dove-siamo__etichetta {
  color: var(--su-accento);
}

/* Il numero è il dato più grande dei tre: è la cosa che la sezione chiede di
   fare. Resta un link, non un pulsante — il pulsante sta sotto, per chi cerca
   un bersaglio invece di un numero da copiare. */
.dove-siamo__numero {
  font-size: var(--t-h2);
  line-height: 1.05;
  letter-spacing: 0.01em;
}

.dove-siamo__numero a {
  display: inline-flex;
  align-items: center;
  min-block-size: 44px;
  color: inherit;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 0.16em;
}

.dove-siamo__numero a:hover {
  text-decoration-color: transparent;
}

/* `.bottone--vuoto` nasce col filetto in `--testo`: su rosso sarebbe un bordo
   quasi nero. Qui prende currentColor, e al passaggio si riempie di bianco col
   testo nell'accento scurito (7:1 sul bianco) invece di scurirsi. */
.dove-siamo__pannello--chiamare .bottone--vuoto {
  border-color: currentColor;
  color: var(--su-accento);
}

.dove-siamo__pannello--chiamare .bottone--vuoto:hover {
  background: var(--su-accento);
  border-color: var(--su-accento);
  color: var(--accento-inchiostro);
}

/* ——— La riga della fonte ————————————————————————————————————————————————
   Stessa figura delle sezioni 8, 9 e 10: icona sospesa alla prima riga e testo
   tenue sotto tutto. */
/* ——— L'anello di fuoco dentro il pannello rosso ——————————————————————————
   La regola qui sopra dà `outline: 2px solid var(--accento)`: dentro il
   pannello rosso sarebbe rosso su rosso, cioè cieco. base.css ha già
   `.su-scuro :focus-visible { outline-color: var(--su-scuro) }`, ma pesa 0-2-0
   e la mia pesa 0-2-1: vince la mia, e il caso va riscritto per esteso.
   L'anello sta a 2px dal link e resta dentro il pannello: la gronda interna è
   almeno 1,5rem, quindi non tocca mai lo spigolo. */
.dove-siamo__pannello--chiamare a:focus-visible {
  outline: 2px solid var(--su-accento);
  outline-offset: 2px;
}
