/* Polices auto-hébergées — Aldrich, Oxanium, Geist Mono,
 * Bodoni Moda, Fraunces, Andika
 * ==========================================
 *
 * Remplace la dépendance à fonts.googleapis.com / fonts.gstatic.com.
 * Branché le 2026-08-18 dans les 11 templates qui chargeaient les polices
 * depuis le CDN, et les deux domaines Google ont été retirés de la CSP
 * (index.php ET .htaccess -- double source, cf le commentaire dans index.php).
 *
 * Trois fichiers seulement, parce qu'Oxanium est une police VARIABLE : un
 * seul binaire couvre toutes les graisses de 200 à 800, là où l'ancienne
 * tentative (juillet, jamais branchée) embarquait un fichier par graisse et
 * n'en couvrait que deux (400 et 700) sur les sept demandées par les pages.
 *
 * unicode-range : le navigateur ne télécharge le fichier latin-ext que s'il
 * rencontre un caractère qui l'exige. Une page en français n'en charge donc
 * qu'un seul (14 Ko pour Oxanium, 16 Ko pour Aldrich).
 *
 * Pour rafraîchir depuis Google (nouvelle version de la police) :
 *   curl -A "Mozilla/5.0 ... Chrome/120.0 ..." \
 *     "https://fonts.googleapis.com/css2?family=Aldrich&family=Oxanium:wght@200..800&display=swap"
 *   puis télécharger les URL fonts.gstatic.com qu'elle référence.
 * L'User-Agent est indispensable : sans lui Google sert du .ttf, pas du woff2.
 *
 * Licence : les six familles sont sous SIL Open Font License 1.1
 * (cf OFL.txt dans ce dossier), qui autorise l'auto-hébergement.
 */

/* ── Aldrich — une seule graisse (400), latin uniquement ────────────────── */
@font-face {
    font-family: 'Aldrich';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('/public/fonts/aldrich-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;
}

/* ── Oxanium — police variable : UNE déclaration couvre 200→800 ─────────── */
@font-face {
    font-family: 'Oxanium';
    font-style: normal;
    font-weight: 200 800;
    font-display: swap;
    src: url('/public/fonts/oxanium-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;
}

@font-face {
    font-family: 'Oxanium';
    font-style: normal;
    font-weight: 200 800;
    font-display: swap;
    src: url('/public/fonts/oxanium-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;
}

/* ── Geist Mono — variable 100→900, pour le style « editorial » de la page
      « À propos » d'un espace (cf public-about.php). Comme Oxanium, UNE
      déclaration couvre toutes les graisses. ───────────────────────────── */
@font-face {
    font-family: 'Geist Mono';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('/public/fonts/geist-mono-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;
}

@font-face {
    font-family: 'Geist Mono';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('/public/fonts/geist-mono-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;
}

/* ── Bodoni Moda — variable 400→900, deux axes (opsz 6→96 et wght). Le
      navigateur ajuste l'axe optique tout seul (font-optical-sizing vaut
      auto par défaut), aucune déclaration supplémentaire n'est nécessaire. ── */
@font-face {
    font-family: 'Bodoni Moda';
    font-style: normal;
    font-weight: 400 900;
    font-display: swap;
    src: url('/public/fonts/bodoni-moda-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;
}

@font-face {
    font-family: 'Bodoni Moda';
    font-style: normal;
    font-weight: 400 900;
    font-display: swap;
    src: url('/public/fonts/bodoni-moda-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;
}

/* ── Fraunces — variable 400→700, deux axes (opsz 9→144 et wght). Police
      d'affichage d'Explorateurs. Comme pour Bodoni, l'axe optique se règle
      seul via font-optical-sizing.
      Plus lourde que les autres : 66 Ko en latin, contre 14 pour Oxanium.
      C'est le prix d'une police à fort caractère, et elle n'est chargée
      que par les pages qui la demandent. ───────────────────────── */
@font-face {
    font-family: 'Fraunces';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('/public/fonts/fraunces-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;
}

@font-face {
    font-family: 'Fraunces';
    font-style: normal;
    font-weight: 400 700;
    font-display: swap;
    src: url('/public/fonts/fraunces-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;
}

/* ── Andika — dessinée par SIL pour l'alphabétisation. Police unique
      d'Explorateurs, titres et texte : elle remplace Fraunces et la pile
      « ronde » du système.

      Ce qui la distingue n'est pas son allure mais ses lettres : « a » et
      « g » à un seul étage, comme à l'école, et un « l » à empattement qui
      ne se confond pas avec le « I ». Pour trois enfants de trois et
      quatre ans qui apprennent à lire, c'est le critère qui compte.

      Elle n'est PAS variable : deux graisses, donc quatre fichiers. Son
      latin-ext pèse 81 Ko — le jeu de glyphes couvre des dizaines de
      langues africaines. C'est le prix d'une police conçue pour
      l'alphabétisation, et il n'est payé que par les pages qui
      l'appellent. ────────────────────────────────────────── */

@font-face {
    font-family: 'Andika';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('/public/fonts/andika-latin-400.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: 'Andika';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('/public/fonts/andika-latin-ext-400.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;
}

@font-face {
    font-family: 'Andika';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('/public/fonts/andika-latin-700.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: 'Andika';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('/public/fonts/andika-latin-ext-700.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;
}
