/* =====================================================================
   theme-control.css — SOURCE DE VERITE UNIQUE DU THEME (clair / sombre)
   ---------------------------------------------------------------------
   Ce fichier est charge EN DERNIER (apres dashboard.css, apres les
   <style> inline et apres bkRenderThemeHead() du theme custom).
   Il gagne donc la cascade et reprend le controle integral des couleurs.

   Objectif : empecher que les couleurs inline codees en dur (~5000 dans
   index.php) cassent le mode clair OU le mode sombre. Tout est pilote ici.

   STRUCTURE :
     A) Variables CSS — valeurs SOMBRES (defaut) reaffirmees
     B) Variables CSS — surcharge MODE CLAIR (body.p2-light)  [le chainon manquant]
     C) Normalisation MODE CLAIR  : hex sombres inline -> creme
     D) Normalisation MODE SOMBRE : hex clairs inline -> sombre (filet de securite)
     E) Garde de LISIBILITE pour les themes custom (liens / badges)

   CONVENTION : pour ajouter une couleur, l'ajouter UNIQUEMENT ici.
   Ne plus rajouter de patch `body.p2-light [style*=...]` ailleurs.
   ===================================================================== */

/* =====================================================================
   A) PALETTE SOMBRE (defaut) — tokens semantiques de reference
   On reaffirme les tokens pour qu'ils existent meme si dashboard.css
   evolue. Ce sont les memes valeurs que dashboard.css :root.
   ===================================================================== */
:root {
    /* Surfaces sombres (du plus bas au plus haut) */
    --bk-bg:        #0d1117;   /* fond page / boites principales */
    --bk-surface-1: #161b22;   /* carte */
    --bk-surface-2: #1e2a3a;   /* carte surelevee / input */
    --bk-surface-3: #21262d;   /* zones internes (barres, pistes) */
    /* Bordures */
    --bk-border:      #30363d;
    --bk-border-soft: #1a2540;
    /* Texte */
    --bk-text:    #f0f6fc;   /* texte fort */
    --bk-text-2:  #c9d1d9;   /* texte normal */
    --bk-text-3:  #8b949e;   /* texte secondaire */
    --bk-text-4:  #6e7681;   /* texte attenue */
    /* Lien lisible dans le mode courant (sombre par defaut) */
    --bk-link:    #a78bfa;
}

/* =====================================================================
   B) MODE CLAIR — surcharge des variables (LE CHAINON MANQUANT)
   Avant ce bloc, body.p2-light ne redefinissait AUCUNE variable : tous
   les elements en var(--bg-card) etc. restaient sombres en mode clair.
   Ici on bascule toute la palette d'un coup -> tout var() suit.
   ===================================================================== */
body.p2-light {
    /* Tokens dashboard.css (navy -> creme) */
    --bg-body:       #f4ede0;
    --bg-card:       #faf6ec;
    --bg-card-hover: #fffdf7;
    --bg-surface:    #f1e8d6;
    --bg-input:      #ffffff;
    --bg-nav:        #faf6ecee;
    --border:        #d8cdb1;
    --border-light:  #c9bfa6;
    --text-primary:  #1a1814;
    --text-secondary:#5a5040;
    /* ⚠ #8a7d63 MESURE A 3,47:1 SUR #f4ede0 ET 3,75:1 SUR #faf6ec — sous le seuil
       AA (4,5). C'etait, de loin, le PREMIER contributeur au texte illisible en mode
       clair : ~330 elements sur six pages (compteurs de tuiles, libelles de filtres,
       sous-titres, « Aucun titre enregistre »...). La teinte avait deja ete corrigee
       a #756950 en 2026-08-13, mais SEULEMENT dans deux composants (succes par niveau,
       barre de navigation) — la variable, elle, restait fausse pour tout le reste.
       Corrigee A LA SOURCE : #756950 mesure 4,83:1 sur #f4ede0. */
    --text-muted:    #756950;
    --text-white:    #0a0805;
    --text-link:     #6b4f2c;

    /* Tokens de ce fichier (sombre -> creme) */
    --bk-bg:        #f4ede0;
    --bk-surface-1: #faf6ec;
    --bk-surface-2: #ffffff;
    --bk-surface-3: #ebe2cf;
    --bk-border:      #c9bfa6;
    --bk-border-soft: #d8cdb1;
    --bk-text:    #0a0805;
    --bk-text-2:  #1a1814;
    --bk-text-3:  #5a5040;
    --bk-text-4:  #756950;   /* meme correction que --text-muted : 3,47:1 -> 4,83:1 */
    --bk-link:    #6b4f2c;
}

/* =====================================================================
   C) NORMALISATION MODE CLAIR — couleurs inline sombres -> creme
   On cible les substrings exacts ecrits dans les attributs style="...".
   Les deux formes (avec / sans espace apres ':') sont couvertes.
   ===================================================================== */

