/* mlsign v7 — les deux lumières.
 *
 * Une zone ne fait QUE trois choses, et seulement sur elle-même :
 * color-scheme, color/background, et le rebinding des rôles sémantiques déjà
 * générés par design/build.mjs. Elle ne cible jamais un descendant avec une
 * spécificité non nulle.
 *
 * C'est le bug payé en v6 : « .zone-nuit p » (0,1,1) écrasait « .chiffre »
 * (0,1,0) et volait le blanc des chiffres de preuve. Les seuls défauts
 * d'élément de ce fichier passent donc par :where() — (0,0,1) : ça bat
 * l'héritage, ça perd contre n'importe quelle classe de composant.
 *
 * Aucune variable de zone nouvelle : les composants ne connaissent que
 * --fond, --texte, --bordure… et ignorent dans quelle lumière ils sont.
 *
 * [data-registre="jour"|"nuit"] est un alias de sélecteur, pas un second
 * système : mêmes déclarations, pour que le gabarit puisse nommer la zone
 * par classe ou par attribut sans que la page se dépeigne.
 */

/* --- 1. La peinture. Compound (0,2,0) pour l'exception : elle gagne quel
       que soit l'ordre de source. ------------------------------------------ */
.zone-jour,
.zone-nuit,
[data-registre="jour"],
[data-registre="nuit"] {
  color: var(--texte);
  background: var(--fond);
}
.zone-jour.zone--sans-fond,
.zone-nuit.zone--sans-fond {
  background: transparent;
}

/* LA BANDE. Une section sur deux se retire d'un demi-ton du blanc de la page,
   pour que l'œil sache où une section finit. C'est le geste d'Axel (v6.css:328,
   504, 649 : trois sections sur --fond) et son écart, 1,0649:1 entre #FEFEFD et
   #F6F7F5 : volontairement faible, parce que ce n'est plus le contraste qui
   sépare les objets sur cette page, c'est le rayon et l'ombre.
   Une bande, pas une carte : le retrait se prend au niveau de la SECTION. Les
   fonds de carte, eux, existent maintenant aussi, mais sur les cartes, à
   --carte, un cran plus bas encore.
   Compound (0,2,0), comme .zone--sans-fond : elle gagne contre la peinture de
   zone quel que soit l'ordre de source. Les rôles ne bougent pas, la section
   change de fond, pas de lumière, et ses composants continuent d'ignorer où
   ils sont. */
.zone-jour.zone--creux,
[data-registre="jour"].zone--creux {
  background: var(--surface);
}
/* Le creux existe des deux cotes depuis que /la-loop/ est en nuit (23.08) :
   --surface vaut la fosse sur la nuit, soit le meme geste, un cran au-dessus du
   fond au lieu d'un cran en dessous du blanc. Sans cette regle les bandes
   alternees de la page sombre retombaient sur le blanc du jour. */
.zone-nuit.zone--creux,
[data-registre="nuit"].zone--creux {
  background: var(--surface);
}

/* --- 2. Le jour, qui est maintenant tout le site ------------------------ */
/* LE JOUR NE S'OPPOSE PLUS À RIEN. Il était la moitié claire d'une traversée ;
   depuis le 14.08 il est la page, du premier écran au pied. Les treize pages
   ouvrent en zone-jour et n'en sortent qu'une fois, sur l'objet rapport.

   LE FOND EST LE BLANC, ET LA LOI 1 A CHANGÉ AVEC LUI. « Le contenu possède le
   blanc, jamais un fond » protégeait la dalle allumée quand le site était une
   arène sombre : un blanc rare y était un événement. Sur une page blanche, la
   dalle ne se distingue plus par sa couleur mais par son cadre, et réserver le
   blanc n'a plus d'objet. Le projecteur reste le blanc des CHIFFRES de preuve,
   là où la nuit subsiste.

   Contrastes sur --fond blanc #FEFEFD : encre-jour 17,55 (AAA) · plomb 6,54
   (AA texte, AAA au-dessus de 18,66 px) · vert 3,64 et jaune 1,53, jamais un
   texte, ni une bordure de champ : pastille, filet, aplat sous de l'encre.
   pli 1,25, c'est un bord, pas un trait, et c'est le rayon qui porte l'objet.
   braise 5,25 · cuir 5,62 : gardés pour l'alerte et l'attente, qui sont des
   états, pas de la décoration. */
