/*
 * polices.css : les polices du produit, chargées depuis le disque.
 *
 * ══════════════════════════════════════════════════════════════════════
 *  MODE D'EMPLOI COMPLET : polices/LISEZ-MOI.md
 *  C'est là qu'est expliqué où déposer les fichiers, comment les nommer,
 *  et où les télécharger. Ce fichier-ci ne fait que les déclarer.
 * ══════════════════════════════════════════════════════════════════════
 *
 * AUCUNE REQUÊTE SORTANTE. Le produit ne demande plus rien à Google
 * Fonts ni à personne : tout se lit dans polices/, à côté du reste. Un
 * poste sans réseau affiche exactement la même chose qu'un poste
 * connecté, et rien de ce qui est consulté ne sort de la machine.
 *
 * LE REPLI EST AUTOMATIQUE, et c'est voulu. Un fichier absent n'est pas
 * une erreur : le navigateur ne trouve pas la face, la passe, et prend
 * la famille suivante de la pile écrite dans jetons.css :
 *
 *     "ABBvoice"  →  "Inter"  →  la police du système
 *
 * Rien ne casse, rien ne clignote, aucune ligne de code à changer :
 * déposer un fichier suffit à le faire apparaître, le retirer suffit à
 * revenir en arrière. « font-display: swap » garantit que le texte est
 * lisible tout de suite, avec le repli, pendant que la vraie police
 * arrive.
 *
 * Chaque face accepte quatre formats, du meilleur au plus courant :
 * woff2, woff, otf, ttf. Le navigateur prend le premier qu'il trouve ;
 * inutile donc de convertir quoi que ce soit : dépose ce que tu as reçu,
 * sous le nom attendu.
 *
 * Les quatre familles, et à quoi elles servent :
 *
 *   ABBvoice        la police de la marque, toute l'interface
 *   Inter           son repli, de dessin très proche
 *   IBM Plex Sans   l'intérieur de l'afficheur LCD des consoles
 *   IBM Plex Mono   ce qui se lit chiffre par chiffre : valeurs, codes
 *
 * À charger AVANT jetons.css, comme sur toutes les pages du produit.
 */

/* ---- ABBvoice : la marque ---------------------------------------------
 *
 * Les quatre faces officielles, sous leur nom de livraison ABB :
 * Lt (Light), Rg (Regular), Md (Medium), Bd (Bold). Elles sont nommées
 * ici comme elles arrivent du Brand Portal, pour qu'un renouvellement se
 * fasse par simple recopie, sans renommage et donc sans erreur possible.
 *
 * DEUX LIVRAISONS COHABITENT, et il faut le savoir avant de toucher à
 * ce bloc. Regular, Medium et Bold sont les fichiers COMPLETS reçus le
 * 20 août : 762 caractères, dont les flèches. La Light vient de la
 * livraison du 27 août, la seule qui la contienne, mais c'est un
 * sous-ensemble web de 401 caractères. Même dessin exactement, chasses
 * identiques à l'unité près ; seules changent la couverture et les
 * métriques verticales, d'où le recalage posé sur la Light plus bas.
 *
 * LES GRAISSES SUIVENT LA GUIDELINE : Light 300, Regular 400, Medium
 * 500, Bold 700 (habillage/design.md, section 1). Il n'existe pas de
 * face 600 chez ABB ; une règle CSS qui demande 600 obtient la 700, la
 * Bold, ce qui est exactement la face voulue pour un titre.
 *
 * Light et Bold sont des graisses d'exception : jamais en petit corps,
 * jamais généralisées (design.md, section 2.2).
 *
 * Elle n'est pas distribuée publiquement : c'est une police sous licence
 * ABB, à récupérer en interne. Tant qu'elle n'est pas là, tout s'affiche
 * en Inter, puis en police système. Voir polices/LISEZ-MOI.md.
 */

@font-face {
  font-family: "ABBvoice";
  font-style: normal;
  font-weight: 300;
  font-display: swap;

  /*
   * LA LIGHT SE CALE SUR LES TROIS AUTRES. Sa livraison déclare des
   * métriques verticales différentes (montante 1010, descendante 260,
   * aucun interligne, contre 719 / 281 / 270 pour les faces complètes).
   * Le texte s'y pose 0,15 em plus bas dans sa boîte, soit 2 px à 14 px
   * de corps : un mot en Light ne serait pas sur la ligne de ses
   * voisins, et le décalage se verrait partout où du texte est centré
   * dans une hauteur ferme, barre d'en-tête et boutons en tête.
   *
   * Ces trois lignes lui redonnent les métriques des trois autres. Les
   * retirer le jour où ABB livrera une Light complète : elles ne
   * corrigent pas un défaut de la police, elles rattrapent un écart
   * entre deux livraisons.
   */
  ascent-override: 71.9%;
  descent-override: 28.1%;
  line-gap-override: 27%;

  src: url("../polices/ABBvoice_W_Lt.woff2") format("woff2"),
       url("../polices/ABBvoice_W_Lt.woff")  format("woff"),
       url("../polices/ABBvoice_W_Lt.otf")   format("opentype"),
       url("../polices/ABBvoice_W_Lt.ttf")   format("truetype");
}

@font-face {
  font-family: "ABBvoice";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../polices/ABBvoice_W_Rg.woff2") format("woff2"),
       url("../polices/ABBvoice_W_Rg.woff")  format("woff"),
       url("../polices/ABBvoice_W_Rg.otf")   format("opentype"),
       url("../polices/ABBvoice_W_Rg.ttf")   format("truetype");
}

