/* ===========================================================================
   JETONS IAV — la seule source des couleurs, des espacements et des tailles
   ===========================================================================

   À IMPORTER EN PREMIER sur tout site ou application web IAV. Tout le reste
   du référentiel (pied de page, en-tête, boutons, formulaires, tableaux,
   alertes, connexion, pages d'erreur, navigation) ne connaît que ces noms.

   ---------------------------------------------------------------------------
   TROIS RÈGLES, ET ELLES NE SE NÉGOCIENT PAS
   ---------------------------------------------------------------------------

   1. UN JETON PORTE UN RÔLE, JAMAIS UNE VALEUR.
      `--iav-texte-principal`, pas `--iav-gris-fonce`. Un nom de valeur ment le
      jour du mode sombre : le « gris foncé » y devient clair, et le nom reste.

   2. CHAQUE `var()` PORTE UNE VALEUR DE REPLI.
      Un fichier du référentiel ouvert SANS cette feuille doit rester lisible.
      Sans repli, un `color: var(--iav-bleu-lien)` nu ne produit aucune erreur : la
      propriété est simplement abandonnée et le texte prend la couleur héritée.
      Le défaut est donc silencieux — c'est le pire des deux. Le cas réel :
      `.pied a` appelait `--iav-blue-primary` sans repli, et les liens du pied
      sortaient gris chaque fois que cette feuille manquait.

   3. AUCUNE COULEUR, AUCUN ESPACEMENT, AUCUNE TAILLE ÉCRITS EN DUR AILLEURS.
      Une valeur écrite en dur dans un composant ne suit pas le changement de
      charte, ne bascule pas en mode sombre, et n'est visible nulle part. Voir
      `../verifier-conformite.sh`, qui refuse le travail quand c'est le cas.

   L'unique exception est le gabarit de COURRIEL (`../mail/`) : les clients de
   messagerie suppriment les feuilles de style et ne connaissent pas les
   variables CSS. Ses couleurs y sont écrites en dur, en styles « inline »,
   volontairement, et le vérificateur l'exempte nommément.

   ---------------------------------------------------------------------------
   D'OÙ VIENNENT CES VALEURS
   ---------------------------------------------------------------------------

   Elles ne sont pas choisies : elles sont RELEVÉES puis FUSIONNÉES. Recensement
   du 23/08/2026 sur l'ensemble du référentiel, occurrences comptées, et quand
   deux teintes quasi identiques cohabitaient, la MAJORITÉ l'a emporté :

     • `#5A6B7F` (8 emplois réels) l'emporte sur `#4A5568` (2, déclaratifs) ;
     • `#F7F9FC` (7) l'emporte sur `#F7FAFC` (2) ;
     • `#1B2733` (5) l'emporte sur `#1A202C` (2).

   Les trois perdantes étaient déclarées dans l'ancien `tokens.css` sans être
   employées nulle part : le référentiel déclarait une chose et en appliquait
   une autre. C'est corrigé ici.

   Tout contraste cité dans ce fichier est MESURÉ (WCAG 2.1, seuil AA 4,5:1
   pour du texte courant). Si une valeur change, le rapport se recalcule — il
   ne se recopie pas.
   =========================================================================== */

