/*
 * Praxisy — font serviti dal dominio dell'applicazione.
 *
 * Prima arrivavano da fonts.googleapis.com con un <link rel="stylesheet">
 * bloccante. Due problemi, entrambi reali:
 *
 *  1. Dipendenza esterna sul percorso critico. Se quell'host è lento o
 *     irraggiungibile (rete di una fiera, firewall aziendale, rete di un ente
 *     che blocca Google) la pagina resta bianca finché il browser non
 *     desiste. Misurato in un ambiente con l'host bloccato: 12,7 secondi di
 *     schermo vuoto, contro 206 ms senza quella dipendenza.
 *
 *  2. Privacy. Caricare i font da Google trasmette l'indirizzo IP del
 *     visitatore a un terzo senza consenso: il Landgericht München I, con
 *     sentenza del 20 gennaio 2022 (3 O 17493/20), ha riconosciuto il danno
 *     al visitatore di un sito che lo faceva. Per un prodotto venduto a
 *     pubbliche amministrazioni è un'obiezione che arriva sempre.
 *
 * Qui restano solo i sottoinsiemi latin e latin-ext, che coprono le lingue
 * a alfabeto latino dell'interfaccia (it, en, sq, ro, es, fr, de). Arabo e
 * cinese non sono coperti da questi caratteri e usano i font di sistema,
 * come già accadeva prima.
 *
 * INTER e FRAUNCES SONO FONT VARIABILI. Un solo file copre l'intero asse
 * dei pesi (Inter: wght 100-900; Fraunces: opsz 9-144 e wght 100-900), e
 * si dichiara con un intervallo — `font-weight: 100 900` — non con un
 * @font-face per taglio. Prima ce n'erano cinque per Inter e quattro per
 * Fraunces, tutti puntati allo stesso file: ridondanti e, peggio,
 * incompleti (font-weight:800 era usato nel CSS dell'app ma non
 * dichiarato qui, quindi ricadeva sul 700). Con l'intervallo qualunque
 * peso funziona. L'asse ottico di Fraunces è gestito dal browser tramite
 * `font-optical-sizing: auto`, che è il valore predefinito: i titoli
 * grandi usano i disegni da display, le etichette piccole quelli da
 * testo, senza che serva scriverlo.
 *
 * IBM Plex Mono è invece statico: tre file, tre pesi, tre @font-face.
 *
 * Per aggiornarli: riscaricare da Google Fonts i soli blocchi latin e
 * latin-ext e sostituire i .woff2 in questa cartella. Se un giorno il
 * file scaricato non fosse più variabile, questi due blocchi vanno
 * riespansi in un @font-face per peso.
 */

/* Range Unicode dei due sottoinsiemi, ripetuti perché il CSS non ha
   variabili utilizzabili dentro un descrittore @font-face.
   latin-ext: U+0100-02BA, U+02BD-02C5, ... U+A720-A7FF
   latin:     U+0000-00FF, U+0131, U+0152-0153, ... U+FFFD           */

/* ============ FRAUNCES (variabile: opsz 9-144, wght 100-900) ============ */

/* latin-ext */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url(../fonts/fraunces-var-latin-ext.woff2) format('woff2');
  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;
}

/* latin */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url(../fonts/fraunces-var-latin.woff2) format('woff2');
  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;
}

/* ============ INTER (variabile: wght 100-900) ============ */

/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url(../fonts/inter-var-latin-ext.woff2) format('woff2');
  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;
}

/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url(../fonts/inter-var-latin.woff2) format('woff2');
  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;
}

/* ============ IBM PLEX MONO (statico: 400, 500, 600) ============ */

/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-400-latin-ext.woff2) format('woff2');
  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;
}

/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-400-latin.woff2) format('woff2');
  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;
}

/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-500-latin-ext.woff2) format('woff2');
  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;
}

/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-500-latin.woff2) format('woff2');
  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;
}

/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-600-latin-ext.woff2) format('woff2');
  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;
}

/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/ibm-plex-mono-600-latin.woff2) format('woff2');
  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;
}
