/* ================================================================
   LES POLICES DE HBL, EMBARQUEES ET PLAFONNEES  (2026-09-21)

   POURQUOI CE FICHIER EXISTE

   Le theme declare Montserrat et Open Sans depuis l origine
   (shared/tokens.js, HBL_FONT). Le shell de l application ne les a
   JAMAIS chargees : public/index.html portait un preconnect vers
   Google Fonts et aucune feuille de style. Seules les pages de la
   vitrine les chargeaient. Mesure du 2026-09-21 sur le app.html servi
   en production : zero occurrence de fonts.googleapis.com/css2.

   Donc ce que voyaient l admin, le client et le chauffeur depuis
   toujours n etait pas Montserrat : c etait le repli generique
   sans-serif, soit Arial sous Windows et Roboto sous Android. Le
   proprietaire l a signale autrement — « c est un peu brut ».

   POURQUOI EMBARQUE PLUTOT QU APPELE CHEZ GOOGLE

   Les applications Android et iOS embarquent ce meme bundle et
   tournent sur la piste, souvent sans reseau. Une police appelee chez
   Google ne s afficherait pas la ou elle compte le plus. 196 Ko pour
   quatre fichiers, servis par notre propre hebergement.

   POURQUOI CINQ FICHIERS ET PAS VINGT

   Google sert des polices VARIABLES : les URL de 400, 500 et 600 sont
   le meme fichier, verifie au sha256. On garde donc un fichier par
   famille et par sous-ensemble — latin et latin etendu, les seuls dont
   HBL a besoin pour le francais, l anglais et le haoussa.

   L ARABE (2026-09-22)

   Ce cartouche a dit pendant un jour que l arabe ne venait pas d ici et
   que l ecran arabe retombait sur la police du systeme, en appelant ca
   une limite assumee. C etait faux deux fois.

   Faux d abord parce que App.jsx portait un @import vers Google qui
   TELECHARGEAIT Noto Naskh Arabic a chaque ouverture de l application.
   Faux ensuite — et c est le plus cher — parce qu aucune pile de police
   du depot ne l a jamais NOMMEE. Le fichier arrivait et aucune regle ne
   le demandait : l arabe retombait bien sur la police du systeme, mais
   apres avoir paye le telechargement. Une valeur declaree que rien ne va
   chercher, pour la troisieme fois dans ce dossier.

   Le sous-ensemble arabe est donc embarque ici, et les deux piles de
   HBL_FONT le nomment juste apres la famille latine. Les autres
   sous-ensembles de Noto Naskh — latin, math, symboles — ne sont PAS
   embarques : Montserrat et Open Sans les couvrent deja, et les prendre
   aurait double le poids pour rien. L unicode-range ci-dessous fait le
   reste : un ecran en francais ne telecharge pas ce fichier, A CONDITION
   qu aucun glyphe arabe n y soit dessine dans une pile qui nomme Naskh.
   La vitrine l a appris le 2026-10-09 : le bouton « عربي » du selecteur
   suffisait a faire partir 92 Ko en francais. Il est dessine dans la police
   du systeme hors de l arabe (public/web/_layout.html, `.lang button`).
   ================================================================ */

@font-face {
  font-family: "Montserrat";
  font-style: normal;
  /* PLAFOND VOLONTAIRE. Ces fichiers sont des polices VARIABLES : un seul
     fichier couvre tout l axe de graisse. Declarer 400 600 au lieu de
     100 900 fait que toute demande superieure est RABATTUE a 600 par le
     moteur. C est le seul levier qui allege les 2170 appels en 700, 800
     et 900 du depot sans en toucher un seul. Le jour ou on veut du vrai
     800, on remonte ce nombre ici, a un endroit. */
  font-weight: 400 600;
  font-display: swap;
  src: url("./montserrat-latin-ext.woff2") format("woff2-variations");
  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: "Montserrat";
  font-style: normal;
  /* PLAFOND VOLONTAIRE. Ces fichiers sont des polices VARIABLES : un seul
     fichier couvre tout l axe de graisse. Declarer 400 600 au lieu de
     100 900 fait que toute demande superieure est RABATTUE a 600 par le
     moteur. C est le seul levier qui allege les 2170 appels en 700, 800
     et 900 du depot sans en toucher un seul. Le jour ou on veut du vrai
     800, on remonte ce nombre ici, a un endroit. */
  font-weight: 400 600;
  font-display: swap;
  src: url("./montserrat-latin.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: "Open Sans";
  font-style: normal;
  /* PLAFOND VOLONTAIRE. Ces fichiers sont des polices VARIABLES : un seul
     fichier couvre tout l axe de graisse. Declarer 400 600 au lieu de
     100 900 fait que toute demande superieure est RABATTUE a 600 par le
     moteur. C est le seul levier qui allege les 2170 appels en 700, 800
     et 900 du depot sans en toucher un seul. Le jour ou on veut du vrai
     800, on remonte ce nombre ici, a un endroit. */
  font-weight: 400 600;
  font-display: swap;
  src: url("./opensans-latin-ext.woff2") format("woff2-variations");
  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: "Open Sans";
  font-style: normal;
  /* PLAFOND VOLONTAIRE. Ces fichiers sont des polices VARIABLES : un seul
     fichier couvre tout l axe de graisse. Declarer 400 600 au lieu de
     100 900 fait que toute demande superieure est RABATTUE a 600 par le
     moteur. C est le seul levier qui allege les 2170 appels en 700, 800
     et 900 du depot sans en toucher un seul. Le jour ou on veut du vrai
     800, on remonte ce nombre ici, a un endroit. */
  font-weight: 400 600;
  font-display: swap;
  src: url("./opensans-latin.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: "Noto Naskh Arabic";
  font-style: normal;
  /* MEME PLAFOND QUE LES DEUX AUTRES, et pour la meme raison : ce fichier
     est une police VARIABLE dont l axe va de 400 a 700. Le declarer sur
     400 600 rabat toute demande superieure, donc l arabe suit exactement
     la meme graisse que le francais au lieu de paraitre plus gras sur le
     meme ecran. */
  font-weight: 400 600;
  font-display: swap;
  src: url("./naskh-arabic.woff2") format("woff2-variations");
  /* Le seul sous-ensemble embarque : l arabe et sa ponctuation. Tout ce
     qui n est pas dans cette plage part chercher Montserrat ou Open Sans,
     donc un ecran en francais ne telecharge jamais ce fichier. */
  unicode-range: U+0600-06FF, U+0750-077F, U+0870-088E, U+0890-0891, U+0897-08E1, U+08E3-08FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE70-FE74, U+FE76-FEFC;
}

/* Ceinture et bretelles : sans cette ligne, un navigateur qui ne trouve
   pas la graisse demandee peut FABRIQUER du gras en epaississant les
   traits. Le resultat est plus lourd que le vrai 700 et plus sale. On
   le lui interdit — le plafond de 600 ci-dessus doit etre le dernier
   mot. */
html, body, input, button, textarea, select {
  font-synthesis-weight: none;
  -webkit-font-synthesis: none;
}