.zone-jour,
[data-registre="jour"] {
  color-scheme: light;
  --fond: var(--blanc);
  --surface: var(--papier);
  /* DEUX NIVEAUX DE CARTE, PARCE QU'IL Y A DEUX FONDS. Une carte se détache de
     ce sur quoi elle est posée, et le site a maintenant deux sortes de
     sections : le blanc de la page et la bande retirée. --carte remonte au
     blanc pour les cartes posées SUR la bande, --carte-basse descend pour
     celles posées sur le blanc. C'est le couple d'Axel : ses quatre cartes de
     service sont blanches sur sa section --fond (v6.css:328, 341), ses deux
     offres sont en --carte sur du blanc (v6.css:481). Sans les deux, une carte
     sur deux disparaît dans son fond. */
  --carte: var(--blanc);
  --carte-basse: var(--creux);
  --survol: var(--pli);
  --bordure: var(--pli);
  --bordure-champ: var(--plomb);
  --texte: var(--encre);
  --texte-secondaire: var(--encre-douce);
  --preuve: var(--encre);
  /* L'ACTION EST LE JAUNE, ET ELLE NE COLORE JAMAIS UNE LETTRE. Il fait 1,53:1
     sur le blanc : c'est un filet sous un lien encré, une pastille, un aplat
     sous de l'encre. Le correctif du lien de la veille l'avait déjà préparé,
     en sortant la couleur du texte pour la mettre sur le soulignement. */
  --action: var(--jaune);
  /* Le focus ne peut pas être le jaune : un anneau à 1,53:1 ne se voit pas.
     La braise tient les 3:1 de WCAG 1.4.11 sur le blanc comme sur la carte. */
  --focus: var(--braise);
  --alerte: var(--braise);
  --attente: var(--cuir);
  --valide: var(--vert);
}

/* --- 3. La nuit, qui n'est plus une moitié de page mais un objet --------- */
/* ELLE NE TRAVERSE PLUS RIEN. La nuit tenait la moitié basse de l'accueil et
   le pivot l'y amenait ; depuis le 14.08 elle ne subsiste qu'à deux endroits,
   et les deux sont des objets posés dans une page blanche : le relevé
   TraceMark, et le pied. C'est exactement le rôle qu'elle a chez Axel, où le
   rapport est « le seul objet sombre de la page ».
   Ce que ça lui rend : elle redevient rare, donc elle signifie. Ce que ça lui
   coûte : le site n'a plus de traversée, et l'argument « la nuit est ce qu'on
   mesure » ne se joue plus qu'à l'échelle d'une carte.
   LES RÔLES CI-DESSOUS NE BOUGENT PAS D'UNE VALEUR. Une zone imbriquée doit
   toujours se réinitialiser complètement : les propriétés personnalisées
   héritent, elles ne se remettent pas à zéro, et une .zone-nuit posée dans une
   page blanche prendrait sinon l'encre du jour sur un fond de nuit.
   Contrastes sur --fond nuit #0C1620 : projecteur 18,24 · craie 11,99 ·
   halo-vif 10,75 · halo 6,44 · brume 6,21 · acier 2,21 (filet décoratif
   SEULEMENT) · braise 3,33 et cuir 3,11 — pastille ou titre ≥ 24px, jamais
   du texte courant. */
.zone-nuit,
[data-registre="nuit"] {
  color-scheme: dark;
  --fond: var(--nuit);
  --surface: var(--fosse);
  --carte: var(--tribune);
  --carte-basse: var(--fosse);
  --survol: var(--gradins);
  --bordure: var(--acier);
  --bordure-champ: var(--brume);
  --texte: var(--craie);
  --texte-secondaire: var(--brume);
  --preuve: var(--projecteur);
  --action: var(--halo-vif);
  --focus: var(--halo-vif);
  --alerte: var(--braise);
  --attente: var(--cuir);
  /* Le jaune tient 9,53:1 sur la nuit : c'est le seul endroit du site où il
     peut porter du texte, et c'est celui d'Axel, les horaires de son relevé
     sombre (v6.css:455). */
  --signal: var(--jaune);
  --valide: var(--vert);
}

/* --- 4. Les SEULS défauts de descendant du fichier. Tous en :where(),
       tous en (0,0,1) : un composant reprend toujours la main. ------------- */

