/* ------------------------------------------------------------------ *
 * JETONS — §23, l'UNIQUE source des couleurs, des tailles et des graisses
 * (docs/SPEC_23_design_system_fin.md, maquette docs/maquettes/maquette-direction-fine.html).
 *
 * Aucune couleur ni taille de police ne s'écrit ailleurs : `hygiene.test.js`
 * (« §23 — tokens.css est l'unique source ») le refuse, pour le CSS comme pour le JS.
 * Un composant qui a besoin d'une couleur la lit ICI, par son nom.
 *
 * Les noms sont COURTS parce que le palier du CSS livré ne monte pas (§4) : chaque
 * `var(--x)` coûte plus que la valeur qu'il remplace. Ils restent parlants : `--ink` le
 * texte, `--line` les traits, `--fs-13` le corps.
 *
 * Le mode sombre garde ses doubles (§1), mais SEULEMENT sur `[data-theme="dark"]` : « il
 * n'est pas activé » veut dire qu'une préférence système sombre ne doit pas le déclencher.
 * Même jeu de noms, autres valeurs — rien dans l'application ne sait quel thème est en cours.
 * ------------------------------------------------------------------ */
:root{
  /* Charte Élégance Française (26/09) : --corail-soft = corail-light ; --corail-fond = corail-btn, fond
     d'un bouton à texte, et lui seul (5,03:1 avec du blanc ; le corail : 3,00) */
  --corail:#E8725C; --corail-soft:#FEF0EC;
  --corail-fond:#BA4C36;
  /* S2 (03/10) : le texte d'un bouton --corail-fond est TOUJOURS blanc (commentaire ci-dessus,
     5,03:1) — --corail-fond lui-même ne bascule jamais (principe 4), son texte ne doit donc pas
     non plus suivre le thème. Un seul jeton, jamais redéfini en sombre : admin.css lisait
     --surface (blanc en clair par coïncidence, #111A2E en sombre, 4,36:1 — sous l'AA). */
  --corail-fond-texte:#FFFFFF;
  --marine:#0F1729; --marine-2:#2A3350;
  --rail:#0F1729;                      /* S1 : menu latéral, distinct de --marine (toujours sombre) */
  --ink:#1C2230; --ink-2:#374151; --muted:#6B7280;      /* gris relevés, cran du 20/09 */
  /* S1 (02/10) — un jeton d'encre PAR RÔLE, qui vaut --marine en clair et --ink en sombre :
     sombre.css l'applique en UNE seule règle, sans condition de thème (tour, 02/10) — le clair
     ne change pas (même valeur que --marine aujourd'hui), le sombre lit l'encre claire. */
  --encre-forte:var(--marine);
  /* S1 (02/10, point 2 de la spec) : les champs non habillés (natifs) — même jeu, un seul
     par rôle, consommé sans condition de thème (sombre.css). */
  --input-bg:#FFFFFF; --input-bordure:#E8DDD5;
  --line:#E1DDD6; --line-2:#F0EEEA;                      /* filet relevé, cran du 20/09 */
  /* S2 (03/10) : documentés dans la spec S1 depuis le début (« modales, menus déroulants,
     infobulles » / « filet relevé ») mais jamais posés ici. --surface-2 : identique à
     --surface en clair, un cran plus clair en sombre, posé sombre.css pour .note-bulle (voir
     réserve 1 de la passe du train commun). --border-strong et --ombre suivent le même
     besoin (filet, ombre) pour le même correctif. */
  --surface-2:#FFFFFF; --border-strong:#D4C8BE; --ombre:rgba(15,23,41,.08);
  --bg:#F7F6F3; --surface:#FFFFFF;
  --vert:#2E7D5B; --rouge:#B84A3A;
  /* Sur fond marine : le texte, puis les libellés (§2, cartes sombres) */
  --sur-marine:#FFFFFF; --sur-marine-2:rgba(255,255,255,.72);
  /* Séries de comparaison des graphes (§2) — jamais du corail : ce sont des années passées */
  --serie-2:#D9DCE2; --serie-3:#C7CBD3; --serie-4:#E4E6EB;
  /* Cycles (retouche du 21/09) — une palette DISTINCTE par année, au lieu de deux gris qu'on
     ne distinguait pas l'un de l'autre : 2026 corail, 2025 marine, 2024 sable (maquette). */
  --sable:#E8B86D;
  /* Parts du donut (maquette) hors charte ; --vert-2 n'est pas --vert (une hausse).
     --corail-2 marque aussi « API + historisation » en Disponibilité, distinct de « Accès à obtenir » (--corail) */
  --corail-2:#EBA88C; --vert-2:#2F8F6B; --autres:#DDD9D2;
  /* S2 (03/10) : --accent-texte, « liens, montants » (docs/specs/theme-sombre.md) — documenté
     depuis S1 mais jamais posé ici. Les liens non habillés (ex. .bu-av-ref) tombaient sur le
     bleu/lavande par défaut du navigateur (sombre : #9E9EFF, hors charte), faute de jeton. */
  --accent-texte:#B84D35;
  /* Familles (§1, corrigé le 18/09) : DM Sans, la police du portail, CONSERVÉE — c'est la
     graisse qui change. Auto-hébergées (@font-face) : la CSP interdit une police tierce. */
  --font:'DM Sans',system-ui,sans-serif;
  --mono:'DM Mono',ui-monospace,monospace;
  /* Tailles (§1) : l'échelle, et rien entre les barreaux. CRAN INTERMÉDIAIRE du 20/09 : le bas
     de l'échelle monte d'un demi-point (corps 13,5 ; tableaux 12,5 ; libellés 11,5 ; petites
     capitales et graduations 10,5). Les noms gardent leur numéro d'origine — ce sont des
     BARREAUX d'échelle, pas des mesures : les renommer changerait chaque règle qui les lit. */
  /* --fs-9 (21/09) : un barreau SOUS l'échelle courante, ajouté pour une seule chose —
     la pastille d'un négociateur non nommé, qui porte « #7399 » là où les autres portent
     une lettre. Cinq caractères au corps des graduations débordaient de leur carré. Il
     n'a pas d'autre emploi : du texte à lire ne descend pas ici. */
  --fs-9:9.5px;
  --fs-10:10.5px; --fs-11:11.5px; --fs-12:12.5px; --fs-13:13.5px;
  --fs-16:16px; --fs-18:18px; --fs-20:20px; --fs-24:24px; --fs-30:30px;
  /* Graisses (§1), cran du 20/09 : 400 le corps ; 500 les grands chiffres, la nav, la pastille,
     les légendes et les petits titres ; 600 les titres de page et de panneau, les en-têtes de
     tableau et la nav active ; 600 aussi pour un total ou un mot souligné. Le 300 des chiffres
     est abandonné : il tenait à peine à l'écran des BU. */
  --w4:400; --w5:500; --w6:600;
  --w-titre:600;                     /* titre de page, titres de panneau, en-têtes de tableau, nav active */
  --ls-chiffres:-0.015em;            /* le seul resserrement des grands chiffres (§1) */
  --lh:1.45;
  --sb-w:200px;                      /* §2 */
  /* §25 — la coquille mobile (mobile.css, sous 768 px). Les zones sûres valent 0 partout
     ailleurs que sur un téléphone à encoche : elles ne coûtent rien au bureau. */
  --tiroir-w:280px;
  --safe-t:env(safe-area-inset-top,0px); --safe-b:env(safe-area-inset-bottom,0px);
  --corail-12:rgba(232,114,92,.12);  /* entrée active de la nav (§2) */
  /* S1 (02/10) — repli clair de deux jetons que sombre.css applique SANS CONDITION DE THÈME
     (ea-app.css, chargée avant elle) : en clair ils valent ce qu'ils valaient déjà ailleurs,
     rien ne change ; voir le bloc sombre pour ce qu'ils deviennent. */
  --aplat-fort:var(--marine); --aplat-fort-texte:var(--sur-marine);
  /* Formes (§1) : 6 px partout, 8 px pour les modales, 4 px pour les petits carrés (écrits tels quels). */
  /* Les deux seules ombres qui restent : la modale, et le voile qui la porte. */
  --ombre-modale:0 12px 40px rgba(0,0,0,.08); --voile:rgba(15,23,41,.55);
  --sur-marine-90:rgba(255,255,255,.9);--sur-marine-55:rgba(255,255,255,.55);
  --sur-marine-12:rgba(255,255,255,.12);
  /* §25 §4 — l'ombre qui signale qu'un tableau continue hors de l'écran, au doigt (mobile). */
  --ombre-bord:rgba(15,23,41,.18);
  /* 24/09 (retour de PE, tdb-bu-couleurs.html « Proposition », fond marine) — teintes des blocs du
     tableau de bord BU. Contrastes vérifiés (refonteTdbBu.test.js) : texte ≥ 4,5:1, graphique ≥ 3:1. */
  --teinte-marine:#ECEEF3; --teinte-sable:#FBF6EE;       /* tuiles des taux : API, classeur */
  --sur-marine-07:rgba(255,255,255,.07);                  /* encart du stock, sur marine */
  --sur-marine-36:rgba(255,255,255,.36);                  /* barre N-1 sur marine : 3,27:1 */
  --corail-sur-marine:#F2A58A; --vert-sur-marine:#9BD8BA; /* baisse / hausse, nombre d'alerte, sur marine */
  --fond-baisse-marine:rgba(238,138,112,.16); --fond-hausse-marine:rgba(95,191,147,.16);
  --fond-alerte-marine:rgba(226,112,63,.18);
}
/*
 * CORRECTIF du 02/10 (passe Chrome réelle, macOS en sombre, « Automatique ») — LE BUG : ce
 * bloc sombre n'existait QUE sous l'attribut `[data-theme="dark"]`. En Automatique (aucun
 * attribut posé), un appareil en sombre ne déclenchait donc RIEN ici — pendant que les
 * surcharges de composants de `sombre.css` (elles, déjà sous les DEUX voies depuis le début)
 * s'activaient quand même via leur `@media`, en lisant des jetons (--aplat-fort, --rail…)
 * restés à leur valeur CLAIRE. D'où l'état hybride constaté : bande KPI sans aplat, liens
 * pâles — un demi-thème, pas un thème.
 *
 * LE CORRECTIF suit exactement la forme demandée à l'origine pour ce bloc : un seul bloc de
 * VALEURS (préfixe `--d-`, ci-dessous, dans le bloc clair — toujours présent, coût minime),
 * et deux voies d'activation qui ne font QUE les nommer, à l'identique de `sombre.css`.
 */