:root {

  /* =========================================================================
     1. LES HUIT COULEURS DE RÔLE — le noyau
     =========================================================================
     C'est le contrat. Un module qui connaît ces huit noms sait tout habiller.
     Tout le reste de ce fichier en dérive.

     Huit et non sept : les deux bleus ne se fusionnent pas. `--iav-bleu-marque`
     est un FOND (bandeaux, en-têtes) et `--iav-bleu-lien` est un TEXTE. Les
     confondre casserait soit l'identité du bandeau, soit le contraste des
     liens — mesures à l'appui, plus bas.
     ------------------------------------------------------------------------- */

  /* Texte fort : titres, noms propres, chiffres qu'on lit.
     15,17:1 sur le fond de page, 14,38:1 sur le fond de bloc. */
  --iav-texte-principal: #1B2733;

  /* Texte courant, libellés, mentions. Discret par la TAILLE et le POIDS,
     jamais par un contraste insuffisant : le `#8A97A6` essayé un temps ne
     donnait que 2,82:1 et a été rejeté pour cela.
     5,46:1 sur le fond de page, 5,18:1 sur le fond de bloc. */
  --iav-texte-secondaire: #5A6B7F;

  /* Le fond de la page elle-même. */
  --iav-fond-page: #FFFFFF;

  /* Le fond d'un bloc posé SUR la page : pied de page, carte, encart, ligne
     alternée de tableau. C'est la teinte qui détache sans séparer. */
  --iav-fond-bloc: #F7F9FC;

  /* Filets, contours de champ, séparateurs de tableau. Une bordure n'est pas
     du texte : le seuil de 4,5:1 ne s'y applique pas, et celle-ci est
     volontairement discrète. */
  --iav-bordure: #E3E9F0;

  /* L'accent de la maison. Il ne porte QUE « depuis 2008 », dans le pied,
     sur le web comme dans le courriel. Rien d'autre, jamais.
     Teinte MESURÉE et non choisie à l'œil : 4,94:1 sur le fond de bloc, au
     -dessus du seuil AA de 4,5:1 pour du texte de 11 px. Un `#E53E3E`
     envisagé donnait 3,91:1, un `#E44444` 3,82:1 — plus vifs à l'écran, tous
     deux sous le seuil. Ne pas le « raviver ».
     À ne jamais confondre avec le bordeaux d'avertissement, plus bas. */
  --iav-accent-rouge: #DA081C;

  /* LE bleu de la maison, aligné le 30/07/2026 sur le vrai bleu du site
     iav.lu. Un ancien `#12233D` a servi un temps sur les rapports : il est
     abandonné, ne pas le réutiliser.
     Employé en FOND : blanc dessus à 7,92:1. */
  --iav-bleu-marque: #215387;

  /* Le bleu des liens, des titres de section et des boutons principaux.
     Employé en TEXTE : 5,42:1 sur le fond de page, 5,14:1 sur le fond de bloc.
     Employé en FOND de bouton : blanc dessus à 5,42:1. */
  --iav-bleu-lien: #2B6CB0;


  /* =========================================================================
     2. LES DÉRIVÉS DU NOYAU
     ========================================================================= */

  /* Texte posé sur le bleu de MARQUE — le bandeau, qui reste foncé dans les
     deux thèmes. */
  --iav-texte-inverse: #FFFFFF;

  /* Texte posé sur un APLAT DE COULEUR VIVE : bouton principal, bouton
     destructeur, page de pagination courante.

     Ce jeton existe parce que ces aplats CHANGENT DE CLARTÉ avec le thème. En
     clair, le bouton principal est un bleu foncé et veut du blanc dessus ; en
     sombre, c'est un bleu clair, et le blanc y tombe à 2,21:1 — illisible. Le
     défaut ne se voyait que le mode sombre allumé, sur un aplat, et il touchait
     TOUS les boutons principaux de TOUTES les pages.

     Ne pas confondre avec `--iav-texte-inverse`, qui va sur le bandeau et ne
     bascule pas : le bandeau, lui, reste foncé dans les deux thèmes. */
  --iav-texte-sur-aplat: #FFFFFF;

  /* Texte secondaire sur un fond de marque : la ligne de slogan du bandeau.
     5,60:1 sur le bleu de marque. */
  --iav-texte-sur-marque: #C7DBF2;

  /* Fond survolé / ligne de tableau visée. Assez proche du fond de bloc pour
     ne pas clignoter, assez distinct pour se voir. */
  --iav-fond-survol: #EDF3FA;

  /* Ce qui est désactivé : ni cliquable, ni tout à fait effacé. Le contraste
     y est volontairement bas — c'est le signal. */
  --iav-fond-desactive: #EDF2F7;
  --iav-texte-desactive: #9AA7B5;

  /* L'anneau de focus au clavier. Il ne se retire JAMAIS : sans lui, la page
     n'est pas navigable sans souris. */
  --iav-focus: #2B6CB0;

  /* Le voile de survol posé SUR un fond de marque — un lien du bandeau, par
     exemple. Un voile translucide et non une couleur : il fonctionne sur
     n'importe quel bleu de marque, donc sur l'identité d'un acheteur qu'on ne
     connaît pas encore. Une seconde couleur à déclarer devrait être mesurée
     pour chaque exploitant. */
  --iav-voile-survol: rgba(255, 255, 255, 0.14);


  /* =========================================================================
     3. LES QUATRE FAMILLES D'ALERTE
     =========================================================================
     Chacune : un fond, une bordure, une couleur de texte. Les trois vont
     ensemble et ne se mélangent pas entre familles.

     L'AVERTISSEMENT garde le bordeaux historique du référentiel. Il est
     réservé à ce rôle et ne croise JAMAIS l'accent rouge de « depuis 2008 » :
     l'un signale un danger pour le lecteur, l'autre est une signature de
     maison. Les employer dans le même bloc annule le sens des deux.
     ------------------------------------------------------------------------- */

  /* Information — 7,09:1 */
  --iav-info-fond: #EDF3FA;
  --iav-info-bordure: #D6DEE8;
  --iav-info-texte: #215387;

  /* Succès — 4,88:1 */
  --iav-succes-fond: #EDF7F1;
  --iav-succes-bordure: #BFE3CE;
  --iav-succes-texte: #1B7A4B;

  /* Avertissement — 9,38:1 */
  --iav-avertissement-fond: #FDF7F6;
  --iav-avertissement-bordure: #E6B0AA;
  --iav-avertissement-texte: #7B241C;

  /* Erreur — 6,56:1 */
  --iav-erreur-fond: #FBEDEE;
  --iav-erreur-bordure: #E8B4B8;
  --iav-erreur-texte: #A61B2B;


  /* =========================================================================
     4. ESPACEMENTS
     =========================================================================
     Le référentiel employait dix-sept valeurs différentes (3, 6, 8, 9, 10, 12,
     13, 14, 15, 16, 18, 20, 22, 24, 26, 66, 96 px) sans aucune échelle. Chaque
     page réinventait ses marges — exactement ce qui est arrivé aux courriels
     de CENSUS.

     Échelle de base 4, nommée par usage. Un espacement qui n'est pas dans
     cette liste est un espacement à justifier, pas une liberté.
     ------------------------------------------------------------------------- */

  --iav-espace-minuscule: 4px;   /* entre deux éléments collés : puce et texte */
  --iav-espace-petit: 8px;       /* intérieur d'un champ, d'une pastille       */
  --iav-espace-moyen: 12px;      /* intérieur d'un bloc, entre deux champs     */
  --iav-espace-grand: 16px;      /* intérieur d'une carte, d'un encart         */
  --iav-espace-large: 24px;      /* entre deux blocs                           */
  --iav-espace-section: 32px;    /* entre deux sections d'une page             */

  /* Largeur de lecture d'une colonne de texte. Au-delà, l'œil perd sa ligne. */
  --iav-largeur-lecture: 900px;


  /* -------------------------------------------------------------------------
     LE BANDEAU — ses dimensions sont des JETONS
     -------------------------------------------------------------------------
     Ajoutés le 24/08/2026. Elles étaient écrites en dur dans `entete.css`, donc
     ni réglables depuis l'éditeur, ni visibles nulle part.

     C'est une DÉCISION DE CHARTE, pas une valeur d'identité : le bandeau a la
     même hauteur chez tous les exploitants. Ce qui change d'un client à l'autre,
     ce sont les textes et le logo — pas la géométrie.

     Un bandeau applicatif n'est pas une page d'accueil : il sert à savoir où
     l'on est, pas à faire de la publicité. Chaque pixel qu'il prend est un pixel
     de moins pour le travail.
     ------------------------------------------------------------------------- */

  /* PROPOSITION du 24/08/2026, en attente d'arbitrage. Les valeurs d'avant
     sont notées en regard : y revenir se fait depuis l'éditeur, ou en les
     recopiant ici.

     Le gain ne vient PAS du retrait de la signature — il ne valait que 4 px.
     La hauteur du bandeau est dictée par le LOGO : tant qu'il fait 32 px, le
     bandeau en fait 56 quoi qu'on retire. Ce sont donc le logo et les marges
     qu'il faut reprendre. */
  --iav-entete-marge: 8px;               /* était 12px                         */
  --iav-entete-logo-hauteur: 26px;       /* était 32px — HAUTEUR seule         */
  --iav-entete-taille-societe: 15px;     /* était 16px                         */
  --iav-entete-taille-slogan: 12px;      /* inchangé                           */
  --iav-entete-taille-module: 16px;      /* était 19px                         */

  /* La bascule de thème et la roue dentée de la barre — ajoutées le
     24/08/2026 avec la barre unique. Comme le reste du bandeau, leurs
     dimensions sont des décisions de charte : la barre a la même géométrie
     chez tous les exploitants. */
  --iav-entete-bascule-largeur: 52px;
  --iav-entete-bascule-hauteur: 26px;
  /* DEUX JETONS, ET C'EST VOULU — renommés le 24/08/2026.
     Ils s'appelaient `--iav-entete-taille-roue` et `--iav-entete-roue-taille`,
     deux noms à un mot près, et on les a pris pour un doublon à supprimer.
     Vérification faite dans `web/entete.css` : le premier est le `font-size` de
     l'ICÔNE, le second la largeur et la hauteur du BOUTON — la cible qu'on
     atteint au doigt, et en dessous de 32 px on la rate. Deux choses
     différentes, mal nommées.

     Le référentiel n'étant consommé par aucun module à ce jour, le renommage ne
     casse rien ; il ne se refera pas gratuitement plus tard. */
  --iav-entete-roue-icone: 17px;
  /* L'intérieur de la pastille : le retrait des deux icônes, leur taille, et
     le curseur qui glisse. En jetons comme le reste — le vérificateur a
     attrapé ces trois valeurs écrites en dur, et il avait raison. */
  --iav-entete-bascule-retrait: 6px;
  --iav-entete-bascule-icone: 12px;
  --iav-entete-bascule-curseur: 18px;
  --iav-entete-roue-bouton: 36px;

  /* Deux voiles clairs pour ce qui se pose SUR un fond de marque. Ils
     fonctionnent sur n'importe quel bleu — donc sur l'identité d'un acheteur
     qu'on ne connaît pas encore, sans mesure à refaire. */
  --iav-voile-appuye: rgba(255, 255, 255, 0.24);
  --iav-voile-bordure: rgba(255, 255, 255, 0.35);

  /* Le logo de signature dans le pied — « Made in Luxembourg » en image.
     Aligné sur la ligne de texte du pied (11 px d'écriture, ~18 px
     d'interligne) : plus haut, il ferait sauter la ligne. */
  --iav-pied-logo-hauteur: 14px;

  /* LES TROIS AUTRES HAUTEURS DU LOGO DE SOCIÉTÉ — posées le 24/08/2026.
     -------------------------------------------------------------------------
     Le logo apparaît à quatre endroits, et sa hauteur y était réglée de quatre
     façons différentes : un jeton pour le bandeau web, une clé d'identité pour
     le PDF, un nombre écrit en dur dans le CSS de la connexion, un autre écrit
     en dur dans le gabarit de courriel. Régler la hauteur du logo demandait
     donc de savoir lequel des quatre on cherchait.

     La géométrie du logo est une DÉCISION DE CHARTE — elle ne change pas d'un
     exploitant à l'autre, seul le FICHIER change. Elle vit donc ici, et les
     quatre emplacements la lisent.

     Le courriel est le cas particulier : un client de messagerie ignore les
     variables CSS. Sa valeur est donc SUBSTITUÉE dans le gabarit au rendu, et
     non lue par `var()`. Le jeton reste la source unique, c'est le mode de
     consommation qui diffère. */
  --iav-connexion-logo-hauteur: 48px;
  --iav-courriel-logo-hauteur: 64px;
  /* En millimètres : c'est du papier. 11 mm dans un bandeau de 13 mm laisse
     1 mm de part et d'autre. Valeur reprise de `entete_pdf.logo_hauteur`, qui
     la portait avant et ne la porte plus — une valeur, un seul endroit. */
  --iav-pdf-logo-hauteur: 8mm;

  /* LA GÉOMÉTRIE DU LOGO DANS LE BANDEAU PDF — 24/08/2026, demande de David :
     « dans le PDF créé, le logo est collé contre la partie du haut de la page,
     au lieu d'être centré ou avec la même hauteur que le texte qui se trouve à
     droite. »

     `flex-start` le colle en haut, `center` le centre — c'est le défaut et c'est
     ce que fait JANUS —, `flex-end` le pose au bas du bandeau. Mesuré sur un
     bandeau de 12,98 mm avec un logo de 7,99 : 0,16 mm, 2,66 mm et 5,15 mm
     depuis le bord de page, le bandeau commençant à 0,16.

     LE TROISIÈME CAS DEMANDÉ — « aligné sur le bloc de texte de droite » — se
     serait écrit `baseline`, et il est ÉCARTÉ : WeasyPrint pousse alors le logo
     à 22,56 mm, soit HORS du bandeau, qui finit à 13,14. Proposer un réglage
     qui casse la page serait pire que de ne pas le proposer. `flex-end` prend
     sa place dans la liste. */
  --iav-pdf-logo-alignement: center;
  --iav-pdf-logo-marge-gauche: 14.1mm;
  --iav-pdf-logo-ecart: 4mm;

  /* Le logo « Made in Luxembourg » du pied de page. Le commentaire de JANUS
     annonce 9 mm, son CSS écrit 7 mm : c'est le code qui a été imprimé et
     validé, donc c'est lui qu'on reprend. L'écart est signalé, pas arbitré. */
  --iav-pdf-madein-hauteur: 7mm;


  /* =========================================================================
     5. TAILLES DE POLICE
     =========================================================================
     Nommées par ce qu'elles portent, jamais par leur valeur : une échelle
     `--iav-taille-14` obligerait à renommer le jeton le jour où 14 devient 15.
     ------------------------------------------------------------------------- */

  --iav-taille-mention: 10px;      /* mention légale, seconde ligne du pied    */
  --iav-taille-petite: 11px;       /* signature du pied, note sous un champ    */
  --iav-taille-secondaire: 12px;   /* libellés, colonnes de tableau            */
  --iav-taille-texte: 14px;        /* LE corps de texte                        */
  --iav-taille-intertitre: 16px;   /* titre de carte, de bloc                  */
  --iav-taille-titre: 19px;        /* titre de section                         */
  --iav-taille-titre-fort: 24px;   /* titre de page                            */
  --iav-taille-valeur: 32px;       /* le chiffre qu'on vient lire : un code,   */
                                   /* une valeur de tableau de bord            */


  /* =========================================================================
     6. GRAISSES, INTERLIGNES, RAYONS, TRAITS, OMBRES
     =========================================================================
     Sans ces jetons, un composant écrit `font-weight: 700` et `border-radius:
     8px` en dur, et la règle 3 devient inapplicable dans les faits.
     ------------------------------------------------------------------------- */

  --iav-graisse-normale: 400;
  --iav-graisse-semi: 600;
  --iav-graisse-forte: 700;

  --iav-interligne-serre: 1.3;     /* titres                                   */
  --iav-interligne: 1.5;           /* corps de texte                           */
  --iav-interligne-aere: 1.6;      /* petits textes, où l'air manque le plus   */

  --iav-rayon-petit: 4px;          /* pastille, badge                          */
  --iav-rayon: 8px;                /* bouton, champ, carte                     */
  --iav-rayon-grand: 12px;         /* bloc, panneau                            */
  --iav-rayon-rond: 999px;         /* pilule, point d'état                     */

  --iav-trait: 1px;                /* filet, contour de champ                  */
  --iav-trait-epais: 3px;          /* barre latérale d'alerte, onglet actif    */

  /* Deux ombres seulement, et discrètes : une interface d'atelier se lit, elle
     ne flotte pas. */
  --iav-ombre-carte: 0 1px 2px rgba(27, 39, 51, 0.06);
  --iav-ombre-flottante: 0 4px 12px rgba(27, 39, 51, 0.12);


  /* =========================================================================
     7. TYPOGRAPHIE
     =========================================================================
     Pile système : aucune police à télécharger, donc aucune requête vers un
     tiers. Ce n'est pas qu'une question de vitesse — `auth/spec.md` HT-4
     interdit toute ressource externe sur une page d'authentification.
     ------------------------------------------------------------------------- */

  --iav-police-texte: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
    Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;

  /* Titres d'accroche ponctuels. `Inter` si la machine l'a, la pile de texte
     sinon — jamais téléchargée. */
  --iav-police-titre: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI",
    Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;

  /* Chiffres qu'on compare colonne par colonne, codes à recopier. */
  --iav-police-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
    "Liberation Mono", monospace;
}


