/* ============================================================================
   CONTRASTE EN THEME CLAIR
   ----------------------------------------------------------------------------
   La maquette a ete dessinee en theme SOMBRE. Plusieurs elements y sont forces
   en blanc, sur un fond qui, lui, suit le theme : en clair, ils disparaissent.

   Signale par la recette, puis MESURE au navigateur avant correction :

     theme clair, fond du bandeau       rgb(242, 242, 242)
     six logos sur dix forces en blanc  contraste 1.12   (3 exige pour un visuel)
     titre des CGU, blanc sur ce fond   contraste 1.12   (4.5 exige pour du texte)
     les memes en theme sombre          contraste 19.81  — corrects

   Cette feuille ne corrige QUE le theme clair, et ne touche a rien d'autre :
   le rendu sombre, valide par le client, ne bouge pas d'un pixel.

   Elle est CHARGEE APRES css/style.css et n'y touche jamais. La feuille de la
   maquette est comparee octet par octet par le harnais ; l'editer creerait un
   ecart permanent. Meme procede que R9 (polices) et R13 (article de blog).

   « :root:not([data-theme="dark"]) » plutot que « [data-theme="light"] » :
   quand aucun theme n'est choisi, l'attribut est absent et le site s'affiche
   en clair. Viser explicitement « light » laisserait donc le cas par defaut
   — le plus frequent — sans correction.
   ============================================================================ */

/* --- Bandeau « Ecosysteme et soutiens » -------------------------------------
   La maquette blanchit les logos (brightness(0) invert(1)) pour les poser sur
   un fond sombre. En clair, on les noircit au lieu de les blanchir : meme
   traitement monochrome, meme sobriete, contraste retabli.

   L'opacite passe de 0.6 a 0.75 : un noir a 60 % sur fond clair est plus pale
   qu'un blanc a 60 % sur fond sombre, l'oeil ne percoit pas les deux de la
   meme facon. Mesure sur les deux themes pour obtenir une presence
   equivalente.

   Les logos porteurs de trust-logo-color et trust-logo-natural gardent leurs
   couleurs d'origine : ils ne sont pas concernes, et le sont d'autant moins
   qu'ils passent deja le contraste en clair. */
:root:not([data-theme="dark"]) .trust-logos-static img:not(.trust-logo-color):not(.trust-logo-natural) {
    filter: brightness(0);
    opacity: 0.75;
}
:root:not([data-theme="dark"]) .trust-logos-static img:not(.trust-logo-color):not(.trust-logo-natural):hover {
    opacity: 1;
}

/* --- Les quatre logos qui gardent leurs couleurs ---------------------------
   PREMIERE CORRECTION INSUFFISANTE, signalee par la recette et mesuree sur les
   PIXELS RENDUS du site en ligne, pas sur les styles calcules :

     theme clair, part de l'encre au contraste suffisant
       CNRS                 0.0 %
       Campus Cyber         0.0 %
       Hexatrust            0.0 %
       La Place Strategique 1.1 %
       les six autres       9 a 23 %  — corriges au premier passage

   Je les avais EXCLUS, au motif qu'ils gardent leurs couleurs d'origine. Or
   c'est precisement pour cela qu'ils disparaissent : ces couleurs sont
   CLAIRES, dessinees pour un fond sombre. L'auteur de la remarque l'avait
   ecrit — « les logos avec des fonds transparents et des ecritures claires ».

   Ma premiere mesure lisait le filtre CSS et concluait « corrige » ; elle ne
   regardait pas ce qui s'affiche. Un logo peut porter le bon filtre et rester
   invisible.

   On les ASSOMBRIT sans les decolorer : brightness() reduit la clarte en
   conservant la teinte, la ou brightness(0) les reduirait a des taches noires
   — ce qui reproduirait, en miroir, le defaut qu'on corrige. La saturation est
   relevee pour compenser la perte de vivacite qu'entraine l'assombrissement.

   Valeur retenue par mesure, pas par estimation : voir le tableau du registre. */