/* --- Fonds sombres -> surfaces creme --- */
body.p2-light [style*="background:#0d1117"],
body.p2-light [style*="background: #0d1117"],
body.p2-light [style*="background:#0a0f20"],
body.p2-light [style*="background: #0a0f20"] { background: var(--bk-surface-1) !important; }

body.p2-light [style*="background:#161b22"],
body.p2-light [style*="background: #161b22"],
body.p2-light [style*="background:#131a28"],
body.p2-light [style*="background: #131a28"] { background: var(--bk-surface-2) !important; }

body.p2-light [style*="background:#1e2a3a"],
body.p2-light [style*="background: #1e2a3a"],
body.p2-light [style*="background:#1a2540"],
body.p2-light [style*="background: #1a2540"],
body.p2-light [style*="background:#21262d"],
body.p2-light [style*="background: #21262d"] { background: var(--bk-surface-3) !important; }

/* --- Texte clair -> texte fonce --- */
/* ⚠⚠ `:not([style*="background"])` — GARDE INDISPENSABLE.
   Sans elle, cette regle basculait le texte blanc en fonce MEME sur un element qui
   porte son propre fond colore : `background:var(--brand);color:#fff` devenait du
   brun fonce sur du brun. Mesure : le bouton « Rechercher un athlete » de la page
   Athletes sortait a **1,00:1** — texte et fond exactement de la meme couleur, donc
   INVISIBLE. Un texte blanc sur fond colore est deja lisible en mode clair : il n
   y a rien a corriger, et tout a casser.
   C est le piege que ce fichier documente pour la couche D (« ne basculer qu une
   couleur sur deux cree du texte invisible ») — il valait aussi pour la couche C. */
body.p2-light [style*="color:#f0f6fc"]:not([style*="background"]),
body.p2-light [style*="color: #f0f6fc"]:not([style*="background"]),
body.p2-light [style*="color:#fff"]:not([style*="background"]),
body.p2-light [style*="color: #fff"]:not([style*="background"]),
body.p2-light [style*="color:#ffffff"]:not([style*="background"]),
body.p2-light [style*="color: #ffffff"]:not([style*="background"]) { color: var(--bk-text) !important; }

body.p2-light [style*="color:#c9d1d9"],
body.p2-light [style*="color: #c9d1d9"] { color: var(--bk-text-2) !important; }

body.p2-light [style*="color:#8b949e"],
body.p2-light [style*="color: #8b949e"] { color: var(--bk-text-3) !important; }

body.p2-light [style*="color:#5a6580"],
body.p2-light [style*="color: #5a6580"],
body.p2-light [style*="color:#6e7681"],
body.p2-light [style*="color: #6e7681"] { color: var(--bk-text-4) !important; }

/* --- Bordures sombres -> creme --- */
body.p2-light [style*="border:1px solid #30363d"],
body.p2-light [style*="border: 1px solid #30363d"],
body.p2-light [style*="border-color:#30363d"],
body.p2-light [style*="border-color: #30363d"] { border-color: var(--bk-border) !important; }

body.p2-light [style*="border:1px solid #1a2540"],
body.p2-light [style*="border: 1px solid #1a2540"],
body.p2-light [style*="border:1px solid #21262d"],
body.p2-light [style*="border: 1px solid #21262d"] { border-color: var(--bk-border-soft) !important; }

/* =====================================================================
   D) NORMALISATION MODE SOMBRE — (volontairement vide)
   On NE bascule PAS automatiquement les couleurs claires inline en sombre :
   ne basculer qu'une couleur sur deux d'un element (fond OU texte) cree du
   texte invisible. Les rares elements codes en clair qui depassent en mode
   sombre (boite blanche, etc.) se corrigent AU CAS PAR CAS — de preference
   en remplacant le hex inline par var(--bg-card)/var(--text-primary) dans
   le code source, ou par une regle ciblee par classe ici.
   ===================================================================== */

/* =====================================================================
   E) GARDE DE LISIBILITE — themes custom (core/theme.php)
   Un theme custom peut definir un accent tres clair (ex: jaune #bbaf2a)
   qui rend les liens illisibles sur fond creme en mode clair. On force
   ici une couleur de lien lisible dans CHAQUE mode, quel que soit le
   theme. (S'applique apres le <style> du theme custom -> gagne.)
   ===================================================================== */