/* ===========================================================================
   8. MODE SOMBRE
   ===========================================================================
   SEULES les couleurs changent. Les espacements, les tailles et les rayons
   sont les mêmes : un bouton ne change pas de taille parce qu'il fait nuit.

   C'est ici que la règle 1 se paie : parce que les jetons portent un rôle et
   non une valeur, ce bloc suffit à basculer tout le référentiel. Un jeton
   nommé `--iav-gris-fonce` aurait obligé à renommer, ou à mentir.

   Deux déclencheurs, et les deux sont nécessaires :
     • `prefers-color-scheme` — le réglage du système, sans rien demander ;
     • `[data-theme]` sur <html> — le choix explicite d'un utilisateur, qui
       doit pouvoir prendre le dessus DANS LES DEUX SENS. D'où la garde
       `:not([data-theme="clair"])` sur le bloc de préférence système : sans
       elle, un utilisateur en système sombre ne pourrait pas forcer le clair.

   Contrastes mesurés sur le fond de page sombre `#131A22` et sur le fond de
   bloc sombre `#1B2733`, dans cet ordre.

   NON TRAITÉ ICI, et c'est délibéré : le mode sombre du COURRIEL. Gmail et
   Apple Mail forcent leur propre inversion sur un gabarit en tables et styles
   « inline », et aucune variable CSS n'y survit. C'est un autre chantier —
   voir `../mail/README.md`.
   =========================================================================== */

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="clair"]) {
    --iav-texte-principal: #E8EDF3;        /* 14,88:1 / 12,88:1 */
    --iav-texte-secondaire: #A9B6C6;       /*  8,50:1 /  7,36:1 */
    --iav-fond-page: #131A22;
    --iav-fond-bloc: #1B2733;
    --iav-bordure: #2C3947;
    --iav-accent-rouge: #FF6B75;           /*  6,35:1 /  5,50:1 */
    --iav-bleu-marque: #215387;            /* bandeau inchangé : blanc à 7,92:1 */
    --iav-bleu-lien: #7FB3E8;              /*  7,94:1 /  6,87:1 */

    --iav-texte-inverse: #FFFFFF;
    --iav-texte-sur-aplat: #131A22;        /*  7,94:1 sur le bleu clair,
                                               9,02:1 sur le bordeaux clair */
    --iav-texte-sur-marque: #C7DBF2;
    --iav-fond-survol: #22303E;
    --iav-fond-desactive: #222C38;
    --iav-texte-desactive: #6B7A8A;
    --iav-focus: #7FB3E8;

    --iav-info-fond: #16283A;
    --iav-info-bordure: #2A4562;
    --iav-info-texte: #8FC0F0;             /*  7,84:1 */

    --iav-succes-fond: #12291F;
    --iav-succes-bordure: #23523B;
    --iav-succes-texte: #5FD39A;           /*  8,27:1 */

    --iav-avertissement-fond: #2E1B18;
    --iav-avertissement-bordure: #5C332C;
    --iav-avertissement-texte: #F0A8A0;    /*  8,41:1 */

    --iav-erreur-fond: #2C1418;
    --iav-erreur-bordure: #5A2830;
    --iav-erreur-texte: #FF8A94;           /*  7,63:1 */

    --iav-ombre-carte: 0 1px 2px rgba(0, 0, 0, 0.4);
    --iav-ombre-flottante: 0 4px 12px rgba(0, 0, 0, 0.55);
  }
}

