/* ============================================================================
   immilex-fonts.css — i font self-hostati di immilex.it. Refresh tipografico,
   settembre 2026. Stato e decisioni: docs/LEDGER.md.

   Solo @font-face, piu' UNA regola (le cifre, in fondo). Collegato da tutte le
   136 pagine al posto di Google Fonts. I file in /fonts/ sono quelli di
   immilex.ch, sottoinsiemati dai TTF con lnum tnum pnum onum case locl kern:
   dal CDN di Google quelle feature non arrivano.

   "ImmiLex Sans"        Alegreya Sans, il corpo. Lo stesso alias di .ch.
                         Statico: una faccia per peso, MAI un intervallo di
                         peso. Pesi: 300 400 500 700 e il corsivo 400. Il 600
                         non esiste: una richiesta di 600 va sul 700 per regola
                         di matching (deciso da Edoardo il 23/09/2026).
   "Cormorant Garamond"  i titoli, con LO STESSO NOME di oggi, cosi' nessuna
                         delle 1 998 dichiarazioni Cormorant delle pagine si
                         tocca. Variabile, wght 300..700: l'intervallo e' vero.
   "ImmiLex Fallback"    il font di sistema mentre Alegreya arriva (swap), con
                         le metriche portate su Alegreya.

   Sottoinsiemi: latin e latin-ext. Niente cirillico (0 caratteri sul sito,
   misurato da tools/gate_conteggi.py), niente arabo ne' devanagari.

   CACHE: /fonts/ e' servito immutable (vercel.json). Un file di font che cambia
   contenuto prende UN NOME NUOVO, sempre: con immutable il browser tiene quello
   vecchio per un anno e non lo richiede nemmeno ricaricando (CLAUDE.md).
   Questo foglio invece non e' immutable: si puo' correggere senza rinominarlo.
   ============================================================================ */

/* ---- Alegreya Sans -------------------------------------------------------
   size-adjust, punto 3 (approvato da Edoardo il 23/09/2026): tiene ferma
   l'altezza x che il sito aveva con DM Sans, senza toccare nessuna font-size e
   quindi nessuna interlinea. Un numero per peso, perche' l'altezza x di
   Alegreya cambia col peso (300 0,458, 400 0,461, 500 0,464, 700 0,468) e quella
   di DM Sans no. Il fattore e' la media, pesata sui caratteri visibili delle 136
   pagine, di altezza x DM Sans al corpo di ciascun elemento / altezza x
   Alegreya al suo peso (maiuscolo: altezza delle maiuscole, 0,700 / 0,641).
   Identico a 1440 e a 390 entro lo 0,1%. Residuo sul 300: da -1,6% a +0,6%
   per il 90% dei caratteri. Il 700 serve anche le richieste di 600.
     300 110,5%   400 110,0%   500 109,1%   700 109,2%   400 corsivo 108,9%
   -------------------------------------------------------------------------- */
@font-face{font-family:"ImmiLex Sans";src:url(/fonts/alegreya-300-latin.woff2) format("woff2");
  font-weight:300;font-style:normal;font-display:swap;size-adjust:110.5%;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,
                U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,
                U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"ImmiLex Sans";src:url(/fonts/alegreya-300-latinext.woff2) format("woff2");
  font-weight:300;font-style:normal;font-display:swap;size-adjust:110.5%;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,
                U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,
                U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:"ImmiLex Sans";src:url(/fonts/alegreya-400-latin.woff2) format("woff2");
  font-weight:400;font-style:normal;font-display:swap;size-adjust:110.0%;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,
                U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,
                U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"ImmiLex Sans";src:url(/fonts/alegreya-400-latinext.woff2) format("woff2");
  font-weight:400;font-style:normal;font-display:swap;size-adjust:110.0%;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,
                U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,
                U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:"ImmiLex Sans";src:url(/fonts/alegreya-500-latin.woff2) format("woff2");
  font-weight:500;font-style:normal;font-display:swap;size-adjust:109.1%;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,
                U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,
                U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"ImmiLex Sans";src:url(/fonts/alegreya-500-latinext.woff2) format("woff2");
  font-weight:500;font-style:normal;font-display:swap;size-adjust:109.1%;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,
                U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,
                U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:"ImmiLex Sans";src:url(/fonts/alegreya-700-latin.woff2) format("woff2");
  font-weight:700;font-style:normal;font-display:swap;size-adjust:109.2%;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,
                U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,
                U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"ImmiLex Sans";src:url(/fonts/alegreya-700-latinext.woff2) format("woff2");
  font-weight:700;font-style:normal;font-display:swap;size-adjust:109.2%;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,
                U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,
                U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:"ImmiLex Sans";src:url(/fonts/alegreya-400i-latin.woff2) format("woff2");
  font-weight:400;font-style:italic;font-display:swap;size-adjust:108.9%;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,
                U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,
                U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"ImmiLex Sans";src:url(/fonts/alegreya-400i-latinext.woff2) format("woff2");
  font-weight:400;font-style:italic;font-display:swap;size-adjust:108.9%;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,
                U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,
                U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

/* ---- Cormorant Garamond, variabile ---------------------------------------- */
@font-face{font-family:"Cormorant Garamond";src:url(/fonts/cormorant-var-latin.woff2) format("woff2");
  font-weight:300 700;font-style:normal;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,
                U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,
                U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Cormorant Garamond";src:url(/fonts/cormorant-var-latinext.woff2) format("woff2");
  font-weight:300 700;font-style:normal;font-display:swap;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,
                U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,
                U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:"Cormorant Garamond";src:url(/fonts/cormorant-var-i-latin.woff2) format("woff2");
  font-weight:300 700;font-style:italic;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,
                U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,
                U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Cormorant Garamond";src:url(/fonts/cormorant-var-i-latinext.woff2) format("woff2");
  font-weight:300 700;font-style:italic;font-display:swap;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,
                U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,
                U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

/* ---- Faccia di ripiego, metriche portate su Alegreya ---------------------
   Avvolge un font di sistema; le override stanno qui e non sulle facce vere,
   dove distorcerebbero il font reale (BRIEF di .ch, B.6). Misurate su questa
   macchina in Chrome: altezza x Helvetica Neue 0,5170, Arial 0,5186, scarto
   sotto 0,01, quindi una faccia sola. Segoe UI (0,500) resta fuori: su Windows
   c'e' Arial.
   size-adjust = altezza x di Alegreya 300 compensata / altezza x del ripiego
               = 0,458 x 1,105 / 0,5178 = 97,7%   (punto 3; prima 0,458 / 0,5178 = 88,5%)
   override    = metriche typo di Alegreya (800 / -200 / 200 su 1000) x 1,105 / 0,977:
                 gli stessi valori di prima, perche' i due fattori si semplificano. */
@font-face{
  font-family:"ImmiLex Fallback";
  src:local("Helvetica Neue"), local("Arial");
  size-adjust:97.7%; ascent-override:90.4%; descent-override:22.6%; line-gap-override:22.6%;
}

/* ---- L'unica regola. Le cifre predefinite di Alegreya sono old-style
   proporzionali: 3 4 5 7 9 scendono sotto la linea di base e le larghezze
   ballano. Lining ovunque, come su .ch (B.3). ANCHE su Cormorant, le cui cifre
   predefinite sono old-style: prima del refresh il sito le mostrava old-style.
   Deciso da Edoardo il 23/09/2026 di tenerle lining (coerenza con .ch, prezzi
   leggibili). -------------------------------------------------------------- */
body{font-variant-numeric:lining-nums}
