/* MLsign — L'aréna et la lumière (validée 2026-07-26)
   DÉRIVÉ de design/build.mjs, plus une copie. Le générateur n'émet ni --plomb,
   --creux, --pli, ni les six rôles d'encre, ni la rampe du crépuscule : ce
   fichier a divergé volontairement et il s'édite à la main. design/build.mjs
   n'écrit jamais dans landing/mlsign-v7/, rien ici ne se fait écraser. */
:root {
  /* Le fond. L'aréna éteinte — jamais du noir pur. */
  --nuit: #0C1620;
  /* Premier niveau de surface. Sections, panneaux. */
  --fosse: #14232F;
  /* Cartes et blocs — là où l'information s'assoit. */
  --tribune: #1E3140;
  /* Survol, séparations internes, relief discret. */
  --gradins: #2E4250;
  /* Bordures, filets, chrome secondaire. */
  --acier: #3E515D;
  /* Texte secondaire — la foule floue. */
  --brume: #8A99A0;
  /* Texte courant et titres d'interface. Jamais blanc pur. */
  --craie: #C9D3D9;
  /* RÉSERVÉ au contenu diffusé et aux chiffres de preuve. */
  --projecteur: #FFFFFF;
  /* LA LUMIÈRE CLAIRE A CHANGÉ DE TEMPÉRATURE LE 14.08. Elle était chaude
     (papier #F3F1EC, creux #E9E5DC, pli #DCD7CB, une gamme d'encre et de
     papier) ; elle devient la gamme neutre froide du proto d'Axel, et elle
     n'est plus l'envers de la nuit : elle est le site. Décision de Nazaire,
     « on part sur ce qu'Axel a décidé ».
     Trois niveaux, et l'écart entre eux est volontairement faible : la page
     possède le blanc, une section sur deux se retire d'un demi-ton, une carte
     se retire encore. Ce qui sépare deux objets n'est plus le contraste, c'est
     le RAYON et l'OMBRE. */
  --blanc: #FEFEFD;
  --papier: #F6F7F5;
  /* L'humain et le vivant : session, alerte, incident. Pastilles, jamais d'aplats. */
  --braise: #B54432;
  /* Chaleur secondaire : attente, badges, transitions. */
  --cuir: #8A5A2E;
  /* La donnée qui vit : battements, traces, relevés. */
  --halo: #7A9EB8;
  /* Point courant d'une série, éclat de donnée. */
  --halo-vif: #A8CCE0;
  /* L'encre du jour. Elle ne vaut plus --nuit : le bleu de l'aréna sur une page
     blanche tirait vers le froid marine, la page d'Axel est encrée en noir vert
     très sourd. 17,55:1 sur le blanc. */
  --encre-jour: #101312;
  /* L'encre douce du jour, 6,54:1 sur le blanc : AA texte, AAA au-dessus de
     18,66 px. C'est la valeur d'Axel, plus claire que notre plomb. */
  --plomb: #515854;
  /* Premier retrait du blanc : cartes, champs, surfaces posées. */
  --creux: #F1F3F2;
  /* Le filet, et le survol. 1,25:1 sur le blanc : il ne se lit plus comme un
     trait, il se lit comme un bord. C'est le rayon qui porte l'objet
     maintenant, pas la bordure. */
  --pli: #E3E7E4;
  /* LES DEUX ACCENTS DU PROTO. Le jaune signale, le vert valide. Ils DOUBLENT
     fonctionnellement --donnee (halo) et --attente (cuir), et c'est assumé :
     ils ne parlent pas au même endroit. Le halo est la donnée qui vit dans un
     relevé de nuit, le jaune est le signal d'une interface de jour.
     AUCUN DES DEUX N'EST UN TEXTE. Le jaune fait 1,53:1 sur le blanc et le vert
     3,64:1 : ils vivent en filet, en pastille et en aplat sous de l'encre,
     jamais en couleur de lettre. */
  --jaune: #F5C518;
  --vert: #1F9A63;

  /* Rôles sémantiques */
  --fond: var(--nuit);
  --fond-clair: var(--papier);
  --surface: var(--fosse);
  --carte: var(--tribune);
  --survol: var(--gradins);
  --bordure: var(--acier);
  --texte: var(--craie);
  --texte-secondaire: var(--brume);
  --contenu: var(--projecteur);
  --preuve: var(--projecteur);
  --live: var(--halo);
  --alerte: var(--braise);
  --attente: var(--cuir);
  --donnee: var(--halo);
  --donnee-vive: var(--halo-vif);
  --action: var(--halo-vif);
  --irreversible: var(--braise);
  --encre: var(--encre-jour);
  --encre-douce: var(--plomb);
  --signal: var(--jaune);
  --valide: var(--vert);
  --surface-claire: var(--creux);
  --survol-clair: var(--pli);
  --bordure-champ: var(--brume);
  --focus: var(--halo-vif);

  /* L'ANGLE VIF EST TOMBÉ, SUR LE SITE ET SUR LUI SEUL. « Brand : zéro radius,
     l'angle est vif » tenait tant que le site public était le registre brand ;
     il prend la grammaire d'objets du proto d'Axel, donc il prend ses rayons.
     PORTÉE : ce fichier, que design/build.mjs n'écrase jamais. design/tokens.json
     n'est pas touché, donc design/out/mlsign.css garde --radius: 0, le dashboard
     garde son 14 et l'app marcheur ne bouge pas d'un pixel. Le rayon reste la
     distinction entre les deux registres PRODUIT ; il ne distingue simplement
     plus le site public de rien.
     Trois rayons et pas huit : Axel en pose huit, dont cinq à l'intérieur de ses
     fausses interfaces, où ils sont du dessin, pas du système. */
  --radius: 28px;
  --radius-ui: 16px;
  --radius-pilule: 999px;
  --radius-produit: 14px;
  --hairline: 1px;

  /* LES OMBRES ENTRENT, ET SEULEMENT SOUS CE QUI FLOTTE. « Jamais d'ombre
     portée ni de dégradé décoratif, des deux côtés » devient : jamais sur une
     section, jamais sur un aplat de contenu, uniquement sous un objet qui se
     pose au-dessus de la page, la pilule de navigation, les interfaces
     incrustées. Une ombre sous une section est un faux relief ; une ombre sous
     un objet flottant dit à quelle hauteur il est.
     Valeurs d'Axel au caractère près (v6.css:60-61). */
  --ombre-flottante: 0 12px 40px rgb(16 19 18 / 0.10);
  --ombre-ui: 0 6px 24px rgb(16 19 18 / 0.08);

  /* LA RAMPE DU CRÉPUSCULE A ÉTÉ RETIRÉE avec le pivot, le 14.08. Elle
     n'existait que pour interpoler entre le jour et la nuit sur la section de
     bascule ; le site n'a plus qu'une lumière, et la nuit n'est plus une
     traversée, c'est un objet. Rien d'autre ne la lisait que css/bascule.css,
     supprimé le même jour. */

  /* Typographie, deux voix depuis le 14.08, et l'écart entre elles EST la
     hiérarchie. La direction Alpian tenait sur une seule famille suisse ; le
     site public prend une serif éditoriale au rang h1/h2 et garde la suisse
     partout ailleurs. L'app marcheur et le dashboard ne bougent pas : ils
     lisent design/out/mlsign.css, que ce fichier ne pilote pas.
     --wght-display existe parce qu'Instrument Serif N'A QU'UNE GRAISSE. Écrire
     700 dessus ne la graisse pas, ça demande au navigateur d'en synthétiser
     une : un faux gras, épaissi au trait, sur le plus grand caractère de la
     page. */
  --font-display: "Instrument Serif", Georgia, serif;
  --font-texte: "Switzer", sans-serif;
  --font-mono: "Fragment Mono", monospace;
  --wght-display: 400;
  --wght-titre: 700;
  --wght-fort: 900;
  --wght-texte: 400;
  --wght-medium: 500;
}