/* Le même jeu de valeurs, sous le choix EXPLICITE de l'utilisateur.
   Ce second bloc n'est pas une redite : sans lui, quelqu'un dont le système
   est en clair ne pourrait pas demander le sombre. Le premier bloc suit le
   système, celui-ci suit la personne — et la personne gagne. */
:root[data-theme="sombre"] {
  --iav-texte-principal: #E8EDF3;        /* 14,88:1 / 12,88:1 */
  --iav-texte-secondaire: #A9B6C6;       /*  8,50:1 /  7,36:1 */
  --iav-fond-page: #131A22;
  --iav-fond-bloc: #1B2733;
  --iav-bordure: #2C3947;
  --iav-accent-rouge: #FF6B75;           /*  6,35:1 /  5,50:1 */
  --iav-bleu-marque: #215387;            /* bandeau inchangé : blanc à 7,92:1 */
  --iav-bleu-lien: #7FB3E8;              /*  7,94:1 /  6,87:1 */

  --iav-texte-inverse: #FFFFFF;
  --iav-texte-sur-aplat: #131A22;        /*  7,94:1 / 9,02:1 sur les aplats */
  --iav-texte-sur-marque: #C7DBF2;
  --iav-fond-survol: #22303E;
  --iav-fond-desactive: #222C38;
  --iav-texte-desactive: #6B7A8A;
  --iav-focus: #7FB3E8;

  --iav-info-fond: #16283A;
  --iav-info-bordure: #2A4562;
  --iav-info-texte: #8FC0F0;             /*  7,84:1 */

  --iav-succes-fond: #12291F;
  --iav-succes-bordure: #23523B;
  --iav-succes-texte: #5FD39A;           /*  8,27:1 */

  --iav-avertissement-fond: #2E1B18;
  --iav-avertissement-bordure: #5C332C;
  --iav-avertissement-texte: #F0A8A0;    /*  8,41:1 */

  --iav-erreur-fond: #2C1418;
  --iav-erreur-bordure: #5A2830;
  --iav-erreur-texte: #FF8A94;           /*  7,63:1 */

  --iav-ombre-carte: 0 1px 2px rgba(0, 0, 0, 0.4);
  --iav-ombre-flottante: 0 4px 12px rgba(0, 0, 0, 0.55);
}