:root:not([data-theme="dark"]) .trust-logos-static img.trust-logo-color {
    filter: brightness(0.45) saturate(1.6);
    opacity: 0.9;
}
:root:not([data-theme="dark"]) .trust-logos-static img.trust-logo-color:hover {
    opacity: 1;
}

/* --- Le CNRS, qui n'est pas un logo colore ---------------------------------
   Sa classe s'appelle « trust-logo-natural » et signifie « ne pas y toucher ».
   Mesure du fichier source : encre a rgb(255,255,255), saturation 0.0,
   100 % de pixels clairs. Ce logo est ENTIEREMENT BLANC — il n'a aucune
   couleur naturelle a preserver.

   Pour lui, l'assombrissement partiel ne suffit pas : brightness(0.45) sur du
   blanc pur donne un gris a 2.1 % d'encre lisible seulement. Il appartient au
   groupe des logos monochromes, et recoit le meme traitement : noirci en
   clair, blanc en sombre.

   A titre de comparaison, les trois logos vraiment colores : saturation 26,
   43 et 85, et de 50 a 85 % de pixels clairs seulement. */
:root:not([data-theme="dark"]) .trust-logos-static img.trust-logo-natural {
    filter: brightness(0);
    opacity: 0.75;
}
:root:not([data-theme="dark"]) .trust-logos-static img.trust-logo-natural:hover {
    opacity: 1;
}

/* --- Titre des pages sans bandeau haut --------------------------------------
   Neuf pages sur onze ouvrent sur un bandeau sombre : leur titre blanc s'y lit
   parfaitement. Deux ne l'ont pas — CGU et mentions legales — et posent le
   meme titre blanc sur le fond de page.

   Le selecteur vise donc le titre place dans une section ORDINAIRE, jamais
   dans un bandeau : « section.section » ne designe aucune des neuf autres, qui
   ouvrent sur .hero, .product-hero ou .contact-hero. La correction ne peut pas
   deborder sur une page qu'elle n'a pas a toucher. */
:root:not([data-theme="dark"]) section.section h1 {
    /* « !important » est ici NECESSAIRE, et c'est le seul de cette feuille.
       Le titre porte un style EN LIGNE dans la maquette :

           <h1 style="color:white; margin:0 auto 0.5rem;">

       Un style en ligne l'emporte sur toute feuille externe, quelle que soit
       sa specificite. Sans ce mot, la regle est dans la cascade, le selecteur
       correspond, et la couleur reste blanche — constate au navigateur avant
       de comprendre pourquoi.

       L'alternative aurait ete de retirer l'attribut du gabarit : c'est
       modifier le DOM de deux pages de la maquette pour obtenir ce que ce
       mot-cle obtient sans y toucher. */
    color: var(--heading-color) !important;
}

