/* Polices servies par nous, jamais par Google.
   ─────────────────────────────────────────────────────────────────────────
   Le site affiche « conforme à la Loi 25 ». Charger les polices depuis
   fonts.googleapis.com envoyait l'adresse IP de chaque visiteur à Google
   avant même qu'il ait vu le bandeau de consentement. C'était une
   contradiction, et c'est réglé : plus aucune requête ne sort du domaine.

   Provenance : paquets npm @fontsource, le 22 septembre 2026.
     @fontsource/newsreader      5.3.0
     @fontsource/ibm-plex-sans   5.3.0
     @fontsource/ibm-plex-mono   5.3.0
   Licence SIL Open Font 1.1 pour les trois — voir assets/polices/LICENCE-*.txt.

   Ce qui est livré, et pourquoi pas plus :

   - Sous-ensemble « latin » seulement. Le sous-ensemble « latin-ext » a été
     mesuré : il ne contient AUCUN des 23 caractères non-ASCII du site. Les
     accents français (é è à â ç ê î ô ù), le œ, les guillemets et le tiret
     cadratin sont tous dans « latin ». Livrer latin-ext aurait ajouté 90 ko
     pour zéro glyphe utilisé.

   - Graisses réellement employées : 400/500/600 pour le serif et le sans,
     400/500 pour le mono. Rien d'autre n'apparaît dans les feuilles.

   - Aucun italique. Les sept <em> du site sont remis droits par
     `font-style: normal` (layout.css:23 et :282).

   Une seule réserve, mesurée : la flèche « → » (U+2192) n'existe dans aucune
   des trois polices. Elle est rendue par la police de repli du système —
   exactement comme avant, puisque Google servait les mêmes sous-ensembles.
   Ce n'est pas une régression, mais c'est à savoir avant de la déplacer.

   `font-display: swap` : le texte s'affiche tout de suite dans la police de
   repli, puis bascule. Jamais de page blanche.
   ───────────────────────────────────────────────────────────────────────── */

/* Plage latine, telle que la déclare @fontsource (unicode.json). */

/* ── Newsreader (serif) ──────────────────────────────────── */
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../assets/polices/newsreader-latin-400-normal.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;
}

@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../assets/polices/newsreader-latin-500-normal.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;
}

@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../assets/polices/newsreader-latin-600-normal.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 Sans ───────────────────────────────────────── */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../assets/polices/ibm-plex-sans-latin-400-normal.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;
}

@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../assets/polices/ibm-plex-sans-latin-500-normal.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;
}

@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../assets/polices/ibm-plex-sans-latin-600-normal.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 ───────────────────────────────────────── */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../assets/polices/ibm-plex-mono-latin-400-normal.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;
}

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