/* LE DÉFAUT DE p, li ET dd A ÉTÉ RETIRÉ D'ICI, ET C'EST LE CORRECTIF.
   Il posait --texte-secondaire sur TOUT paragraphe, toute puce et toute
   définition des treize pages. Relevé au navigateur le 13.08 : 285 éléments
   de texte courant sortaient éteints, contre neuf classes remontées à la main
   au texte courant. La luminance ne disait donc plus « ceci compte plus »,
   elle disait « presque rien ne compte », l'inverse exact de la loi 2 de
   DESIGN.md.
   Ce n'était PAS un défaut de contraste : sur --fond nuit, brume fait 6,21:1
   et craie 11,99:1, les deux passent AA. C'était un défaut de RANG. Le
   chapeau qui porte l'explication d'une section sortait un cran sous la
   phrase qui la conclut, et l'œil le lisait comme désactivé.

   Rien ne remplace la règle : la zone peint déjà `color: var(--texte)` sur
   elle-même (partie 1) et le texte courant en hérite. Ne pas la réécrire avec
   --texte « pour être explicite » : l'écrire à nouveau, même à la bonne
   couleur, rendrait de nouveau ces trois balises sourdes à leur conteneur.
   C'est ce que la version fautive faisait sans le dire. `.rapport__pied`,
   `.rapport__signaux` et `.frise__legende` posent une couleur sur un bloc, et
   leurs p et li ne l'ont jamais reçue, car un défaut d'élément bat toujours un
   héritage, quelle que soit la spécificité de sa source.

   LE SECONDAIRE NE SE PREND PLUS, IL SE DEMANDE. Une légende, une
   micro-étiquette, un libellé de champ, une mention de bas de page le nomment
   explicitement, là où le composant est écrit. */

:where(.zone-jour, .zone-nuit, [data-registre]) h1,
:where(.zone-jour, .zone-nuit, [data-registre]) h2,
:where(.zone-jour, .zone-nuit, [data-registre]) h3,
:where(.zone-jour, .zone-nuit, [data-registre]) strong,
:where(.zone-jour, .zone-nuit, [data-registre]) b,
:where(.zone-jour, .zone-nuit, [data-registre]) dt {
  color: var(--texte);
}
:where(.zone-jour, .zone-nuit, [data-registre]) hr {
  border-color: var(--bordure);
}
:where(.zone-jour, .zone-nuit, [data-registre]) a {
  color: inherit;
}

/* --- 5. Focus et sélection : une règle chacun, --focus et --action font le
       travail dans les deux lumières. --------------------------------------- */
:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 2px;
}
/* LA SÉLECTION A CASSÉ AVEC LA BASCULE DE --action, et une seule règle ne la
   répare pas. L'ancienne (« background --action, color --fond ») annonçait
   papier sur braise 4,85 ; --action vaut le jaune depuis le 14.08, et blanc
   sur jaune fait 1,62:1 : la sélection était illisible sur toutes les pages de
   jour. Aucun jeton unique ne tient les deux lumières : en jour c'est --texte
   qui lit sur le jaune (encre, 11,46:1) et --fond qui échoue ; en nuit c'est
   --fond qui lit sur halo-vif (nuit, 10,75:1) et --texte qui échoue (craie sur
   halo-vif, 1,2:1). D'où deux règles, une par lumière, même fond d'action. */
::selection {
  background: var(--action);
  color: var(--texte);
}
:where(.zone-nuit, [data-registre="nuit"]) ::selection {
  background: var(--action);
  color: var(--fond);
}

/* --- 6. .zone-pivot A ETE RETIREE LE 14.08, avec la section qu'elle nommait.
       Elle declarait `color-scheme: light dark` sur la seule section du site
       qui contenait les deux lumieres. Il n'y en a plus : le site a une seule
       lumiere, et la nuit est devenue un objet qui porte sa propre zone.
       Si le pivot revient un jour, il revient avec cette ligne, pas sans.
       ------------------------------------------------------------------- */

/* --- 7. Contraste renforcé : le secondaire remonte au texte courant. ----- */
@media (prefers-contrast: more) {
  .zone-jour,
  [data-registre="jour"] { --texte-secondaire: var(--encre); }
  .zone-nuit,
  [data-registre="nuit"] { --texte-secondaire: var(--craie); }
}
