/* ==========================================================================
   LA TIPOGRAFIA DEL SISTEMA — il MECCANISMO
   [2026-08-23, deciso dal titolare: Poppins per i titoli, Open Sans per il testo]

   Questo file dichiara COME i caratteri arrivano. QUALE coppia sia attiva sta
   nel PROFILO del cliente, non qui: ogni cliente personalizza il proprio output
   (brief §«gli scheletri sono telai»), e in fase 2 diventa configurazione da
   pannello. Meccanismo e scelta restano separati, come §8 dell'architettura
   prescrive per il CSS funzionale contro quello di profilo.

   ⚠️ I FILE SONO LOCALI, NON DI GOOGLE FONTS, E NON E' UNA PREFERENZA.
   La regola dei cookie gia' decisa dice: «prima del consenso NESSUNA richiesta
   verso hostname diversi da quello della pagina» (Architettura §8). Google Fonts
   e' un hostname terzo. Stessa ragione per cui intl-tel-input e' andato in
   locale il giorno 2 del piano di fase 1.
     In pagina il percorso e' `/_sistema/caratteri/`, servito same-origin dal
   Worker del cliente. In FASE 1 i file arrivano col plugin, installati insieme
   al Worker; in FASE 2 col pacchetto di release distribuito da `aggiorna_worker`.
   Il percorso non cambia fra le due: e' questo che rende la fase 2 gratuita.

   Licenze verificate il 2026-08-23 sul repo `google/fonts`:
   Poppins e Open Sans sono entrambi **SIL Open Font License 1.1** —
   l'auto-ospitalita' e' esplicitamente permessa.

   Peso: 484 KB in WOFF2 (erano 1,1 MB in TTF). Open Sans e' un font VARIABILE:
   un file solo copre tutti i pesi.
   ========================================================================== */

/* --- Poppins: i titoli ---------------------------------------------------- */
@font-face{
  font-family:"Poppins"; src:url("Poppins-Regular.woff2") format("woff2");
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Poppins"; src:url("Poppins-Medium.woff2") format("woff2");
  font-weight:500; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Poppins"; src:url("Poppins-SemiBold.woff2") format("woff2");
  font-weight:600; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Poppins"; src:url("Poppins-Bold.woff2") format("woff2");
  font-weight:700; font-style:normal; font-display:swap;
}

/* --- Open Sans: il testo, variabile --------------------------------------- */
@font-face{
  font-family:"Open Sans"; src:url("OpenSans-variabile.woff2") format("woff2");
  font-weight:300 800; font-stretch:75% 125%; font-style:normal; font-display:swap;
}

/* ==========================================================================
   E1-ter · IL RIPIEGO DICHIARATO, CON LE METRICHE CORRETTE — VINCOLO
   Un webfont arriva DOPO il testo. Fino ad allora il browser usa un sostituto
   con larghezze diverse: quando il file vero arriva, tutto cio' che sta sotto
   SALTA; se non arriva mai, la pagina resta in un carattere che nessuno ha
   scelto. `font-display:swap` rende il testo subito leggibile; le due famiglie
   di ripiego qui sotto ne allineano le metriche perche' il salto sia minimo.

   TARATO IL 2026-08-24, MISURANDO. Banco: `verifiche/_misura-ripiego.html` +
   `verifiche/misura-ripiego.js`, stessa frase a 100 px, servita via HTTP.
     Poppins        2221,8 px  ·  Open Sans      2044,0 px
     ripiego (Helvetica Neue)  1980,2 px
   Da cui:  size-adjust titolo = 2221,8 / 1980,2 = 112,2%
            size-adjust testo  = 2044,0 / 1980,2 = 103,2%
   Verifica della taratura, non della sola aritmetica
   (`verifiche/_prova-taratura.html`): col fattore applicato la stessa frase
   misura 2221,8 contro 2221,8 e 2043,6 contro 2044,0 — scarto 0 e 0,4 px.

   ⚠️ PERCHE' IL SALTO NON ERA UNA FORMALITA'. A 100% il ripiego era **il 10,9%
   piu' stretto** di Poppins. Misurato su 30 casi (5 titoli x 6 larghezze,
   `verifiche/_prova-salto.js`): **11 titoli su 30 prendevano UNA RIGA IN MENO**
   nel ripiego e la guadagnavano all'arrivo di Poppins — a 390 px un'apertura
   passava da 4 righe a 5, cioe' 41 px in piu' spinti addosso a tutto cio' che
   sta sotto. Col fattore tarato: **0 su 30**. E' la ragione per cui questa non
   e' cosmesi: C1 vuole l'azione primaria entro 560 px a 390, e la V3 ci sta con
   **due pixel** di margine (578 su 580). Una riga di titolo in piu' durante lo
   scambio del carattere fa fallire un VINCOLO.

   ⚠️ `ascent-override` E `descent-override` NON SONO STATI SCRITTI, E NON E'
   UNA DIMENTICANZA: **in WebKit non fanno niente.** Falsificato due volte, con
   controprova positiva sulla stessa pagina e sulle stesse facce
   (`verifiche/_prova-override.html`, `verifiche/_prova-override2.html`):
   `ascent-override:300%`, `descent-override:150%`, `ascent-override:0%` e
   `line-gap-override:200%` lasciano scatola, ascendente e discendente
   **identici al pixel**, sia su una faccia `local()` sia su una `.woff2`
   scaricata — mentre `size-adjust:200%` sulla stessa pagina raddoppia tutto.
   Le due righe che stavano qui prima (`ascent-override:normal;
   descent-override:normal`) erano morte due volte: `normal` e' gia' il valore
   iniziale, e il descrittore non e' implementato. Scriverle tarate avrebbe
   dato l'impressione di aver chiuso l'asse verticale senza chiuderlo.
     L'asse verticale, intanto, e' gia' tenuto da un'altra parte: scheletri e
   prove dichiarano sempre un'interlinea esplicita (`17px/1.55`, `2.4rem/1.08`),
   e con `line-height` esplicito l'altezza della riga non dipende dalle metriche
   del carattere — misurato: stesso paragrafo, 104 px in Open Sans, nel ripiego
   e nel ripiego tarato. Il salto che restava era il RIFLUSSO, ed e' quello che
   `size-adjust` chiude.
     ⚠️ Resta un difetto vero ma di un'altra famiglia, e va nel backlog: se un
   giorno un blocco lasciasse l'interlinea al carattere, l'asse verticale
   tornerebbe scoperto e su WebKit non c'e' descrittore per rimediarlo.
   ========================================================================== */
@font-face{
  font-family:"Ripiego-titolo"; src:local("Helvetica Neue"),local("Arial");
  size-adjust:112.2%;
}
@font-face{
  font-family:"Ripiego-testo"; src:local("Helvetica Neue"),local("Arial");
  size-adjust:103.2%;
}