/* ===========================================================================
   9. ALIAS DE COMPATIBILITÉ — temporaires, à retirer quand le parc a migré
   ===========================================================================
   Les huit anciens noms anglais (`--iav-blue-dark`, `--iav-near-black`, …)
   restent valides et pointent vers les jetons de rôle. Motif : ARGUS, CENSUS
   et ATLAS portent chacun une COPIE de l'ancien fichier. Aucun ne casse
   aujourd'hui — ils ne lisent pas celui-ci — mais le jour où l'un d'eux
   reprendra cette version, le renommage ne doit pas éteindre ses couleurs en
   silence, sans la moindre erreur au journal.

   TROIS DE CES ALIAS CHANGENT DE VALEUR, et c'est délibéré :

     `--iav-near-black`  #1A202C -> #1B2733
     `--iav-gray-text`   #4A5568 -> #5A6B7F
     `--iav-bg-lighter`  #F7FAFC -> #F7F9FC

   Les anciennes valeurs étaient DÉCLARÉES ici sans être employées nulle part
   dans le référentiel ; les nouvelles sont celles que le code applique
   réellement. L'écart visuel est de l'ordre du point de gris, et il aligne
   enfin la déclaration sur l'usage.

   `--iav-gray-light` n'a aucun équivalent de rôle : il n'était employé nulle
   part. Il garde sa valeur d'origine pour ne rien casser, et n'a pas d'avenir.

   Un module qui écrit encore ces noms n'est pas conforme. `verifier-conformite.sh`
   les signale, sans les corriger.
   =========================================================================== */