/* --- Menu de navigation, en haut des pages sans bandeau ---------------------
   SECOND DEFAUT SIGNALE PAR LA RECETTE, sur la meme page : « le probleme
   persiste, quand on est en haut dans le scroll ». La description etait
   exacte, et le defaut n'etait pas celui que j'avais corrige.

   Mesure au navigateur, page CGU, theme clair :

     en haut de page      nav transparente, liens rgba(255,255,255,.78),
                          fond de page rgb(242,242,242)  →  invisible
     apres defilement     .nav.scrolled, fond rgba(10,8,20,.72)  →  lisible

   Le menu prend un fond sombre au defilement, mais pas avant. Sur les neuf
   pages a bandeau, ce bandeau sombre sert de fond : le menu s'y lit. Sur les
   deux qui n'en ont pas, il flotte au-dessus du fond de page.

   POURQUOI UN FOND PLUTOT QUE DE RECOLORER. Le menu porte des liens, des
   icones, un bouton et un LOGO EN IMAGE — blanc lui aussi. Les recolorer un a
   un demanderait autant de regles que d'elements, et le logo exigerait un
   filtre. Lui donner le fond qu'il prend de toute facon au premier defilement
   traite tout d'un coup, avec une apparence deja validee par le client.

   Le selecteur reconnait la page a sa structure, sans rien ajouter au DOM :
   sur ces deux pages, et sur elles seules, le <nav> est immediatement suivi
   d'une <section class="section"> ordinaire, la ou les neuf autres ouvrent sur
   .hero, .product-hero ou .contact-hero.

   « :not(.nav-open) » — CORRECTIF DU 25/09, UNE REGRESSION DE NOTRE FAIT.
   Mesure avant, captures du menu mobile deplie, theme clair, preprod
   1.0.126-rc.6a40a1d : sur cgu, mentions legales, 404 et les articles de
   blog, le panneau n'etait qu'une bande sombre de ~145 px, SANS UN LIEN ; en
   sombre, panneau plein ecran complet.
   Cause : cette regle pose un backdrop-filter sur .nav et, plus specifique,
   l'emporte sur « body.nav-open .nav { backdrop-filter: none } » de la
   maquette. Or un element porteur de backdrop-filter devient le BLOC
   CONTENEUR de ses descendants en position: fixed : le panneau (#navLinks,
   fixed, top/bottom 0) etait rogne a la boite du nav. Menu ouvert, la
   maquette prend la main (fond --drawer-bg, pas de filtre) : on s'efface. */
:root:not([data-theme="dark"]) body:not(.nav-open):has(nav.nav + section.section) .nav {
    background: rgba(10, 8, 20, 0.72);
    backdrop-filter: blur(48px) saturate(200%) brightness(0.85);
    -webkit-backdrop-filter: blur(48px) saturate(200%) brightness(0.85);
    box-shadow:
        inset 0  1px 0 0 rgba(255, 255, 255, 0.14),
        0 4px  8px       rgba(0,   0,   0,   0.28),
        0 24px 64px      rgba(0,   0,   0,   0.55);
}

/* --- Cartes produit, AU REPOS ----------------------------------------------
   TROISIEME DEFAUT SIGNALE PAR LA RECETTE, et la description etait exacte :
   « tant que la souris n'est pas dessus, en theme clair, le logo est clair sur
   clair ».

   La carte est en verre : son fond suit le theme (--card-bg-glass, soit
   rgba(255,255,255,0.68) en clair). Son contenu, lui, est fige en blanc par la
   maquette :

     .card-icon img     filter: brightness(0) invert(1)   → blanc
     .product-name      rgba(255,255,255,0.9)
     .product-arrow     rgba(255,255,255,0.38)

   Mesure au navigateur, theme clair, carte revelee (opacite 1) : contraste
   1.00 pour le nom et pour l'icone. Capture a l'appui : la ligne du haut est
   vide a l'oeil.

   AU SURVOL, RIEN NE DOIT CHANGER. La maquette pose alors un degrade violet
   sombre et force « color: #ffffff !important » : le blanc y est correct.
   D'ou « :not(:hover) » — sans quoi on assombrirait un contenu qui vient de
   passer sur fond sombre, en remplacant un defaut par son miroir.

   PAS de « :not(:focus-within) », delibere : la maquette ne style QUE :hover.
   Une carte atteinte au clavier garde son fond clair et a donc besoin de la
   correction ; l'exclure la rendrait invisible au clavier — exactement la
   population qu'on cherche a servir.

   Cinq pages portent ces cartes : index, authsezam, smartsezam, myrios-prism
   et cas-usage. */