:root{
  --d-marine-2:#3A4766; --d-ink:#F3EEE9; --d-ink-2:#A9B1C3; --d-muted:#8A93A8;
  --d-input-bg:#0A1020; --d-input-bordure:rgba(255,255,255,.14);
  --d-line:rgba(255,255,255,.07); --d-line-2:rgba(255,255,255,.06);
  --d-bg:#0A1020; --d-surface:#111A2E;
  --d-corail-soft:rgba(232,114,92,.16); --d-voile:rgba(0,0,0,.6);
  --d-sur-marine:#F3EEE9; --d-sur-marine-2:#A9B1C3;
  --d-serie-2:#3A4048; --d-serie-3:#4A515B; --d-serie-4:#2A2E37;
  --d-sable:#B08942;                         /* un cran plus sourd sur fond sombre */
  --d-rail:#070C18; --d-rail-filet:rgba(255,255,255,.06);
  --d-corail-12:rgba(232,114,92,.18);        /* entrée active de la nav, filet gauche en sombre */
  --d-aplat-fort:#F3EEE9; --d-aplat-fort-texte:#0F1729; --d-aplat-fort-texte-2:#374151;
  --d-aplat-fort-montant:#A8422D;
  /* S2 (03/10, passe préprod) : --corail/--vert/--rouge sont fixes entre thèmes, validés
     lisibles sur un fond SOMBRE (principe 4) — jamais sur un aplat-fort, qui n'existait pas
     encore pour .card.feat (Siège) avant S2. Sur --aplat-fort (crème), mesurés : corail 2,6:1,
     vert 4,3:1, muted (sombre) 2,7:1 — sous l'AA. --aplat-fort-montant existait déjà pour ce
     rôle (point d'acte) ; --aplat-fort-vert/-rouge l'imitent, assombris jusqu'à l'AA (marge :
     ~5:1, pas la limite stricte). Le « gris » (muted) réutilise --sur-marine-2, déjà redéfini
     pour .card.feat. */
  --d-aplat-fort-vert:#2a7253; --d-aplat-fort-rouge:#ac4536;
  --d-aplat-fort-voile-12:rgba(15,23,41,.12); --d-aplat-fort-voile-07:rgba(15,23,41,.07);
  --d-aplat-fort-voile-36:rgba(15,23,41,.36);
  --d-st-md-sombre:#2A4C78;
  --d-alerte-fond:rgba(194,98,31,.12); --d-alerte-bordure:#C2621F; --d-alerte-texte:#F5A574;
  /* Passe Chrome v2 (02/10) : pastille d'initiales « apport » (.bu-init.a, colonne Négos de
     Ventes) — --corail-voile (bu.css, fixe) + --ink-2 (devenu gris clair) = 1,8:1. Jetons de
     la spec (« --pastille »), fond translucide + texte clair, ~7:1 sur --surface. */
  --d-pastille-fond:rgba(232,114,92,.16); --d-pastille-texte:#F5A574;
  --d-accent-texte:#F5A574;
  /* S2 (03/10, réserve 1 du train commun) : la bulle d'une mention KPI (.note-bulle) sur
     --surface (#111A2E) — même fond que la carte qui la porte, le filet --line (7% blanc) ne
     suffit pas à la distinguer. Un cran au-dessus (--surface-2) + un filet plus marqué
     (--border-strong) + l'ombre forte de la spec (--ombre, noir en sombre — un fond clair
     s'estomperait, celui-ci creuse). */
  --d-surface-2:#18233B; --d-border-strong:rgba(255,255,255,.14); --d-ombre:rgba(0,0,0,.45);
}
@media (prefers-color-scheme: dark){
:root:not([data-theme="light"]){
  --marine-2:var(--d-marine-2);
  --ink:var(--d-ink); --ink-2:var(--d-ink-2); --muted:var(--d-muted);
  --encre-forte:var(--ink);
  --input-bg:var(--d-input-bg); --input-bordure:var(--d-input-bordure);
  --line:var(--d-line); --line-2:var(--d-line-2);
  --bg:var(--d-bg); --surface:var(--d-surface);
  --corail-soft:var(--d-corail-soft); --voile:var(--d-voile);
  --sur-marine:var(--d-sur-marine); --sur-marine-2:var(--d-sur-marine-2);
  /* --sur-marine-90/-55 ne se redéfinissent pas : voiles blancs du rail, toujours sombre (principe 2). */
  --serie-2:var(--d-serie-2); --serie-3:var(--d-serie-3); --serie-4:var(--d-serie-4);
  --sable:var(--d-sable);
  --rail:var(--d-rail); --rail-filet:var(--d-rail-filet);
  --corail-12:var(--d-corail-12);
  --aplat-fort:var(--d-aplat-fort); --aplat-fort-texte:var(--d-aplat-fort-texte); --aplat-fort-texte-2:var(--d-aplat-fort-texte-2);
  --aplat-fort-montant:var(--d-aplat-fort-montant);
  --aplat-fort-vert:var(--d-aplat-fort-vert); --aplat-fort-rouge:var(--d-aplat-fort-rouge);
  --aplat-fort-voile-12:var(--d-aplat-fort-voile-12); --aplat-fort-voile-07:var(--d-aplat-fort-voile-07);
  --aplat-fort-voile-36:var(--d-aplat-fort-voile-36);
  --st-md-sombre:var(--d-st-md-sombre);
  --alerte-fond:var(--d-alerte-fond); --alerte-bordure:var(--d-alerte-bordure); --alerte-texte:var(--d-alerte-texte);
  --pastille-fond:var(--d-pastille-fond); --pastille-texte:var(--d-pastille-texte);
  --accent-texte:var(--d-accent-texte);
  --surface-2:var(--d-surface-2); --border-strong:var(--d-border-strong); --ombre:var(--d-ombre);
}
}
:root[data-theme="dark"]{
  --marine-2:var(--d-marine-2);
  --ink:var(--d-ink); --ink-2:var(--d-ink-2); --muted:var(--d-muted);
  --encre-forte:var(--ink);
  --input-bg:var(--d-input-bg); --input-bordure:var(--d-input-bordure);
  --line:var(--d-line); --line-2:var(--d-line-2);
  --bg:var(--d-bg); --surface:var(--d-surface);
  --corail-soft:var(--d-corail-soft); --voile:var(--d-voile);
  --sur-marine:var(--d-sur-marine); --sur-marine-2:var(--d-sur-marine-2);
  --serie-2:var(--d-serie-2); --serie-3:var(--d-serie-3); --serie-4:var(--d-serie-4);
  --sable:var(--d-sable);
  --rail:var(--d-rail); --rail-filet:var(--d-rail-filet);
  --corail-12:var(--d-corail-12);
  --aplat-fort:var(--d-aplat-fort); --aplat-fort-texte:var(--d-aplat-fort-texte); --aplat-fort-texte-2:var(--d-aplat-fort-texte-2);
  --aplat-fort-montant:var(--d-aplat-fort-montant);
  --aplat-fort-vert:var(--d-aplat-fort-vert); --aplat-fort-rouge:var(--d-aplat-fort-rouge);
  --aplat-fort-voile-12:var(--d-aplat-fort-voile-12); --aplat-fort-voile-07:var(--d-aplat-fort-voile-07);
  --aplat-fort-voile-36:var(--d-aplat-fort-voile-36);
  --st-md-sombre:var(--d-st-md-sombre);
  --alerte-fond:var(--d-alerte-fond); --alerte-bordure:var(--d-alerte-bordure); --alerte-texte:var(--d-alerte-texte);
  --pastille-fond:var(--d-pastille-fond); --pastille-texte:var(--d-pastille-texte);
  --accent-texte:var(--d-accent-texte);
  --surface-2:var(--d-surface-2); --border-strong:var(--d-border-strong); --ombre:var(--d-ombre);
}
/* valeurs de la charte Élégance Française ; tokens.css à réaligner (lot post-01/10) */
:root{--aplat-accent:#E8725C;--aplat-accent-texte:#0F1729;}
