/* POLICES DU SITE, HÉBERGÉES ICI — mission T, lot 3 (correctif CI, 08/10/2026).
 *
 * Plus Jakarta Sans et Playfair Display (SIL Open Font License 1.1 : public/fonts/OFL-*.txt)
 * sont servies par le site lui-même. Plus aucune page ne charge rien depuis les domaines de
 * Google Fonts (tests/polices-locales.mjs) ; la CSP de server.js ne les autorise plus.
 * Fichiers : les sous-ensembles latin et latin-ext tels que Google Fonts les sert (polices
 * VARIABLES : un fichier couvre toutes les graisses).
 *
 * LES POLICES DE REPLI AUX MÊMES MESURES. Pendant que la police arrive (font-display: swap),
 * ou si elle n'arrive pas, la page s'affiche dans une police du système RÉGLÉE pour occuper
 * la même place : rien ne bouge à l'arrivée de la police, et la ligne de flottaison est la
 * même dans les deux cas (tests/flottaison-analyse.mjs mesure les deux). Les réglages sont
 * MESURÉS dans un navigateur (canvas à 1000 px) contre Arial et Times New Roman, dont
 * Liberation Sans et Liberation Serif (Linux) et Arimo et Tinos ont les mêmes métriques :
 *   Plus Jakarta Sans  : ascendante 1,038 em, descendante 0,222 em, interligne nul ;
 *                        largeur ×1.0587 d'Arial en graisse normale, ×1.0060 d'Arial Bold ;
 *   Playfair Display   : ascendante 1,082 em, descendante 0,251 em, interligne nul ;
 *                        largeur ×1.0752 de Times New Roman Bold (titres en 600-700).
 * Une face de repli par graisse : sans elle, le gras serait SYNTHÉTISÉ à partir du normal,
 * plus large, et le réglage ne vaudrait plus.
 *
 * ET QUAND AUCUNE POLICE AUX MÉTRIQUES D'ARIAL N'EST INSTALLÉE : un Linux sans Liberation
 * retombe sur DejaVu Sans, BEAUCOUP plus large (Plus Jakarta Sans n'en fait que ×0.9325 en
 * normal, ×0.842 en gras) ; Android, sur Roboto (×1.0679, ×1.0708). Chacune a sa famille
 * réglée, à la suite dans les piles : une face local() ne porte qu'un réglage, et le navigateur
 * passe à la famille suivante quand aucune source locale de la précédente n'existe.
 * Playfair Display : DejaVu Serif Bold (×0.8039). */

@font-face {
  font-family: "Plus Jakarta Sans";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("/fonts/plus-jakarta-sans-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: "Plus Jakarta Sans";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("/fonts/plus-jakarta-sans-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Playfair Display";
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url("/fonts/playfair-display-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: "Playfair Display";
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url("/fonts/playfair-display-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: "Plus Jakarta Sans Repli";
  src: local("Arial"), local("ArialMT"), local("Liberation Sans"), local("Arimo");
  font-weight: 100 549;
  size-adjust: 105.87%;
  ascent-override: 98.05%;
  descent-override: 20.97%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Plus Jakarta Sans Repli";
  src: local("Arial Bold"), local("Arial-BoldMT"), local("Liberation Sans Bold"), local("Arimo Bold");
  font-weight: 550 900;
  size-adjust: 100.6%;
  ascent-override: 103.18%;
  descent-override: 22.07%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Playfair Display Repli";
  src: local("Times New Roman"), local("TimesNewRomanPSMT"), local("Liberation Serif"), local("Tinos");
  font-weight: 100 549;
  size-adjust: 107.52%;
  ascent-override: 100.63%;
  descent-override: 23.34%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Playfair Display Repli";
  src: local("Times New Roman Bold"), local("TimesNewRomanPS-BoldMT"), local("Liberation Serif Bold"), local("Tinos Bold");
  font-weight: 550 900;
  size-adjust: 107.52%;
  ascent-override: 100.63%;
  descent-override: 23.34%;
  line-gap-override: 0%;
}

@font-face {
  font-family: "Plus Jakarta Sans Repli DejaVu";
  src: local("DejaVu Sans");
  font-weight: 100 549;
  size-adjust: 93.25%;
  ascent-override: 111.31%;
  descent-override: 23.81%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Plus Jakarta Sans Repli DejaVu";
  src: local("DejaVu Sans Bold"), local("DejaVuSans-Bold");
  font-weight: 550 900;
  size-adjust: 84.2%;
  ascent-override: 123.28%;
  descent-override: 26.37%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Plus Jakarta Sans Repli Roboto";
  src: local("Roboto"), local("Roboto-Regular");
  font-weight: 100 549;
  size-adjust: 106.79%;
  ascent-override: 97.2%;
  descent-override: 20.79%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Plus Jakarta Sans Repli Roboto";
  src: local("Roboto Bold"), local("Roboto-Bold");
  font-weight: 550 900;
  size-adjust: 107.08%;
  ascent-override: 96.94%;
  descent-override: 20.73%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Playfair Display Repli DejaVu";
  src: local("DejaVu Serif"), local("DejaVuSerif");
  font-weight: 100 549;
  size-adjust: 80.39%;
  ascent-override: 134.59%;
  descent-override: 31.22%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Playfair Display Repli DejaVu";
  src: local("DejaVu Serif Bold"), local("DejaVuSerif-Bold");
  font-weight: 550 900;
  size-adjust: 80.39%;
  ascent-override: 134.59%;
  descent-override: 31.22%;
  line-gap-override: 0%;
}