/* ⚠⚠ `:not([style*="background"])` — MEME GARDE QUE LA COUCHE C.
   Cette regle forcait la couleur de TOUS les liens, y compris ceux qui sont des
   BOUTONS avec leur propre fond colore pose en ligne. Mesure sur la page Athletes :
   le bouton « Rechercher un athlete » porte `background:var(--brand);color:#fff` ;
   la regle repeignait son texte en `--bk-link` (#6b4f2c) alors que son fond valait
   deja #6b4f2c -> **1,00:1**, texte et fond exactement identiques, bouton INVISIBLE.
   La liste `:not(.btn):not([class*="btn-"])` visait deja les boutons, mais elle ne
   couvre que ceux qui portent une CLASSE : un lien stylise entierement en ligne y
   echappait. Le test sur la presence d un fond, lui, ne rate personne.
   Un lien qui a son propre fond n a pas besoin de cette garde : il ne risque pas de
   se fondre dans la creme, il a deja son contraste a lui. */
body.p2-light a:not(.btn):not([class*="btn-"]):not(.nav-link):not(.tab):not([style*="background"]) {
    color: var(--bk-link) !important;
}
body.p2-light a:not(.btn):not([class*="btn-"]):not(.nav-link):not(.tab):not([style*="background"]):hover {
    color: #2a2418 !important;
}

/* Badges de NIVEAU (D/R/N/I) : ne JAMAIS laisser un theme custom les
   recolorer. Ils portent une couleur semantique inline -> on protege le
   contraste du texte en gardant la couleur inline (pas de surcharge de
   couleur ici, juste on s'assure que .badge-cat custom ne les ecrase pas
   via une regle plus specifique dans core/theme.php). */

/* =====================================================================
   C-bis) LES ACCENTS SUR LA CREME  (2026-08-14)
   ---------------------------------------------------------------------
   ⚠ AUDIT MESURE : 612 elements de texte sous le seuil AA (4,5:1) en mode
   clair, sur six pages. La cause n'est pas un oubli isole — ce sont les
   couleurs d'accent du site, TOUTES pensees pour un fond NOIR, appliquees
   telles quelles sur la creme :
       #f59e0b  1,84:1     #34d399  1,78:1     #e879f9  2,11:1
       #f472b6  2,45:1     #fb7185  2,31:1     #6c5ce7  4,17:1
   Elles sont posees en `style="color:…"` par PHP (badges de niveau, mentions
   legales, compteurs) : c'est exactement le role de cette couche.

   ⚠ ON NE CHANGE QUE LA COULEUR DU TEXTE, jamais le fond ni la bordure.
   Les badges de niveau portent un fond teinte a 12 % d'alpha : sur creme il
   reste clair, un texte fonce dessus se lit. Basculer une couleur sur deux
   est precisement ce qui a rendu du texte invisible par le passe (c'est
   pourquoi la couche D est restee vide).

   ⚠ CHAQUE TEINTE GARDE SA FAMILLE. Le rose reste rose, le cyan reste cyan :
   ces couleurs PORTENT une information (niveau departemental / regional /
   national / international, sexe, alerte). Les uniformiser en gris ferait
   disparaitre l'information en meme temps que le probleme de contraste.
   ===================================================================== */

/* Niveaux — memes familles, versions foncees (cf. « Succes par niveau ») */
body.p2-light [style*="color:#fb7185"],
body.p2-light [style*="color: #fb7185"] { color: #9f1239 !important; }   /* National   */
body.p2-light [style*="color:#e879f9"],
body.p2-light [style*="color: #e879f9"] { color: #86198f !important; }   /* Internat.  */
body.p2-light [style*="color:#22d3ee"],
body.p2-light [style*="color: #22d3ee"] { color: #155e75 !important; }   /* Regional   */
body.p2-light [style*="color:#fb923c"],
body.p2-light [style*="color: #fb923c"] { color: #9a3412 !important; }   /* Departem.  */
body.p2-light [style*="color:#a78bfa"],
body.p2-light [style*="color: #a78bfa"] { color: #5b21b6 !important; }   /* Inter-reg. */

/* Accents generaux */
body.p2-light [style*="color:#f59e0b"],
body.p2-light [style*="color: #f59e0b"] { color: #8a5a00 !important; }   /* alerte / mention legale */
body.p2-light [style*="color:#fbbf24"],
body.p2-light [style*="color: #fbbf24"] { color: #8a6a00 !important; }
body.p2-light [style*="color:#34d399"],
body.p2-light [style*="color: #34d399"] { color: #0b6b4f !important; }
body.p2-light [style*="color:#4ade80"],
body.p2-light [style*="color: #4ade80"] { color: #15803d !important; }
body.p2-light [style*="color:#f472b6"],
body.p2-light [style*="color: #f472b6"] { color: #9d174d !important; }   /* feminin */
body.p2-light [style*="color:#6c5ce7"],
body.p2-light [style*="color: #6c5ce7"] { color: #5b21b6 !important; }
body.p2-light [style*="color:#58a6ff"],
body.p2-light [style*="color: #58a6ff"] { color: #1d4ed8 !important; }
