@charset "utf-8";
/* ==========================================================================
   wc2030-guide — polices auto-hebergees
   Contrat de portage §8. Aucune requete tierce : les woff2 viennent de
   assets/fonts/, plus aucun appel a fonts.googleapis.com / fonts.gstatic.com.

   Sous-ensembles conserves : latin + latin-ext uniquement.
   vietnamese, cyrillic et cyrillic-ext sont volontairement ecartes : le site
   est en anglais, et latin-ext couvre les noms propres dont nous avons besoin
   (Mbappe, Muller, Nazario, Pele, Estadio).

   Les unicode-range sont repris VERBATIM de la feuille Google : sans eux le
   navigateur telecharge les deux sous-ensembles au lieu du seul necessaire.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Archivo — variable, axes wght 400..800 et wdth 62%..125%
   Le corps de texte tourne a wght 400 / wdth 100% (cf. body dans theme.css).
   -------------------------------------------------------------------------- */

/* latin */
@font-face {
  font-family: "Archivo";
  font-style: normal;
  font-weight: 400 800;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url(../fonts/archivo-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: "Archivo";
  font-style: normal;
  font-weight: 400 800;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url(../fonts/archivo-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;
}

/* --------------------------------------------------------------------------
   2. IBM Plex Mono — 400 et 600
   -------------------------------------------------------------------------- */

/* latin — 400 */
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/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 — 400 */
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(../fonts/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 — 600 */
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/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;
}

/* latin-ext — 600 */
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(../fonts/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;
}

/* --------------------------------------------------------------------------
   3. Replis cales sur les metriques

   But : que la page peinte avec la police de repli occupe EXACTEMENT la meme
   hauteur que la page peinte avec la police finale, pour que le swap ne
   deplace rien (CLS). Les pourcentages sont ecrits litteralement — jamais
   via sprintf(), ou un "%" non double leverait une ValueError en PHP 8
   (contrat §2.9).

   Mesures fontTools, tables OS/2 sTypo* (le bit 7 fsSelection USE_TYPO_METRICS
   est actif sur les deux polices, donc sTypo* fait foi, pas hhea) :

     Archivo instancie a wght=400 wdth=100 : upm 1000, ascender 878,
       descender -210, lineGap 0.
       ATTENTION : l instance PAR DEFAUT du fichier variable est wght=600.
       Il faut donc instancier a 400 avant de mesurer, sinon on cale le repli
       sur une graisse que le corps de texte n utilise jamais.
     IBM Plex Mono : upm 1000, ascender 1025, descender -275, lineGap 0,
       chasse fixe 600 (monospace).

   Chasse moyenne : mesuree en sommant les chasses reelles d un paragraphe
   anglais representatif, et non via OS/2.xAvgCharWidth. xAvgCharWidth moyenne
   sur tout le jeu de glyphes de la fonte ; Archivo sous-ensemble et Arial
   complet n ont pas du tout le meme jeu, ce qui donnait 115,8% — faux de 17
   points. Contre-verifie dans Chromium : la largeur Arial predite tombe a
   0,28 px de la largeur mesuree sur 2114 px (0,01%).

     Archivo@400  130,1410 em   Arial  132,1270 em  (meme chaine)
     size-adjust      = 130,1410 / 132,1270      = 98,497%
     ascent-override  = (878/1000)  / 0,984969   = 89,140%
     descent-override = (210/1000)  / 0,984969   = 21,320%
     line-gap-override= 0 / 0,984969             = 0%

     Plex Mono 600/1000 em   Consolas 1126/2048 em
     size-adjust      = 0,600000 / 0,549805      = 109,130%
     ascent-override  = (1025/1000) / 1,091297   = 93,925%
     descent-override = (275/1000)  / 1,091297   = 25,199%

   Les overrides sont divises par le size-adjust parce que size-adjust remet a
   l echelle AUSSI les metriques : ascent finale = ascent-override x size-adjust.

   Reserve : le repli mono est cale sur Consolas (premier de la liste, present
   sur Windows). Menlo a une chasse de 1233/2048 em, soit un size-adjust ideal
   de 99,659% — une seule valeur ne peut pas servir les deux. Sur macOS le mono
   de repli sera donc ~9,5% trop large. Compromis assume : le mono ne porte ici
   que des etiquettes courtes et des cellules de tableau, jamais de prose.
   -------------------------------------------------------------------------- */

@font-face {
  font-family: "Archivo Fallback";
  src: local("Arial");
  size-adjust: 98.497%;
  ascent-override: 89.140%;
  descent-override: 21.320%;
  line-gap-override: 0%;
}

@font-face {
  font-family: "Plex Mono Fallback";
  src: local("Consolas"), local("Menlo");
  size-adjust: 109.130%;
  ascent-override: 93.925%;
  descent-override: 25.199%;
  line-gap-override: 0%;
}
