/* L'ÉCHELLE TYPOGRAPHIQUE DU JEU — source unique des tailles de texte.
   Chargée par la coque `jeu` ET par la coque `conseil`.

   ⚠️ POURQUOI CE FICHIER EXISTE, ET CE QU'IL RÉPARE. Mesuré le 21 septembre 2026 sur la préprod :
   un joueur qui règle la taille de police de son navigateur — le réglage qui change la RACINE —
   n'obtenait presque rien sur les pages du Monde 0. À racine 32 px, le corps de texte passait
   bien de 16 à 32 (parce qu'aucune de nos règles ne le touche), mais les titres restaient à
   21-38 px et les petits libellés à 9-11 px. Deux conséquences : la hiérarchie s'inversait — des
   paragraphes plus gros que les titres qui les coiffent — et surtout **celui qui a le plus besoin
   d'un grand texte gardait ses surtitres à 11 px**. C'est ce second point qui est le défaut ;
   l'inversion n'en était que le symptôme visible.

   La cause était mécanique : sur `/premieres-cles`, le paquet de l'application déclare 176 tailles
   en relatif contre 4 en px — c'étaient NOS feuilles qui figeaient, avec 1 307 `font-size` en px
   dans `public/pz/`. Arbitrage de Codex : « quelques variables `rem`/`clamp()` communes au Monde 0
   pour le corps, les petits libellés et les titres. Ne pas convertir mécaniquement. »

   ⚠️ IL NE CONTIENT QUE DES JETONS, JAMAIS UNE RÈGLE — c'est le patron de `public/site/tokens.css`
   (la charte du site public), et c'est ce qui le rend chargeable partout sans risque : aucun nom
   de classe n'en sort, donc rien ne peut entrer en collision avec une page hôte.

   ⚠️ LES NOMS DISENT LA VALEUR D'ORIGINE, PAS LE RÔLE, et c'est délibéré. Un nom sémantique
   (`--pz-fs-petit`) obligerait à trancher, sélecteur par sélecteur, si un `13px` est « un petit
   libellé » ou « du corps de texte » : un millier d'arbitrages que personne ne peut vérifier. Un
   nom par valeur rend la conversion mécaniquement contrôlable — `13px` devient
   `var(--pz-fs-13, 13px)`, rien d'autre — donc relisable ligne à ligne face à la maquette. Les
   rôles, eux, sont déjà portés par les sélecteurs.

   ⚠️ ET CHAQUE USAGE PORTE SON REPLI : `var(--pz-fs-11, 11px)`. C'est la doctrine déjà écrite
   dans `pz_theme.css` (« une page servie sans cette feuille reste correcte plutôt que
   transparente ») et ici elle est vitale : un `var()` qui ne résout pas ne tombe pas sur une
   valeur par défaut, il fait HÉRITER. Un surtitre sans repli passerait donc à 16 px — visible —
   sur toute page servie sans ce fichier.
   ⓘ L'ordre de chargement, lui, est indifférent : une propriété personnalisée se résout au moment
     du calcul, pas à celui de la déclaration. Seule compte la PRÉSENCE de la feuille.

   ⚠️ CE QUE CE FICHIER NE PEUT PAS RÉPARER, et qui demande une autre main :
   `app/assets/stylesheets/application.scss:361` porte `h2 { font-size: 22px !important }` sous
   `media-breakpoint-down(md)`, soit 991,98 px. Mesuré : le `h2` de section rend 22 px à 390 et
   900 px, 38 px à 1 100 et 1 300. Aucune conversion de `public/pz/` ne peut donc déplacer un `h2`
   sur téléphone — c'est une seule ligne, dans une zone qui n'est pas la mienne, et elle est
   signalée au portable. Tant qu'elle est là, les `h2` restent figés sous 992 px.

   L'échelle sort de l'histogramme des valeurs réellement employées, pas d'une théorie : les neuf
   valeurs de 8 à 16 px font 72,9 % des 1 307 occurrences. Une valeur qui n'apparaît qu'une ou
   deux fois ne reçoit pas de jeton — elle passe en `rem` sans variable.

   ⚠️ LA FRONTIÈRE EST À 18 px, ET ELLE EST MÉCANIQUE. Les jetons s'arrêtent là parce que la
   décision de Boris sépare deux régimes : « corps et libellés en plein, grands titres
   plafonnés ». Une taille de 18 px ou moins est du texte qu'on LIT : elle suit la racine
   intégralement, donc un jeton. Une taille de 19 px ou plus est un TITRE : elle devient un
   `clamp(valeur, rem, plafond)` écrit sur place, avec son propre plafond — donc pas de jeton,
   puisqu'il n'y aurait rien à mutualiser entre deux titres de plafonds différents.
   C'est pourquoi `--pz-fs-20`, `--pz-fs-22` et `--pz-fs-25`, que j'avais déclarés d'abord, ont
   été RETIRÉS : aucun usage ne pouvait les consommer. Un jeton mort est une fausse promesse. */

:root {
  --pz-fs-8:  0.5rem;
  --pz-fs-9:  0.5625rem;
  --pz-fs-10: 0.625rem;
  --pz-fs-11: 0.6875rem;
  --pz-fs-12: 0.75rem;
  --pz-fs-13: 0.8125rem;
  --pz-fs-14: 0.875rem;
  --pz-fs-15: 0.9375rem;
  --pz-fs-16: 1rem;
  --pz-fs-17: 1.0625rem;
  --pz-fs-18: 1.125rem;
}