:root:not([data-theme="dark"]) .product-card:not(:hover) .card-icon {
    background: color-mix(in srgb, var(--heading-color) 6%, transparent);
    color: var(--heading-color);
}
:root:not([data-theme="dark"]) .product-card:not(:hover) .card-icon img {
    /* Meme traitement que les logos du bandeau : noirci au lieu d'etre blanchi. */
    filter: brightness(0);
    opacity: 0.75;
}
:root:not([data-theme="dark"]) .product-card:not(:hover) .product-name {
    color: var(--heading-color);
}
:root:not([data-theme="dark"]) .product-card:not(:hover) .product-arrow {
    /* La maquette la pose a 38 % de blanc : discrete, pas absente. On garde
       cette discretion en sombre plutot que de la rendre noire et plus
       presente qu'elle ne l'est dans le rendu valide. */
    color: color-mix(in srgb, var(--text) 45%, transparent);
}

/* --- Bandeau d'appel a l'action --------------------------------------------
   QUATRIEME DEFAUT SIGNALE : « idem que pour les logos, c'est clair sur clair
   → pas lisible en theme clair », sur « Pret a passer a l'action ? ».

   La maquette pose « .cta-band h2 { color: var(--white) } » — du blanc en dur,
   quel que soit le theme — dans un conteneur dont le fond suit le theme
   (rgba(255,255,255,0.68) en clair). Contraste mesure : 1.00. Le sous-titre et
   le bouton, eux, passent : le premier utilise --text-light, le second a son
   propre fond.

   Le balayage des dix pages a trouve un CINQUIEME element de la meme famille,
   que la remarque ne citait pas : les liens de navigation du meme bandeau
   (« Decouvrir MyriosPrism »), a rgba(255,255,255,0.45), contraste 1.00.
   Capture : la bande est vide a l'oeil. Corrige avec le reste plutot que
   d'attendre qu'on le signale.

   Six pages portent ce bandeau. */
:root:not([data-theme="dark"]) .cta-band h2 {
    color: var(--heading-color);
}
:root:not([data-theme="dark"]) .cta-band .cta-nav-link {
    color: color-mix(in srgb, var(--text) 55%, transparent);
}
:root:not([data-theme="dark"]) .cta-band .cta-nav-link:hover {
    color: var(--text);
}

/* ============================================================================
   BALAYAGE COMPLET DU 25/09/2026 — captures de la preproduction
   (1.0.126-rc.6a40a1d), 21 pages dont les 8 cas d'usage et 2 articles, deux
   themes, bureau 1440 et mobile 390, menus ouverts : 309 captures claires
   REGARDEES, chacune confrontee a son homologue sombre. Trois familles
   restaient, toutes de la meme cause que le reste de cette feuille : du blanc
   fige par la maquette sur un fond qui suit le theme.
   ============================================================================ */

/* --- Boutons secondaires des pages d'erreur (404, 403, 500) ----------------
   Mesure avant : « Consulter le blog » et « Nous ecrire » invisibles a la
   capture — texte rgba(255,255,255,.80) sur pilule rgba(255,255,255,.10), le
   tout sur le fond de page rgb(242,242,242). Lisibles en sombre.
   Cause : .btn-hero-secondary est la pilule de verre des bandeaux SOMBRES ;
   le gabarit des pages d'erreur (R24) la pose sur une section ordinaire.
   Correction : la meme pilule, en miroir — voile et filet sombres a la place
   des blancs, texte au jeton de titre. « section.section » ne designe que ces
   pages : ailleurs le bouton vit dans le nav ou dans le .hero de l'accueil,
   qui restent sombres dans les deux themes. */
:root:not([data-theme="dark"]) section.section .btn-hero-secondary {
    background: color-mix(in srgb, var(--heading-color) 6%, transparent);
    border-color: color-mix(in srgb, var(--heading-color) 18%, transparent);
    color: color-mix(in srgb, var(--heading-color) 85%, transparent);
}
:root:not([data-theme="dark"]) section.section .btn-hero-secondary:hover {
    background: color-mix(in srgb, var(--heading-color) 10%, transparent);
    border-color: color-mix(in srgb, var(--heading-color) 28%, transparent);
    color: var(--heading-color);
}