@font-face {
  font-family: "ABBvoice";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../polices/ABBvoice_W_Md.woff2") format("woff2"),
       url("../polices/ABBvoice_W_Md.woff")  format("woff"),
       url("../polices/ABBvoice_W_Md.otf")   format("opentype"),
       url("../polices/ABBvoice_W_Md.ttf")   format("truetype");
}

@font-face {
  font-family: "ABBvoice";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../polices/ABBvoice_W_Bd.woff2") format("woff2"),
       url("../polices/ABBvoice_W_Bd.woff")  format("woff"),
       url("../polices/ABBvoice_W_Bd.otf")   format("opentype"),
       url("../polices/ABBvoice_W_Bd.ttf")   format("truetype");
}

/* ---- Inter : le repli de l'interface ----------------------------------- */

@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../polices/inter-400.woff2") format("woff2"),
       url("../polices/inter-400.woff")  format("woff"),
       url("../polices/inter-400.otf")   format("opentype"),
       url("../polices/inter-400.ttf")   format("truetype");
}

@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../polices/inter-500.woff2") format("woff2"),
       url("../polices/inter-500.woff")  format("woff"),
       url("../polices/inter-500.otf")   format("opentype"),
       url("../polices/inter-500.ttf")   format("truetype");
}

@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../polices/inter-600.woff2") format("woff2"),
       url("../polices/inter-600.woff")  format("woff"),
       url("../polices/inter-600.otf")   format("opentype"),
       url("../polices/inter-600.ttf")   format("truetype");
}

/* ---- IBM Plex Sans : l'intérieur de l'afficheur ------------------------- */

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../polices/ibm-plex-sans-400.woff2") format("woff2"),
       url("../polices/ibm-plex-sans-400.woff")  format("woff"),
       url("../polices/ibm-plex-sans-400.otf")   format("opentype"),
       url("../polices/ibm-plex-sans-400.ttf")   format("truetype");
}

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../polices/ibm-plex-sans-500.woff2") format("woff2"),
       url("../polices/ibm-plex-sans-500.woff")  format("woff"),
       url("../polices/ibm-plex-sans-500.otf")   format("opentype"),
       url("../polices/ibm-plex-sans-500.ttf")   format("truetype");
}

@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../polices/ibm-plex-sans-600.woff2") format("woff2"),
       url("../polices/ibm-plex-sans-600.woff")  format("woff"),
       url("../polices/ibm-plex-sans-600.otf")   format("opentype"),
       url("../polices/ibm-plex-sans-600.ttf")   format("truetype");
}

/* ---- IBM Plex Mono : les valeurs et les codes --------------------------- */

@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../polices/ibm-plex-mono-400.woff2") format("woff2"),
       url("../polices/ibm-plex-mono-400.woff")  format("woff"),
       url("../polices/ibm-plex-mono-400.otf")   format("opentype"),
       url("../polices/ibm-plex-mono-400.ttf")   format("truetype");
}

@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../polices/ibm-plex-mono-500.woff2") format("woff2"),
       url("../polices/ibm-plex-mono-500.woff")  format("woff"),
       url("../polices/ibm-plex-mono-500.otf")   format("opentype"),
       url("../polices/ibm-plex-mono-500.ttf")   format("truetype");
}

/* ---- MC Afficheur : le relevé au point près de l'ACQ580 -----------------
 *
 * Ces trois fichiers ne viennent d'aucune fonderie : chaque glyphe a été
 * relevé, point par point, sur des captures de l'afficheur du variateur,
 * puis posé dans un fichier de police. Un cadratin vaut 16 px, un point
 * de l'afficheur vaut un point de la police : lue à 16 px, elle retombe
 * exactement sur la grille du matériel, sans anticrénelage.
 *
 * Elles ne servent QU'À l'afficheur des panneaux assistants, celui que
 * dessine le rendu « acx-ap-x ». Le reste du produit garde ABBvoice et
 * IBM Plex.
 *
 * ELLES NE PORTENT QUE CE QUE LES CAPTURES MONTRAIENT. Un caractère
 * jamais vu n'existe pas. Le navigateur allait alors le chercher dans
 * la famille suivante de la pile : le texte restait lisible, mais dans
 * une autre police, à une autre chasse, et l'auteur d'un guide n'avait
 * aucun moyen de savoir que l'afficheur mentait. D'où « Repli », en
 * queue de pile : une quatrième face qui ne porte qu'UN glyphe, un point
 * d'interrogation dans un cercle, mais que toute la carte des caractères
 * désigne. Ce que le relevé n'a pas se dessine donc en repli, et rien
 * d'autre : la police reste la seule liste de ce qu'on sait écrire, le
 * produit n'en tient aucune.
 *
 * Compléter la police, c'est fournir une capture de plus, pas dessiner :
 * polices/atelier/LISEZ-MOI.md dit comment.
 *
 * « Grand » est le troisième oeil : les chiffres de 24 points des
 * grandeurs surveillées et de la valeur en cours de réglage.
 */

@font-face {
  font-family: "MC Afficheur";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../polices/afficheur-rg.woff2") format("woff2");
}

@font-face {
  font-family: "MC Afficheur";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../polices/afficheur-bd.woff2") format("woff2");
}

@font-face {
  font-family: "MC Afficheur Grand";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../polices/afficheur-grand.woff2") format("woff2");
}

/* Les deux graisses pointent le même fichier : le pied de page est en
   700, et une face manquante ferait fabriquer un faux gras au
   navigateur, qui épaissirait la marque et la sortirait de la grille. */
@font-face {
  font-family: "MC Afficheur Repli";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../polices/afficheur-repli.woff2") format("woff2");
}

@font-face {
  font-family: "MC Afficheur Repli";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../polices/afficheur-repli.woff2") format("woff2");
}
