/*
 * fonts.css — polices vendorisées (16.B lot 7, Direction D — PV 16.0 §4)
 *
 * Trois familles, servies par le binaire (embed.FS, ihm/styles/fonts/) :
 *   - 'IBM Plex Sans'  → chrome (marque, navigation)   — token --font-chrome
 *   - 'Newsreader'     → titres de contenu (h1-h3)     — token --font-display
 *   - 'Public Sans'    → corps                          — token --font-body
 * Les tokens vivent dans custom.css ; cette feuille ne porte QUE les @font-face.
 *
 * Pourquoi une feuille séparée liée par index.html (et pas custom.css) :
 * une @font-face est rattachée au DOCUMENT ; déclarée dans une feuille adoptée
 * par un Shadow DOM (sharedStyles) elle est ignorée — la mettre dans custom.css
 * la dupliquerait inutilement dans chaque shadow root.
 *
 * Sous-ensemble « latin » (unicode-range recopié des paquets fontsource) : couvre
 * le français (œ U+0152-0153, guillemets, €). Hors plage → repli de la pile
 * système (voir custom.css). Provenance, versions, SHA-256 : fonts/VENDOR.md.
 * Souveraineté : aucun appel sortant — CSP default-src 'self' couvre font-src.
 */

/* IBM Plex Sans — statique, 400 / 500 / 600 droit */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(fonts/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-display: swap;
  font-weight: 500;
  src: url(fonts/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-display: swap;
  font-weight: 600;
  src: url(fonts/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;
}

/* Newsreader — variable (axe wght 200-800), droit */
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-display: swap;
  font-weight: 200 800;
  src: url(fonts/newsreader-latin-wght-normal.woff2) format('woff2-variations');
  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;
}

/* Public Sans — variable (axe wght 100-900), droit + italique */
@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url(fonts/public-sans-latin-wght-normal.woff2) format('woff2-variations');
  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: 'Public Sans';
  font-style: italic;
  font-display: swap;
  font-weight: 100 900;
  src: url(fonts/public-sans-latin-wght-italic.woff2) format('woff2-variations');
  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;
}