/* --- Points de pagination des carrousels -----------------------------------
   Mesure avant : sous les carrousels « Fonctionnalites » / « Le constat » /
   « Les benefices », seul le point ACTIF (degrade) se voit ; les autres,
   rgba(255,255,255,.22) sur fond clair, sont invisibles a la capture.
   Onze pages : smartsezam, myrios-prism, authsezam et les 8 cas d'usage.
   Correction : le meme voile en noir, meme opacite qu'en sombre. La maquette
   fait deja ce miroir pour son autre carrousel (.carousel-dot en
   [data-theme="light"], molecules.css) ; le point actif n'est pas touche. */
:root:not([data-theme="dark"]) .feat-carousel-dot:not(.is-active) {
    background: rgba(0, 0, 0, 0.22);
}
:root:not([data-theme="dark"]) .feat-carousel-dot:not(.is-active):hover {
    background: rgba(0, 0, 0, 0.4);
}

/* --- Fleche des cartes du blog ---------------------------------------------
   Mesure avant : la fleche en haut a droite des cartes d'article (a la une et
   grille) est absente a la capture — rgba(255,255,255,.35) sur carte claire.
   Meme famille que .product-arrow plus haut, meme correction : discrete, pas
   absente. Au survol la maquette passe la carte en degrade violet sombre et
   la fleche en blanc : « :not(:hover) » laisse cet etat intact. */
:root:not([data-theme="dark"]) .blog-card:not(:hover) .blog-card-arrow {
    color: color-mix(in srgb, var(--text) 45%, transparent);
}

/* ============================================================================
   PASSE TABLETTE DU 25/09/2026 — preprod 1.0.137, 820 px (puis 768, 1024 et
   bureau), deux themes, verifie en DEFILEMENT REEL (animations actives).
   ============================================================================ */

/* --- Ombre du menu fixe, une fois la page defilee --------------------------
   Mesure avant : .nav.scrolled porte « 0 24px 64px rgba(0,0,0,.55) ». Sur le
   fond sombre du theme valide, elle se fond ; sur le fond clair
   rgb(242,242,242), elle trace SOUS le menu une bande grise d'environ 60 px
   qui assombrit ce qui passe dessous (filtres du blog, « Voir tout » delave ;
   sommaire des CGU grise). Toutes pages, toutes largeurs, theme clair seul.
   Correction : meme menu, meme fond, meme filet ; ombre ramenee a ce qu'elle
   donne a l'oeil en sombre — un detachement, pas une bande. Menu mobile
   ouvert exclu : la maquette y retire toute ombre, on ne la rend pas. La
   regle du menu des pages sans bandeau (plus haut) recoit la meme ombre. */
:root:not([data-theme="dark"]) body:not(.nav-open) .nav.scrolled,
:root:not([data-theme="dark"]) body:not(.nav-open):has(nav.nav + section.section) .nav {
    box-shadow:
        inset 0 1px 0 0 rgba(255, 255, 255, 0.14),
        0 2px 6px       rgba(0,   0,   0,   0.14),
        0 8px 20px      rgba(0,   0,   0,   0.10);
}

/* --- Fonction sous le nom, fiches de l'equipe ------------------------------
   Mesure avant, capture a 820 et 1440 px : « CO-FONDATRICE & CEO »,
   « VP SALES »... en rgba(255,255,255,.55), sur le degrade du bas de photo
   qui, pose sur le fond lavande CLAIR des portraits en theme clair, ne donne
   qu'un gris moyen : lisible avec effort. En sombre, le meme degrade tombe sur
   un violet profond et la legende se lit. Correction : la legende passe a
   85 % de blanc, en clair seulement ; le nom (blanc plein) ne bouge pas. */
:root:not([data-theme="dark"]) .team-flip-overlay .team-member-role {
    color: rgba(255, 255, 255, 0.85);
}