:root {
  --iav-blue-dark: var(--iav-bleu-marque, #215387);
  --iav-blue-primary: var(--iav-bleu-lien, #2B6CB0);
  --iav-near-black: var(--iav-texte-principal, #1B2733);
  --iav-gray-text: var(--iav-texte-secondaire, #5A6B7F);
  --iav-gray-light: #718096;
  --iav-bg-light: var(--iav-fond-desactive, #EDF2F7);
  --iav-bg-lighter: var(--iav-fond-bloc, #F7F9FC);
  --iav-white: var(--iav-fond-page, #FFFFFF);

  --iav-font-body: var(--iav-police-texte, -apple-system, BlinkMacSystemFont,
    "Segoe UI", Roboto, sans-serif);
  --iav-font-heading: var(--iav-police-titre, Inter, -apple-system,
    BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);

  /* Ces trois-là étaient définies dans `pied-de-page.css`, hors de tout jeton.
     Elles y restent définies pour que la feuille tienne seule, et sont reprises
     ici pour que le pied suive la charte quand les deux fichiers sont chargés. */
  --iav-rouge-accent: var(--iav-accent-rouge, #DA081C);
  --iav-pied-fond: var(--iav-fond-bloc, #F7F9FC);
  --iav-pied-filet: var(--iav-bordure, #E3E9F0);

  /* Les deux appelées par `pied-de-page.css` et définies NULLE PART jusqu'ici.
     C'était un manque réel du référentiel, relevé le 13/08/2026 : la feuille
     ne tenait que par ses valeurs de repli. Il est comblé. */
  --iav-gris-pied: var(--iav-texte-secondaire, #5A6B7F);
  --iav-pied-fort: var(--iav-texte-principal, #1B2733);
}
