/* ============================================================================
   theme.css — SOCLE DU DOUBLE THÈME (P0 — 24/07/2026)
   PRD : docs/prd_theme_clair_sombre.md · Maquette validée : artifact 698f5f59
   Règles :
   - Chargé EN DERNIER dans base.html : ses overrides html[data-theme=light]
     gagnent sur les :root existants (app.css, game_detail.css, …).
   - Jeu SOMBRE = les tokens existants, INCHANGÉS (défaut pendant le chantier).
   - Tout NOUVEAU token couleur vit ICI et nulle part ailleurs.
   - Grammaire v2 : le doré vit sur le sombre ; sémantiques profondes sur clair ;
     héros/nav/footer/CTA restent sombres dans les 2 thèmes.
   ========================================================================== */

:root { color-scheme: dark; }
html[data-theme="light"] { color-scheme: light; }

/* ===== JEU CLAIR — famille « cards » (game_detail.css / match_unified.css) =====
   Le fond de PAGE, le héros, la nav et le footer restent sombres : on ne
   touche ici qu'aux tokens de cartes/contenu. Migration page par page (P1+). */
html[data-theme="light"] {
  /* surfaces — alignées sur le « papier » WC26 (retour Olivier 24/07 : plus clair) */
  --bg-card: #FBF7EF;
  --bg-elevated: #F3EDDF;
  --border: #E2DAC6;
  /* texte */
  --text-primary: #101828;
  --text-secondary: #22304a;
  --text-muted: #475366;
  /* sémantiques — déclinaisons PROFONDES (jamais les pastels du sombre) */
  --green-400: #047857;
  --emerald: #047857;
  --rose: #b91c1c;
  --blue: #1d4ed8;
  --orange: #c2410c;
  --cyan-400: #0e7490;
  /* verre/ombres : sur clair, le relief vient de l'ombre portée */
  --glass-bg: rgba(255, 255, 255, 0.55);
  --card-shadow: 0 2px 12px rgba(0, 0, 0, 0.35);
}

/* Tokens « toujours sombres » — identiques dans les 2 thèmes (héros, nav,
   footer, CTA/pricing). Les CSS de ces zones migreront vers ces noms en P1+. */
:root,
html[data-theme="light"] {
  --always-dark-bg: #0a0e18;
  --always-dark-card: #101828;
  --always-dark-border: #233049;
  --always-dark-ink: #e8eaf0;
  --gold-on-dark: #f0b429;
}

/* ============================================================================
   BADGES CANON — SOURCE UNIQUE (arbitrage Olivier 24/07 : un seul CSS, un seul
   badge Officiel + un seul badge Tendance IA, partout, tous sports).
   Les définitions locales (game_detail.css, styles inline) sont supprimées au
   fil des phases — celle-ci fait foi. Valeurs sombres = canon historique.
   ========================================================================== */
.pick-badge-official {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 6px 12px; border-radius: 20px;
  font-size: 10px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .04em;
  background: rgba(16, 185, 129, 0.10);
  border: 1px solid rgba(16, 185, 129, 0.25);
  color: #10b981;
  box-shadow: 0 0 16px rgba(16, 185, 129, 0.10);
}
.pick-badge-trend {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 6px 12px; border-radius: 20px;
  font-size: 10px; font-weight: 700; text-transform: uppercase;
  letter-spacing: .04em;
  background: rgba(200, 16, 46, 0.10);
  border: 1px solid rgba(200, 16, 46, 0.30);
  color: #fca5a5;
}
.pick-badge-official i, .pick-badge-trend i { width: 12px; height: 12px; }

html[data-theme="light"] .pick-badge-official {
  background: rgba(16, 185, 129, 0.14);
  border-color: rgba(4, 120, 87, 0.45);
  color: #047857;
  box-shadow: none;
}
html[data-theme="light"] .pick-badge-trend {
  background: rgba(200, 16, 46, 0.09);
  border-color: rgba(185, 28, 28, 0.45);
  color: #b91c1c;
}

/* ============================================================================
   ANTI FAUX-GRAS : Bebas Neue n'existe qu'en 400 — tout « gras » dessus est
   synthétisé par le navigateur et rend FLOU (retour Olivier 24/07, même fix
   que .mu-sec-h h2). Poids 400 forcé sur les titres display concernés.
   ========================================================================== */
.nav-mega-text strong,
.ai-title-text h2,
.mu .key-factors-title,
.mu .mlb-card-head .ttl { font-weight: 400; }

/* ============================================================================
   PONT P1 (TEMPORAIRE — cf PRD §3.1) : bascule en clair les couleurs
   sémantiques encore posées en style inline (4 961 occurrences mesurées).
   Chaque phase migre les inline de son périmètre vers des classes, puis ce
   bloc rétrécit jusqu'à disparaître.
   ========================================================================== */
html[data-theme="light"] :is(.mu,.glass-card,.pk-card,.pk-spotlight,.pk-offer-card,.cmb-builder,.cmb-combo,.cmbt-card,.tj,.pf-card,.pf-standings,.hv2-tbl,.hv2-star,.match-card,.feature-card,.faq-item,.vsec-card,.no-games,.no-games-rich,.league-standings,.division-box,.conference-box,.rw-card,.value-betting-cta,.ocmp,.mlb-card,.key-factors,.ai-card,.mu-card,.pk-faq-item,.cmb-modes,.cmb-slip) [style*="#4ade80" i] { color: #047857 !important; }
html[data-theme="light"] :is(.mu,.glass-card,.pk-card,.pk-spotlight,.pk-offer-card,.cmb-builder,.cmb-combo,.cmbt-card,.tj,.pf-card,.pf-standings,.hv2-tbl,.hv2-star,.match-card,.feature-card,.faq-item,.vsec-card,.no-games,.no-games-rich,.league-standings,.division-box,.conference-box,.rw-card,.value-betting-cta,.ocmp,.mlb-card,.key-factors,.ai-card,.mu-card,.pk-faq-item,.cmb-modes,.cmb-slip) [style*="#f87171" i] { color: #b91c1c !important; }
html[data-theme="light"] :is(.mu,.glass-card,.pk-card,.pk-spotlight,.pk-offer-card,.cmb-builder,.cmb-combo,.cmbt-card,.tj,.pf-card,.pf-standings,.hv2-tbl,.hv2-star,.match-card,.feature-card,.faq-item,.vsec-card,.no-games,.no-games-rich,.league-standings,.division-box,.conference-box,.rw-card,.value-betting-cta,.ocmp,.mlb-card,.key-factors,.ai-card,.mu-card,.pk-faq-item,.cmb-modes,.cmb-slip) [style*="#fb7185" i] { color: #b91c1c !important; }
html[data-theme="light"] :is(.mu,.glass-card,.pk-card,.pk-spotlight,.pk-offer-card,.cmb-builder,.cmb-combo,.cmbt-card,.tj,.pf-card,.pf-standings,.hv2-tbl,.hv2-star,.match-card,.feature-card,.faq-item,.vsec-card,.no-games,.no-games-rich,.league-standings,.division-box,.conference-box,.rw-card,.value-betting-cta,.ocmp,.mlb-card,.key-factors,.ai-card,.mu-card,.pk-faq-item,.cmb-modes,.cmb-slip) [style*="#60a5fa" i] { color: #1d4ed8 !important; }
html[data-theme="light"] :is(.mu,.glass-card,.pk-card,.pk-spotlight,.pk-offer-card,.cmb-builder,.cmb-combo,.cmbt-card,.tj,.pf-card,.pf-standings,.hv2-tbl,.hv2-star,.match-card,.feature-card,.faq-item,.vsec-card,.no-games,.no-games-rich,.league-standings,.division-box,.conference-box,.rw-card,.value-betting-cta,.ocmp,.mlb-card,.key-factors,.ai-card,.mu-card,.pk-faq-item,.cmb-modes,.cmb-slip) [style*="#fbbf24" i] { color: #a16207 !important; }
html[data-theme="light"] :is(.mu,.glass-card,.pk-card,.pk-spotlight,.pk-offer-card,.cmb-builder,.cmb-combo,.cmbt-card,.tj,.pf-card,.pf-standings,.hv2-tbl,.hv2-star,.match-card,.feature-card,.faq-item,.vsec-card,.no-games,.no-games-rich,.league-standings,.division-box,.conference-box,.rw-card,.value-betting-cta,.ocmp,.mlb-card,.key-factors,.ai-card,.mu-card,.pk-faq-item,.cmb-modes,.cmb-slip) [style*="#FFC73A" i] { color: #a16207 !important; }
html[data-theme="light"] :is(.mu,.glass-card,.pk-card,.pk-spotlight,.pk-offer-card,.cmb-builder,.cmb-combo,.cmbt-card,.tj,.pf-card,.pf-standings,.hv2-tbl,.hv2-star,.match-card,.feature-card,.faq-item,.vsec-card,.no-games,.no-games-rich,.league-standings,.division-box,.conference-box,.rw-card,.value-betting-cta,.ocmp,.mlb-card,.key-factors,.ai-card,.mu-card,.pk-faq-item,.cmb-modes,.cmb-slip) [style*="#FFD700" i] { color: #a16207 !important; }
html[data-theme="light"] :is(.mu,.glass-card,.pk-card,.pk-spotlight,.pk-offer-card,.cmb-builder,.cmb-combo,.cmbt-card,.tj,.pf-card,.pf-standings,.hv2-tbl,.hv2-star,.match-card,.feature-card,.faq-item,.vsec-card,.no-games,.no-games-rich,.league-standings,.division-box,.conference-box,.rw-card,.value-betting-cta,.ocmp,.mlb-card,.key-factors,.ai-card,.mu-card,.pk-faq-item,.cmb-modes,.cmb-slip) [style*="var(--gold-primary)" i] { color: #a16207 !important; }

/* ============================================================================
   TOGGLE lune/soleil (navbar + menu compte). Staff-only pendant le chantier
   (gabarit) ; le style vit ici pour être identique partout.
   ========================================================================== */
.theme-toggle {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px; border-radius: 10px;
  background: rgba(240, 180, 41, 0.10);
  border: 1px solid rgba(240, 180, 41, 0.45);
  color: var(--gold-on-dark); cursor: pointer;
  transition: background .15s ease, border-color .15s ease;
}
.theme-toggle:hover { background: rgba(240, 180, 41, 0.2); border-color: var(--gold-on-dark); }
.theme-toggle:focus-visible { outline: 2px solid var(--gold-on-dark); outline-offset: 2px; }
.theme-toggle .tt-sun { display: none; }
.theme-toggle .tt-moon { display: inline; }
html[data-theme="light"] .theme-toggle .tt-sun { display: inline; }
html[data-theme="light"] .theme-toggle .tt-moon { display: none; }

/* ============================================================================
   COMPARATEUR DE COTES (.ocmp) — refactor P1 des styles inline de
   components/odds_comparison.html (valeurs sombres = look historique).
   ========================================================================== */
.ocmp{margin:24px 0;background:linear-gradient(135deg,rgba(30,41,59,.95),rgba(15,23,42,.98));border:1px solid rgba(99,102,241,.25);border-radius:12px;padding:20px}
.ocmp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;flex-wrap:wrap;gap:10px}
.ocmp-title{font-size:16px;font-weight:700;color:#f1f5f9;margin:0;display:flex;align-items:center;gap:8px}
.ocmp-title svg{stroke:#818cf8}
.ocmp-head-right{display:flex;align-items:center;gap:12px}
.ocmp-updated{font-size:11px;color:#64748b;display:flex;align-items:center;gap:4px}
.ocmp-add{background:#fbbf24;color:#0b0d10;border:none;padding:6px 14px;font-size:12px;font-weight:700;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.ocmp-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.ocmp-table{width:100%;border-collapse:collapse;font-size:13px;min-width:360px}
.ocmp-table th{text-align:center;padding:10px 8px;color:#94a3b8;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;border-bottom:1px solid rgba(99,102,241,.2)}
.ocmp-table th.l{text-align:left;padding:10px 12px}
.ocmp-row{border-bottom:1px solid rgba(255,255,255,.05);transition:background .15s}
.ocmp-row:hover{background:rgba(99,102,241,.08)}
.ocmp-row--ref{opacity:.55}
.ocmp-table td.l{padding:9px 12px;white-space:nowrap;text-align:left}
.ocmp-book{font-weight:600;color:#e2e8f0}
.ocmp-book--ref{font-weight:400;color:#64748b}
.ocmp-ref-tag{font-size:10px}
.ocmp-val{text-align:center;padding:9px 8px;font-variant-numeric:tabular-nums;font-size:14px;color:#cbd5e1}
.ocmp-val--best{color:#4ade80;font-weight:700;text-shadow:0 0 8px rgba(74,222,128,.3)}
.ocmp-odd-btn{background:none;border:none;color:inherit;font:inherit;cursor:pointer;padding:0;font-weight:inherit}
.ocmp-line{font-size:10px;color:#64748b;display:block;line-height:1}
.ocmp-empty{color:#334155}
.ocmp-note{font-size:11px;color:#475569;margin:10px 0 0}
.ocmp-note-best{color:#4ade80;font-weight:600}
.ocmp-note-bk{color:#fbbf24}

html[data-theme="light"] .ocmp{background:var(--bg-card);border-color:var(--border);box-shadow:0 2px 12px rgba(0,0,0,.35)}
html[data-theme="light"] .ocmp-title{color:#101828}
html[data-theme="light"] .ocmp-title svg{stroke:#1d4ed8}
html[data-theme="light"] .ocmp-updated{color:#5b6472}
html[data-theme="light"] .ocmp-table th{color:#5b6472;border-bottom-color:var(--border)}
html[data-theme="light"] .ocmp-row{border-bottom-color:#EAE4D4}
html[data-theme="light"] .ocmp-row:hover{background:rgba(0,0,0,.04)}
html[data-theme="light"] .ocmp-book{color:#101828}
html[data-theme="light"] .ocmp-book--ref{color:#5b6472}
html[data-theme="light"] .ocmp-val{color:#22304a}
html[data-theme="light"] .ocmp-val--best{color:#047857;text-shadow:none;background:rgba(16,185,129,.08)}
html[data-theme="light"] .ocmp-empty{color:#A69C82}
html[data-theme="light"] .ocmp-note{color:#5b6472}
html[data-theme="light"] .ocmp-note-best{color:#047857}
html[data-theme="light"] .ocmp-note-bk{color:#8a5a00}

/* ============================================================================
   FAMILLE .mu (match_unified.css) — jeu clair des tokens --mu-*.
   Le HÉROS reste sombre : ré-épinglage complet sur .mu-hero.
   ========================================================================== */
html[data-theme="light"] .mu{
  --mu-card:#FBF7EF; --mu-card-2:#F3EDDF;
  --mu-hair:rgba(16,24,40,.16); --mu-hair-2:rgba(16,24,40,.09);
  --mu-ink:#101828; --mu-ink-2:rgba(16,24,40,.9); --mu-ink-3:rgba(16,24,40,.74); --mu-ink-4:rgba(16,24,40,.58);
  --mu-green:#047857; --mu-emerald:#047857; --mu-green-soft:rgba(4,120,87,.12);
  --mu-red:#b91c1c; --mu-blue:#1d4ed8;
  --mu-gold:#C98A1E; --mu-gold-2:#a16207; --mu-gold-deep:#8a5a00;
  --mu-gold-soft:rgba(161,98,7,.12); --mu-gold-line:rgba(161,98,7,.35);
  --mu-shadow:0 2px 12px rgba(0,0,0,.30);
}
html[data-theme="light"] .mu .mu-hero{
  --mu-card:#131A25; --mu-card-2:#18202D;
  --mu-hair:rgba(255,255,255,.08); --mu-hair-2:rgba(255,255,255,.045);
  --mu-ink:#F4F6FA; --mu-ink-2:rgba(233,238,247,.82); --mu-ink-3:rgba(233,238,247,.56); --mu-ink-4:rgba(233,238,247,.36);
  --mu-green:#3FD27E; --mu-green-soft:rgba(63,210,126,.13);
  --mu-red:#F0524F; --mu-blue:#5B8DEF;
  --mu-gold:#F3B73B; --mu-gold-2:#FFCB55; --mu-gold-soft:rgba(243,183,59,.13);
}

/* ============================================================================
   ANALYSE IA (.ai-card, game_detail.css) — la card du produit, en clair.
   ========================================================================== */
html[data-theme="light"] .ai-card{background:var(--bg-card);border-color:rgba(8,145,178,.35);box-shadow:0 2px 12px rgba(0,0,0,.30)}
html[data-theme="light"] .ai-analysis-content{border-top-color:rgba(16,24,40,.14)}

/* Fixes P1 (screenshot 24/07) : textes hérités du body sombre dans les cards
   claires + tally H2H sans fond. */
html[data-theme="light"] .ai-card{color:#101828}
html[data-theme="light"] .ai-card h2,
html[data-theme="light"] .ai-card .ai-title-text h2{color:#101828}
html[data-theme="light"] .mu .mu-h2h-tally{background:var(--mu-card);border:1px solid var(--mu-hair);border-radius:14px;padding:14px 10px;box-shadow:var(--mu-shadow)}

/* ============================================================================
   LISIBILITÉ CLAIR — retours Olivier 24/07 (page match MLB, passe 4) :
   « du noir, pas du gris » sur le beige.
   ========================================================================== */
/* Cartes pronostic (mu_preds) : le pick et les valeurs héritaient du blanc du body */
html[data-theme="light"] .mu .mu-vb-pick{color:var(--mu-ink)}
html[data-theme="light"] .mu .mu-vb-cell .v{color:var(--mu-ink)}
html[data-theme="light"] .mu .mu-vb-cell .k{color:#475366}
html[data-theme="light"] .mu .mu-vb-scale-ends{color:#4a5568}
html[data-theme="light"] .mu .mu-vb-conf-top .k{color:#475366}
/* KPI strip de l'analyse : tuiles sombres translucides → tuiles papier */
html[data-theme="light"] .mu .ai-kpi-tile{background:#fdfbf4;border-color:var(--border)}
html[data-theme="light"] .mu .ai-kpi-label{color:#475366}
html[data-theme="light"] .mu .ai-kpi-sub{color:#475366}
html[data-theme="light"] .mu .ai-kpi-value{color:#101828}
/* Texte de l'analyse : NOIR (le produit se lit comme un journal) */
html[data-theme="light"] .ai-analysis-content :is(p,li,em,b,strong,span:not([style])){color:#101828}
html[data-theme="light"] .ai-analysis-content p{color:#101828}
/* Comparateur : Pinnacle (réf.) et lien 1xBet lisibles */
html[data-theme="light"] .ocmp-row--ref{opacity:.85}
html[data-theme="light"] .ocmp-table td.l a{color:#101828 !important}
/* Confrontations : noms d'équipes du tally en noir gras, dates H2H lisibles */
html[data-theme="light"] .mu .mu-h2h-tally .l{color:#101828;font-weight:700;font-size:13px}
html[data-theme="light"] .mu .mu-h2h-row .date{color:rgba(16,24,40,.7)}
/* Forme & stats : en-têtes équipes plus nets + séparation */
html[data-theme="light"] .mu .mlb-recent-h{color:#101828;font-size:13px;border-bottom:1.5px solid var(--border);padding-bottom:6px}
/* Tableaux données : cellules en encre foncée (Starts, %, IP, K…) */
html[data-theme="light"] .mu .mlb-tbl td{color:#22304a}

/* ============================================================================
   PASSE 5 (retours Olivier) — cases noires, encres inline blanches, Pinnacle.
   ========================================================================== */
/* Cases des cartes pronostic + chips : --mu-bg-1 manquait au jeu clair */
html[data-theme="light"] .mu{--mu-bg-1:#F3EDDF}
html[data-theme="light"] .mu .mu-hero{--mu-bg-1:#0E131C}

/* Pont encres claires INLINE (format_analysis, affiliate_link, etc.) —
   scopé aux surfaces claires pour ne pas toucher héros/nav/CTA sombres. */
html[data-theme="light"] .mu [style*="color: #fff" i],
html[data-theme="light"] .mu [style*="color:#fff" i],
html[data-theme="light"] .mu [style*="color: #FFF" i] { color:#101828 !important }
html[data-theme="light"] .mu [style*="#e2e8f0" i] { color:#101828 !important }
html[data-theme="light"] .mu [style*="#f1f5f9" i] { color:#101828 !important }
html[data-theme="light"] .mu [style*="#cbd5e1" i] { color:#101828 !important }
html[data-theme="light"] .mu [style*="#94a3b8" i] { color:#475366 !important }
html[data-theme="light"] .mu [style*="#9ca3af" i] { color:#475366 !important }
html[data-theme="light"] .mu [style*="#34d399" i] { color:#047857 !important }

/* Panneaux internes de l'analyse (fond noir translucide → papier) */
html[data-theme="light"] .ai-card [style*="background: rgba(0,0,0,0.2)" i]{background:#F3EDDF !important;border-color:var(--border) !important}

/* Comparateur : Pinnacle (réf.) pleinement lisible en clair */
html[data-theme="light"] .ocmp-row--ref{opacity:1}
html[data-theme="light"] .ocmp-book--ref{color:#475366}

/* Tailles : tally confrontations + en-têtes équipes forme */
html[data-theme="light"] .mu .mu-h2h-tally .l{font-size:16px}
html[data-theme="light"] .mu .mlb-recent-h{font-size:14px}

/* Passe 6 — verdict ProbWin + analyse en noir total (retours Olivier) */
html[data-theme="light"] .mu [style*="#f3f4f6" i] { color:#101828 !important }
/* L'encadré verdict doit RESSORTIR sur le papier : fond doré soutenu + liseré ocre */
html[data-theme="light"] .ai-card [style*="border-left: 4px solid #fbbf24" i]{
  background:#F6EBCC !important;
  border-color:rgba(161,98,7,.45) !important;
  border-left:4px solid #a16207 !important;
  box-shadow:0 1px 6px rgba(0,0,0,.12);
}
/* Analyse : TOUT le corps de texte en noir (divs et texte nu compris) */
html[data-theme="light"] .ai-analysis-content,
html[data-theme="light"] .ai-analysis-content div{color:#101828}
html[data-theme="light"] .mu [style*="#a78bfa" i] { color:#6d28d9 !important }

/* ============================================================================
   PASSE 7 — critique finale validée par Olivier (24/07) : fill confiance,
   H2H fusionnée, zébrage comparateur, contexte SEO papier, chips héros.
   ========================================================================== */
/* Barre de confiance : remplissage doré jusqu'au curseur (2 thèmes) */
.mu .mu-vb-bar{overflow:hidden}
.mu .mu-vb-bar>.mu-vb-fill{position:absolute;left:0;top:0;bottom:0;border-radius:100px;background:linear-gradient(90deg,rgba(243,183,59,.30),#F3B73B)}
.mu .mu-vb-bar>.mu-vb-mark{z-index:1}
html[data-theme="light"] .mu .mu-vb-bar>.mu-vb-fill{background:linear-gradient(90deg,#c78f14,#a16207)}
html[data-theme="light"] .mu .mu-vb-bar>.mu-vb-mark{background:#101828;box-shadow:0 0 0 3px rgba(251,247,239,.95)}

/* Confrontations directes fusionnées : compteurs + barre de ratio */
.mu .mu-h2h-merged{display:flex;align-items:center;gap:16px;margin-bottom:16px}
.mu .mu-h2h-merged .side{display:flex;align-items:baseline;gap:9px}
.mu .mu-h2h-merged .n{font-family:var(--font-display,'Bebas Neue',sans-serif);font-weight:400;font-size:30px;line-height:1;color:var(--mu-ink)}
.mu .mu-h2h-merged .l{font-size:13px;font-weight:700;letter-spacing:.03em;color:var(--mu-ink-2)}
.mu .mu-h2h-merged .ratio{flex:1;display:flex;height:9px;border-radius:5px;overflow:hidden;background:var(--mu-hair-2);gap:2px}
.mu .mu-h2h-merged .seg{display:block;min-width:0}
.mu .mu-h2h-merged .seg.away{background:var(--mu-blue)}
.mu .mu-h2h-merged .seg.home{background:var(--mu-emerald)}
.mu .mu-h2h-merged .side.away .n{color:var(--mu-blue)}
.mu .mu-h2h-merged .side.home .n{color:var(--mu-emerald)}
@media(max-width:560px){.mu .mu-h2h-merged{gap:10px}.mu .mu-h2h-merged .n{font-size:24px}}

/* Comparateur : zébrage léger en clair (comme les tableaux de données) */
html[data-theme="light"] .ocmp-table tbody tr:nth-child(even) td{background:rgba(0,0,0,.03)}
html[data-theme="light"] .ocmp-table tbody tr:nth-child(even) td.ocmp-val--best{background:rgba(16,185,129,.10)}

/* Contexte SEO (match_seo_context, inline sombre) : papier en thème clair */
html[data-theme="light"] .match-seo-context{background:var(--bg-card) !important;border-color:var(--border) !important;color:#101828 !important}
html[data-theme="light"] .match-seo-context h2{color:#101828 !important}
html[data-theme="light"] .match-seo-context [style*="#FFC73A" i]{color:#8a5a00 !important}
html[data-theme="light"] .match-seo-context [style*="#94A3B8" i]{color:#475366 !important}
html[data-theme="light"] .match-seo-context a{color:#8a5a00 !important}

/* Héros : chips CONFIRMÉ alignées sur l'émeraude canon (moins fluo),
   compte à rebours en doré (identique dans les 2 thèmes — zone toujours sombre) */
.mu .mlb-sp .ok{background:rgba(16,185,129,.16);color:#10b981}
.mu .game-countdown{color:#F3B73B !important;font-weight:600}

/* ============================================================================
   P2 — RÉ-ÉPINGLAGE HÉROS pour le pont inline : le héros est sombre dans les
   2 thèmes, ses couleurs inline doivent RESTER en version pastel/claire.
   (spécificité (0,3,1) > pont (0,2,1) → gagne)
   ========================================================================== */
html[data-theme="light"] .mu .mu-hero [style*="#4ade80" i] { color: #4ade80 !important; }
html[data-theme="light"] .mu .mu-hero [style*="#f87171" i] { color: #f87171 !important; }
html[data-theme="light"] .mu .mu-hero [style*="#fb7185" i] { color: #fb7185 !important; }
html[data-theme="light"] .mu .mu-hero [style*="#60a5fa" i] { color: #60a5fa !important; }
html[data-theme="light"] .mu .mu-hero [style*="#fbbf24" i] { color: #fbbf24 !important; }
html[data-theme="light"] .mu .mu-hero [style*="color:#fff" i],
html[data-theme="light"] .mu .mu-hero [style*="color: #fff" i] { color: #F4F6FA !important; }
html[data-theme="light"] .mu .mu-hero [style*="#e2e8f0" i] { color: #e2e8f0 !important; }
html[data-theme="light"] .mu .mu-hero [style*="#94a3b8" i] { color: #94a3b8 !important; }
html[data-theme="light"] .mu .mu-hero [style*="#cbd5e1" i] { color: #cbd5e1 !important; }

/* P2 — variantes d'icônes facteurs des autres sports (aplats saturés en clair) */
html[data-theme="light"] .mu .factor-icon.emerald{background:#047857;color:#eafff5}
html[data-theme="light"] .mu .factor-icon.gold{background:#a16207;color:#fdf6e3}
html[data-theme="light"] .mu .factor-icon.red{background:#b91c1c;color:#fff1f2}
html[data-theme="light"] .mu .factor-icon.violet{background:#6d28d9;color:#f5f3ff}
html[data-theme="light"] .mu .factor-icon.purple{background:#6d28d9;color:#f5f3ff}
/* Tennis : barres de comparaison lisibles en clair */
html[data-theme="light"] .mu .comparison-bar-track{background:#ddd6c3}
html[data-theme="light"] .mu .factor-icon.indigo{background:#3730a3;color:#eef2ff}

/* ============================================================================
   P2 — comparaison d'équipes (team_comparison : var(--text-white)) + FAQ match
   ========================================================================== */
html[data-theme="light"] { --text-white: #101828; }

.mfaq-item{border-bottom:1px solid var(--mu-hair-2, rgba(255,255,255,.05))}
.mfaq-item:last-child{border-bottom:none}
.mfaq-item summary{cursor:pointer;padding:14px 4px;font-size:14.5px;font-weight:600;color:var(--mu-ink, var(--text-primary));list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px}
.mfaq-item summary::-webkit-details-marker{display:none}
.mfaq-item summary::after{content:"+";font-size:18px;color:var(--mu-gold,#F3B73B);flex:none;transition:transform .15s}
.mfaq-item[open] summary::after{transform:rotate(45deg)}
.mfaq-item p{margin:0 4px 14px;font-size:13.5px;line-height:1.65;color:var(--mu-ink-2, var(--text-secondary));max-width:75ch}

/* P2 — comparaison d'équipes : valeurs et titre lisibles en clair */
html[data-theme="light"] .stat-value{color:#22304a}
html[data-theme="light"] .stat-value.advantage{color:#a16207;font-weight:700}
html[data-theme="light"] .comparison-title{color:#8a5a00}
html[data-theme="light"] .comparison-subtitle,
html[data-theme="light"] .stat-label{color:#475366}
/* game_detail.css force .stat-value en #F9FAFB !important → contre-override */
html[data-theme="light"] .stat-value{color:#22304a !important}
html[data-theme="light"] .stat-value.advantage{color:#a16207 !important}
/* Filet générique : tout texte NU dans une card claire hérite de l'encre
   (sinon il hérite du body sombre → pâle sur crème). */
html[data-theme="light"] .mu :is(.mu-card,.mlb-card,.key-factors,.ai-card,.factor-box,.mu-pred-card){color:var(--mu-ink,#101828)}

/* ============================================================================
   P2 passe 3 — retours Olivier NHL/tennis (24/07 soir)
   ========================================================================== */
/* NHL : avertissement gardiens (jaune sur beige) + statuts gardien */
html[data-theme="light"] .mu .goalies-warning{background:rgba(161,98,7,.10);border-color:rgba(161,98,7,.35);color:#7c4a03}
html[data-theme="light"] .mu .goalies-warning i{color:#a16207}
html[data-theme="light"] .mu .goalies-warning span{color:#7c4a03}
html[data-theme="light"] .mu .goalie-status.tbd{color:#475366}
html[data-theme="light"] .mu .goalies-icon{background:#3730a3;color:#eef2ff}
html[data-theme="light"] .mu .goalies-title{color:#101828}

/* Badge PRO (ai-new-badge, partagé toutes analyses) lisible en clair */
html[data-theme="light"] .ai-new-badge{background:rgba(14,116,144,.12);border:1px solid rgba(14,116,144,.4);color:#0e7490}

/* Tennis : bleus foncés en clair (barres joueur 1, résumé H2H, icône P1) */
html[data-theme="light"] .mu .comparison-bar-fill.p1{background:linear-gradient(90deg,#1d4ed8,#1e40af)}
html[data-theme="light"] .mu .comparison-bar-fill.p2{background:linear-gradient(90deg,#be123c,#9f1239)}
html[data-theme="light"] .mu .tennis-h2h-summary{background:rgba(29,78,216,.08);border-color:rgba(29,78,216,.3);color:#1d4ed8}
html[data-theme="light"] .mu .form-header .player-icon.p1{background:#1d4ed8;color:#eef4ff}
html[data-theme="light"] .mu .form-header .player-icon.p2{background:#be123c;color:#fff1f2}
/* Forme récente : noms des joueurs (texte nu du form-header) en encre */
html[data-theme="light"] .mu .form-header{color:#101828;font-weight:600}
html[data-theme="light"] .mu .form-box{color:#101828}

/* P2 passe 4 — tennis : valeurs de comparaison foncées ; badge PRO en chip pleine */
html[data-theme="light"] .mu .comparison-value.p1{color:#1d4ed8;font-weight:600}
html[data-theme="light"] .mu .comparison-value.p2{color:#be123c;font-weight:600}
html[data-theme="light"] .ai-new-badge{background:#0e7490;border:none;color:#fff}

/* ============================================================================
   P2 — PASSE SOCCER (page match) — 24/07 soir
   ========================================================================== */
/* Libellé du pick (« Notre lecture ») : #f4f6f9 en dur dans le gabarit → encre */
html[data-theme="light"] .cr-call{color:#101828}
html[data-theme="light"] .ct-soon-tx{color:#475366}
html[data-theme="light"] .ct-clv{color:#5b6472}
html[data-theme="light"] .ct-head span{color:#475366}

/* Badges soccer ALIGNÉS SUR LE CANON (règle : un seul style Officiel/Tendance,
   tous sports, 2 thèmes) — écrase les styles locaux du gabarit (theme.css = dernier) */
.badge-off-mini{
  background:rgba(16,185,129,.10) !important;
  border:1px solid rgba(16,185,129,.25) !important;
  color:#10b981 !important;
  box-shadow:0 0 16px rgba(16,185,129,.10);
}
.badge-prediction{
  background:rgba(200,16,46,.10) !important;
  border:1px solid rgba(200,16,46,.30) !important;
  color:#fca5a5 !important;
}
html[data-theme="light"] .badge-off-mini{
  background:rgba(16,185,129,.14) !important;
  border-color:rgba(4,120,87,.45) !important;
  color:#047857 !important; box-shadow:none;
}
html[data-theme="light"] .badge-prediction{
  background:rgba(200,16,46,.09) !important;
  border-color:rgba(185,28,28,.45) !important;
  color:#b91c1c !important;
}
html[data-theme="light"] .badge-soon{background:rgba(71,83,102,.10);color:#475366}

/* P2 soccer passe 2 (mesures Playwright 24/07 nuit) : gris/beige du bloc pronostics */
html[data-theme="light"] .cr-fam{color:#334155}
html[data-theme="light"] .cr-fam .ic{color:#334155}
html[data-theme="light"] .ct-mkt{color:#475366}
html[data-theme="light"] .cr-odd{background:rgba(16,24,40,.06);color:#22304a}
html[data-theme="light"] .cr-lock{color:#8a5a00}
/* encres inline du gabarit soccer (pont) */
html[data-theme="light"] .mu [style*="#8f9aab" i]{color:#475366 !important}
html[data-theme="light"] .mu [style*="#7d8696" i]{color:#475366 !important}
html[data-theme="light"] .mu [style*="#a6b0bf" i]{color:#334155 !important}
html[data-theme="light"] .mu [style*="#b9c2d0" i]{color:#22304a !important}
html[data-theme="light"] .mu [style*="#f4f6f9" i]{color:#101828 !important}
/* soccer : probas vertes (classes du gabarit) en émeraude profond sur clair */
html[data-theme="light"] .ct-proba b{color:#047857}
html[data-theme="light"] .ct-bar span{background:linear-gradient(90deg,#047857,#059669)}
html[data-theme="light"] .ct-mkt.up{color:#047857}

/* ============================================================================
   P3 — HUB SOCCER (24/07 nuit) : cartes de matchs, chips ligues, FAQ en papier.
   Héros / countdown / CTA final restent SOMBRES (grammaire). Technique :
   ré-épinglage LOCAL des tokens app.css consommés par les cards.
   ========================================================================== */
html[data-theme="light"] :is(.match-card, .faq-item) {
  --slate-900: #FBF7EF; --slate-800: #F3EDDF;
  --text: #101828; --muted: #475366; --white: #101828;
  --border: #E2DAC6;
  background-color: #FBF7EF;
  border-color: #E2DAC6;
  color: #101828;
  box-shadow: 0 2px 10px rgba(0,0,0,.28);
}
html[data-theme="light"] .league-chips {
  background: #F3EDDF; border: 1px solid #E2DAC6;
}
html[data-theme="light"] .league-chips > * { --text: #101828; --muted: #475366; }
/* verts du hub : le vert marque #00A86B tient sur crème en ACCENT, mais le
   texte vert passe en émeraude profond */
html[data-theme="light"] :is(.match-card, .faq-item) .pick-chip {
  background: rgba(4, 120, 87, .10); border-color: rgba(4, 120, 87, .35); color: #047857;
}
html[data-theme="light"] :is(.match-card, .faq-item) [style*="#4ade80" i] { color: #047857 !important; }
html[data-theme="light"] :is(.match-card, .faq-item) [style*="#94a3b8" i],
html[data-theme="light"] :is(.match-card, .faq-item) [style*="#94A3B8" i] { color: #475366 !important; }
html[data-theme="light"] :is(.match-card, .faq-item) [style*="#e2e8f0" i] { color: #101828 !important; }
html[data-theme="light"] :is(.match-card, .faq-item) [style*="color:#fff" i],
html[data-theme="light"] :is(.match-card, .faq-item) [style*="color: #fff" i] { color: #101828 !important; }

/* P3 hub soccer v8.2 (sports/soccer.html) — tableau des matchs .hv2-* + FAQ
   en papier ; héros/countdown/CTA/league-tabs restent sombres (grammaire). */
html[data-theme="light"] .hv2-tbl{background:#FBF7EF;border-color:#E2DAC6;box-shadow:0 2px 10px rgba(0,0,0,.28)}
html[data-theme="light"] .hv2-row{border-top-color:#EAE4D4;color:#101828}
html[data-theme="light"] .hv2-row:hover{background:rgba(0,0,0,.035)}
html[data-theme="light"] .hv2-tbl [style*="#e2e8f0" i],
html[data-theme="light"] .hv2-tbl [style*="#f1f5f9" i]{color:#101828 !important}
html[data-theme="light"] .hv2-tbl [style*="#94a3b8" i],
html[data-theme="light"] .hv2-tbl [style*="#94A3B8" i],
html[data-theme="light"] .hv2-tbl [style*="#6b7280" i]{color:#475366 !important}
html[data-theme="light"] .hv2-tbl [style*="#4ade80" i]{color:#047857 !important}
html[data-theme="light"] .hv2-chip{color:#101828}
html[data-theme="light"] .hv2-pill{color:#22304a}
html[data-theme="light"] .match-date-header{color:#101828}
html[data-theme="light"] .match-date-header [style*="#94a3b8" i]{color:#475366 !important}
/* hv2-row : classes internes (heure .t, ligue .lg, vs, lecture .call, .go, .lock) */
html[data-theme="light"] .hv2-row :is(.t,.lg,.vs,.call){color:#475366}
html[data-theme="light"] .hv2-row .call{color:#22304a}
html[data-theme="light"] .hv2-row .go{color:#047857}
html[data-theme="light"] .hv2-row .lock{color:#8a5a00}
html[data-theme="light"] .hv2-row span:not([class]){color:#22304a}
html[data-theme="light"] .hv2-row b{color:#047857}
html[data-theme="light"] .hv2-row small{color:#475366}
html[data-theme="light"] .hv2-row [style*="var(--muted" i]{color:#475366 !important}
/* hub soccer : cards de contenu (features, vitrine) en papier */
html[data-theme="light"] :is(.feature-card,.vsec-card){
  background:#FBF7EF !important; border-color:#E2DAC6 !important; color:#101828;
  box-shadow:0 2px 10px rgba(0,0,0,.28);
}
html[data-theme="light"] :is(.feature-card,.vsec-card) *{color:inherit}
html[data-theme="light"] :is(.feature-card,.vsec-card) :is(small,[class*="muted"],[class*="sub"],p){color:#475366}
html[data-theme="light"] :is(.feature-card,.vsec-card) [style*="#94a3b8" i],
html[data-theme="light"] :is(.feature-card,.vsec-card) [style*="#94A3B8" i]{color:#475366 !important}
html[data-theme="light"] :is(.feature-card,.vsec-card) [style*="#4ade80" i],
html[data-theme="light"] :is(.feature-card,.vsec-card) [style*="#22c55e" i],
html[data-theme="light"] :is(.feature-card,.vsec-card) [style*="#00A86B" i]{color:#047857 !important}
/* hub MLB : dorés/verts pastel dans les match-cards → ocre/émeraude */
html[data-theme="light"] .match-card [style*="#FFC73A" i],
html[data-theme="light"] .match-card [style*="var(--gold" i]{color:#8a5a00 !important}
html[data-theme="light"] .match-card [style*="#4ade80" i]{color:#047857 !important}
html[data-theme="light"] .match-card :is(.match-time,.pitchers-row){color:#475366}
/* hub MLB : badges des cards alignés sur le CANON (Tendance IA rouge /
   Pick officiel émeraude) + teaser « Analyse IA disponible » en ocre lisible */
.badge-analysis{
  background:rgba(200,16,46,.10) !important;
  border:1px solid rgba(200,16,46,.30) !important;
  color:#fca5a5 !important;
}
html[data-theme="light"] .badge-analysis{
  background:rgba(200,16,46,.09) !important;
  border-color:rgba(185,28,28,.45) !important;
  color:#b91c1c !important;
}
html[data-theme="light"] .badge-official{
  background:rgba(16,185,129,.14) !important;
  border:1px solid rgba(4,120,87,.45) !important;
  color:#047857 !important;
}
html[data-theme="light"] .match-card .teaser-text{color:#8a5a00}
/* hub soccer : chips championnats (au-dessus de la table) en papier —
   mon override précédent mettait l'encre noire sur fond resté sombre */
html[data-theme="light"] .hv2-chip{background:#F3EDDF;border:1px solid #E2DAC6;color:#101828}
html[data-theme="light"] .hv2-chip .n{color:#22304a}
html[data-theme="light"] .hv2-chip .c{color:#475366}
html[data-theme="light"] .hv2-chip.on{background:#00A86B;border-color:#00915c}
html[data-theme="light"] .hv2-chip.on :is(.n,.c){color:#fff}
/* hub soccer : carte vedette « À l'affiche » (.hv2-star) en papier */
html[data-theme="light"] .hv2-star{background:#FBF7EF !important;border-color:#E2DAC6 !important;color:#101828;box-shadow:0 2px 10px rgba(0,0,0,.28)}
html[data-theme="light"] .hv2-star [style*="#94a3b8" i],
html[data-theme="light"] .hv2-star [style*="#94A3B8" i],
html[data-theme="light"] .hv2-star [style*="#e2e8f0" i]{color:#475366 !important}
html[data-theme="light"] .hv2-star small{color:#475366}
html[data-theme="light"] .hv2-star .hv2-pill{background:#F3EDDF;border:1px solid #E2DAC6}
/* hub MLB : classements (league-standings/division-box/standings-table) en papier */
html[data-theme="light"] .league-standings{background:#FBF7EF !important;border-color:#E2DAC6 !important;color:#101828}
html[data-theme="light"] .division-box{background:#F3EDDF !important;border-color:#E2DAC6 !important}
html[data-theme="light"] .division-header{color:#101828}
html[data-theme="light"] .standings-table th{color:#475366;border-color:#E7E0CD}
html[data-theme="light"] .standings-table td{color:#22304a;border-color:#EAE4D4}
html[data-theme="light"] .standings-table td:first-child, 
html[data-theme="light"] .standings-table .team-name{color:#101828;font-weight:600}
html[data-theme="light"] .league-standings [style*="#94a3b8" i],
html[data-theme="light"] .league-standings [style*="#94A3B8" i]{color:#475366 !important}
html[data-theme="light"] .league-standings [style*="#e2e8f0" i]{color:#101828 !important}
/* hub soccer : carte vedette — tag jaune → ocre, meta grise → ardoise */
html[data-theme="light"] .hv2-star .tag{color:#8a5a00}
html[data-theme="light"] .hv2-star .meta{color:#475366}
html[data-theme="light"] .hv2-star .vs{color:#475366}
/* chips « Dernières tendances gagnantes » (inline, sans classe, sur fond page
   sombre) : le pont les fonçait → on les passe en papier, vert profond lisible */
html[data-theme="light"] .soccer-section [style*="4ade80" i][style*="background" i]{
  background:#F3EDDF !important;border:1px solid #E2DAC6 !important;color:#047857 !important;
}
/* hub MLB : titres de ligues des classements (jaune → ocre) */
html[data-theme="light"] .league-title{color:#8a5a00}
/* tendances gagnantes : noms d'équipes (span gris inline dans la chip) → encre */
html[data-theme="light"] .soccer-section [style*="4ade80" i][style*="background" i] [style*="94a3b8" i],
html[data-theme="light"] .soccer-section [style*="4ade80" i][style*="background" i] [style*="94A3B8" i]{color:#101828 !important}
html[data-theme="light"] .soccer-section [style*="4ade80" i][style*="background" i] [style*="var(--muted" i]{color:#101828 !important}

/* ============================================================================
   P3 — /picks/ (famille .pk-* + gamesrail) en papier
   ========================================================================== */
html[data-theme="light"] :is(.pk-card,.pk-spotlight,.pk-offer-card){
  background:#FBF7EF !important;border-color:#E2DAC6 !important;color:#101828;
  box-shadow:0 2px 10px rgba(0,0,0,.28);
}
html[data-theme="light"] .pk-pick-label{color:#101828}
html[data-theme="light"] :is(.pk-metric-lbl,.at,.pk-pick-market){color:#475366}
html[data-theme="light"] :is(.pk-card-teaser,.pk-metric-val.dim){color:#5b6472}
html[data-theme="light"] :is(.pk-metric-val,.pk-card-locktag,.pk-card-cta){color:#8a5a00}
html[data-theme="light"] .pk-card [style*="#94a3b8" i],
html[data-theme="light"] .pk-card [style*="#e2e8f0" i]{color:#475366 !important}
/* Cartes d'offres pricing /picks/ (picks_today.html, --pk-text non redéfini en clair) */
html[data-theme="light"] .pk-offer-name,
html[data-theme="light"] .pk-offer-price{color:#101828}
html[data-theme="light"] .pk-offer-card.is-feat .pk-offer-price{color:#8a5a00}
html[data-theme="light"] .pk-offer-price small,
html[data-theme="light"] .pk-offer-note{color:#475366}
html[data-theme="light"] .pk-offer-btn:not(.is-feat):not(.is-momo){color:#8a5a00;border-color:#E2DAC6;background:rgba(0,0,0,.03)}
/* le rail de matchs (gamesrail) reste SOMBRE : bandeau de navigation collé
   au header sombre — cohérent avec la grammaire (zone de nav) */

/* /picks/ passe 2 (scan complet feuilles — retour Olivier) */
html[data-theme="light"] :is(.pk-feat-match,.pk-teams,.pk-spotlight-title){color:#101828 !important}
html[data-theme="light"] :is(.pk-spotlight-sub,.pk-feat-teaser,.pk-feat-trend){color:#475366 !important}
html[data-theme="light"] :is(.pk-feat-official,.pk-feat-conf-val,.pk-feat-cta){color:#8a5a00 !important}
/* FAQ de /picks/ : questions encre, réponses ardoise, liens ocre */
html[data-theme="light"] .pk-faq-title{color:#101828}
html[data-theme="light"] [class*="pk-faq"] summary,
html[data-theme="light"] [class*="pk-faq"] :is(h3,h4,b,strong){color:#101828}
html[data-theme="light"] [class*="pk-faq"] :is(p,li,span,div){color:#334155}
html[data-theme="light"] [class*="pk-faq"] a{color:#8a5a00}
html[data-theme="light"] .pk-faq-item{background:#FBF7EF !important;border-color:#E2DAC6 !important}

/* Hub TENNIS — textes internes des cartes de matchs (scan complet 24/07) */
html[data-theme="light"] .match-card :is(.nm-full,.nm-short){color:#101828 !important}
html[data-theme="light"] .match-card .trow-time{color:#101828}
html[data-theme="light"] .match-card :is(.cd-block,.cd-unit,.cd-separator){color:#475366}
html[data-theme="light"] .match-card :is(.cd-value,.trow-rank){color:#1d4ed8}
html[data-theme="light"] .match-card [style*="#cbd5e1" i],
html[data-theme="light"] .match-card [style*="#CBD5E1" i]{color:#22304a !important}
/* filets génériques cartes hub (tous sports) : ELO/valeurs nues */
html[data-theme="light"] .match-card span:not([class]):not([style]){color:#22304a}
html[data-theme="light"] .match-card :is(.trow-mkt,.ml-lbl){color:#475366}
html[data-theme="light"] .match-card .trow-go{color:#8a5a00}
html[data-theme="light"] .match-card div:not([class]):not([style]),
html[data-theme="light"] .match-card b:not([class]):not([style]){color:#22304a}
html[data-theme="light"] .pk-faq-item{color:#101828}
/* Hub tennis — scan TOUTES les cartes (variantes live/has-picks) */
html[data-theme="light"] .match-card :is(.trow-p,.trow-p1,.trow-p2,.trow-mid,.trow-cta){color:#101828}
html[data-theme="light"] .match-card .trow-badge.pred{color:#1d4ed8;background:rgba(29,78,216,.10);border-color:rgba(29,78,216,.35)}
html[data-theme="light"] .match-card :is(.trow-cd.countdown-live,.live-badge){color:#b91c1c;background:rgba(185,28,28,.10)}
/* confiance/% (zone droite) : couvrir les variantes conf */
html[data-theme="light"] .match-card [class*="conf"]{color:#22304a}
html[data-theme="light"] .match-card [class*="conf"] b{color:#101828}

/* ============================================================================
   P3 — JOURNAUX DE TENDANCES (.tj-*, partagé mlb/soccer) : tables en papier
   sur page sombre (même rythme que les hubs), chips filtres papier.
   ========================================================================== */
html[data-theme="light"] .tj__tbl{background:#FBF7EF !important;border:1px solid #E2DAC6 !important;border-radius:14px;color:#101828;box-shadow:0 2px 10px rgba(0,0,0,.28)}
html[data-theme="light"] .tj__tbl :is(th,.mut,.sc){color:#475366 !important}
html[data-theme="light"] .tj__tbl td{color:#22304a;border-color:#EAE4D4}
html[data-theme="light"] .tj__tbl .who{color:#101828}
html[data-theme="light"] .tj__tbl [style*="#4ade80" i]{color:#047857 !important}
html[data-theme="light"] .tj__tbl [style*="#f87171" i],
html[data-theme="light"] .tj__tbl [style*="#fb7185" i]{color:#b91c1c !important}
html[data-theme="light"] .tj-chip{background:#F3EDDF;border:1px solid #E2DAC6;color:#101828}
html[data-theme="light"] .tj-chip .n{color:#475366}
html[data-theme="light"] .tj-chip.on{background:#00A86B;border-color:#00915c;color:#fff}
html[data-theme="light"] .tj-chip.on .n{color:rgba(255,255,255,.85)}
html[data-theme="light"] .tj__tbl .tj-eng{color:#1d4ed8;background:rgba(29,78,216,.08)}
html[data-theme="light"] .tj__tbl .tj-res.win{color:#047857 !important}
html[data-theme="light"] .tj__tbl .tj-res.lose{color:#b91c1c !important}
html[data-theme="light"] .tj__tbl .tj-res.push{color:#475366 !important}
html[data-theme="light"] .tj__tbl .tj-clv-p{color:#047857 !important}
html[data-theme="light"] .tj__tbl .tj-clv-n{color:#b91c1c !important}
html[data-theme="light"] .tj__tbl span:not([class]):not([style]),
html[data-theme="light"] .tj__tbl small:not([class]):not([style]){color:#475366}
/* shop-promo (composant partagé) : textes en encre sur papier */
html[data-theme="light"] .shop-promo__meta{color:#475366 !important}
html[data-theme="light"] .shop-promo__name{color:#101828 !important}
html[data-theme="light"] .shop-promo__price{color:#8a5a00 !important}

/* ============================================================================
   P3 — PAGES CHAMPIONNAT SOCCER (famille .pf-*) en papier (rappel Olivier)
   ========================================================================== */
html[data-theme="light"] :is(.pf-card,.pf-standings){background:#FBF7EF !important;border:1px solid #E2DAC6 !important;border-radius:14px;color:#101828;box-shadow:0 2px 10px rgba(0,0,0,.28)}
html[data-theme="light"] :is(.pf-card,.pf-standings) :is(.club,.pts,.pf-form,.pf-card__teams,.pf-card__conf){color:#101828 !important}
html[data-theme="light"] :is(.pf-card,.pf-standings) :is(.pos,.vs,.pf-card__meta,.pf-card__league,.lbl,.d){color:#475366 !important}
html[data-theme="light"] :is(.pf-card,.pf-standings) span:not([class]):not([style]),
html[data-theme="light"] :is(.pf-card,.pf-standings) div:not([class]):not([style]),
html[data-theme="light"] :is(.pf-card,.pf-standings) td:not([class]):not([style]){color:#22304a}
html[data-theme="light"] :is(.pf-card,.pf-standings) .w{color:#047857 !important}
html[data-theme="light"] :is(.pf-card,.pf-standings) .l{color:#b91c1c !important}
html[data-theme="light"] :is(.pf-card,.pf-standings) [style*="#4ade80" i]{color:#047857 !important}
html[data-theme="light"] :is(.pf-card,.pf-standings) [style*="#f87171" i]{color:#b91c1c !important}
html[data-theme="light"] :is(.pf-card,.pf-standings) [style*="#94a3b8" i],
html[data-theme="light"] :is(.pf-card,.pf-standings) [style*="#e2e8f0" i]{color:#475366 !important}
html[data-theme="light"] :is(.pf-card,.pf-standings) b{color:#101828}
html[data-theme="light"] :is(.pf-card,.pf-standings) th{color:#475366}

/* ============================================================================
   JOURNAUX — refonte des cartes « Pourquoi pas officiel » (.tj__why)
   en cards du système (2 thèmes), demande Olivier 24/07.
   ========================================================================== */
.tj__why{grid-template-columns:repeat(auto-fit,minmax(250px,1fr)) !important;gap:14px !important}
.tj__why article{
  position:relative;
  border-radius:16px !important;
  padding:16px 18px 15px !important;
  border:1px solid rgba(255,255,255,.10);
  background:rgba(255,255,255,.02);
  border-top:3px solid #F3B73B !important;
}
.tj__why article:nth-child(2){border-top-color:#5B8DEF !important}
.tj__why article:nth-child(3){border-top-color:#10B981 !important}
.tj__why article:nth-child(4){border-top-color:#F0524F !important}
.tj__why h3{font-size:14.5px !important;letter-spacing:.01em}
html[data-theme="light"] .tj__why article{
  background:#FBF7EF !important;
  border-color:#E2DAC6 !important;
  box-shadow:0 2px 10px rgba(0,0,0,.28);
}
html[data-theme="light"] .tj__why article:nth-child(1){border-top-color:#a16207 !important}
html[data-theme="light"] .tj__why article:nth-child(2){border-top-color:#1d4ed8 !important}
html[data-theme="light"] .tj__why article:nth-child(3){border-top-color:#047857 !important}
html[data-theme="light"] .tj__why article:nth-child(4){border-top-color:#b91c1c !important}
html[data-theme="light"] .tj__why h3{color:#101828 !important}
html[data-theme="light"] .tj__why p{color:#334155 !important}
/* intro + explication calibration : largeur de lecture confortable */
.tj__intro{max-width:78ch}
html[data-theme="light"] .tj__intro{color:#c6ccd8}

/* Pagination des journaux (.tj-pager) — 2 thèmes */
.tj-pager{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:18px 0 8px}
.tj-pager__btn,.tj-pager__num{display:inline-flex;align-items:center;padding:7px 13px;border-radius:10px;border:1px solid rgba(255,255,255,.12);color:#E6EAF2;text-decoration:none;font-size:13px;font-weight:600;background:rgba(255,255,255,.03)}
.tj-pager__num{padding:7px 12px}
.tj-pager__num.is-on{background:#F3B73B;border-color:#F3B73B;color:#1a1204}
.tj-pager__btn:hover,.tj-pager__num:hover{border-color:#F3B73B;color:#F3B73B}
.tj-pager__num.is-on:hover{color:#1a1204}
.tj-pager__total{margin-left:auto;font-size:12px;color:#94a3b8}
html[data-theme="light"] .tj-pager__btn,
html[data-theme="light"] .tj-pager__num{background:#F3EDDF;border-color:#E2DAC6;color:#101828}
html[data-theme="light"] .tj-pager__num.is-on{background:#a16207;border-color:#a16207;color:#fff}
html[data-theme="light"] .tj-pager__btn:hover,
html[data-theme="light"] .tj-pager__num:hover{border-color:#a16207;color:#8a5a00}
html[data-theme="light"] .tj-pager__total{color:#8b93a5} /* pager sur page sombre */

/* ============================================================================
   P3bis — TRACK RECORD /results/ (retour Olivier : gris sur beige partout,
   fond glass gris) : glass-card → papier PLEIN, encres du tableau.
   ========================================================================== */
html[data-theme="light"] .glass-card{background:#FBF7EF !important;border-color:#E2DAC6 !important;box-shadow:0 2px 10px rgba(0,0,0,.28)}
html[data-theme="light"] .picks-table :is(.match-cell,.team,.num.mono){color:#101828 !important}
html[data-theme="light"] .picks-table :is(.num,.date-cell){color:#475366 !important}
html[data-theme="light"] .picks-table th{color:#475366 !important;border-color:#E7E0CD !important}
html[data-theme="light"] .picks-table td{border-color:#EAE4D4 !important}
html[data-theme="light"] .picks-table tbody tr:nth-child(even) td{background:rgba(0,0,0,.03)}
html[data-theme="light"] .sport-badge{filter:none}
html[data-theme="light"] .sport-badge.nba{color:#a16207 !important}
html[data-theme="light"] .market-badge.totals{color:#1d4ed8 !important}
html[data-theme="light"] .market-badge{color:#1d4ed8}
html[data-theme="light"] .side-chip.over{color:#047857 !important}
html[data-theme="light"] .side-chip.under{color:#b91c1c !important}
html[data-theme="light"] .side-chip{color:#22304a}
html[data-theme="light"] .picks-table span:not([class]):not([style]),
html[data-theme="light"] .picks-table div:not([class]):not([style]){color:#22304a}
html[data-theme="light"] .results-page :is(h1,h2,h3){color:#E6EAF2}
html[data-theme="light"] .result-pill.win{color:#047857 !important}
html[data-theme="light"] .result-pill.lose{color:#b91c1c !important}
html[data-theme="light"] .result-pill.push{color:#475366 !important}
html[data-theme="light"] .conf-badge.conf-mid{color:#a16207 !important}
html[data-theme="light"] .conf-badge.conf-good{color:#0e7490 !important}
html[data-theme="light"] .conf-badge{color:#22304a}
html[data-theme="light"] .picks-table b:not([class]),
html[data-theme="light"] .picks-table small:not([class]),
html[data-theme="light"] .picks-table em:not([class]){color:#22304a}
html[data-theme="light"] .glass-card :is(select,option,input,label){color:#101828}
html[data-theme="light"] .glass-card select{background:#F3EDDF;border-color:#E2DAC6}
html[data-theme="light"] .glass-card th{color:#475366 !important}

/* ============================================================================
   P3bis — hubs US : cartes hors-saison + classements (NHL/NBA/WNBA/NFL)
   ========================================================================== */
html[data-theme="light"] :is(.no-games,.no-games-rich){background:#FBF7EF !important;border-color:#E2DAC6 !important;color:#101828;box-shadow:0 2px 10px rgba(0,0,0,.28)}
html[data-theme="light"] :is(.no-games,.no-games-rich) *{color:inherit}
html[data-theme="light"] :is(.no-games,.no-games-rich) :is(p,small,span){color:#334155}
html[data-theme="light"] :is(.no-games,.no-games-rich) .no-games-icon{color:#a16207}
html[data-theme="light"] :is(.no-games,.no-games-rich) [style*="#94a3b8" i],
html[data-theme="light"] :is(.no-games,.no-games-rich) [style*="#e2e8f0" i]{color:#475366 !important}

/* Classements génériques (tous hubs US) */
html[data-theme="light"] :is(.standings-container,.division-box,.league-standings,.standings-section .division-box){background:#FBF7EF !important;border:1px solid #E2DAC6 !important;color:#101828}
html[data-theme="light"] .standings-table :is(.team-abbr,.team-name){color:#101828 !important}
html[data-theme="light"] .standings-table .team-rank{color:#475366 !important}
html[data-theme="light"] .standings-table :is(td,th) span:not([class]):not([style]){color:#22304a}
html[data-theme="light"] .standings-section .section-header,
html[data-theme="light"] .standings-section h2{color:#E6EAF2}

/* Pages ligues : blocs « Derniers résultats » / « Meilleurs buteurs »
   (divs inline-stylés après .pf-sec-h) → papier + variables locales */
html[data-theme="light"] .pf-sec-h + div{
  --muted:#475366; --border:#E2DAC6; --text:#101828;
  background:#FBF7EF; color:#101828;
  box-shadow:0 2px 10px rgba(0,0,0,.28); border-radius:12px;
}
html[data-theme="light"] .pf-sec-h + div b{color:#101828}
html[data-theme="light"] .pf-sec-h + div [style*="#e2e8f0" i],
html[data-theme="light"] .pf-sec-h + div [style*="#E6EAF2" i]{color:#101828 !important}
html[data-theme="light"] .pf-sec-h + div [style*="#94a3b8" i],
html[data-theme="light"] .pf-sec-h + div [style*="#94A3B8" i]{color:#475366 !important}
html[data-theme="light"] .pf-sec-h + div [style*="#4ade80" i]{color:#047857 !important}
html[data-theme="light"] .pf-sec-h + div [style*="#f87171" i]{color:#b91c1c !important}
html[data-theme="light"] .pf-sec-h .season{color:#8b93a5}

/* /picks/ « À la une » : sous-cartes .pk-feat-card (dégradé sombre fade) → papier */
html[data-theme="light"] .pk-feat-card{
  background:#F3EDDF !important;
  background-image:none !important;
  border:1px solid #E2DAC6 !important;
  color:#101828;
}
html[data-theme="light"] .pk-feat-card *:not([class]){color:#334155}
/* teaser fade : le voile sombre devient voile papier */
html[data-theme="light"] .pk-feat-card [style*="linear-gradient" i],
html[data-theme="light"] .pk-feat-card::after{background-image:linear-gradient(rgba(243,237,223,0), #F3EDDF) !important}

/* Combiné IA du jour (composant _combine_teaser, .cmbt-*) → papier */
html[data-theme="light"] .cmbt-card{background:#FBF7EF !important;border-color:#E2DAC6 !important;color:#101828;box-shadow:0 2px 10px rgba(0,0,0,.28)}
html[data-theme="light"] .cmbt-card :is(.cmbt-eyebrow,.cmbt-head){color:#101828}
html[data-theme="light"] .cmbt-card .cmbt-legs{color:#22304a}
html[data-theme="light"] .cmbt-card .cmbt-cta{color:#8a5a00}
html[data-theme="light"] .cmbt-card [style*="#94a3b8" i],
html[data-theme="light"] .cmbt-card [style*="#e2e8f0" i]{color:#475366 !important}
/* WNBA : classements par conférence (.conference-box) — même traitement */
html[data-theme="light"] .conference-box{background:#FBF7EF !important;border:1px solid #E2DAC6 !important;color:#101828}
html[data-theme="light"] .conference-box :is(.conference-header,h3,h4){color:#101828}
html[data-theme="light"] .conference-box [style*="#94a3b8" i],
html[data-theme="light"] .conference-box [style*="#e2e8f0" i]{color:#475366 !important}

/* ============================================================================
   P3bis — PAGE COMBINÉ DU JOUR (famille .cmb-*) en papier
   ========================================================================== */
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmb-faq .faq-item,.cmb-empty){
  background:#FBF7EF !important;border-color:#E2DAC6 !important;color:#101828;
  box-shadow:0 2px 10px rgba(0,0,0,.28);
}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) :is(.cmb-bhead,.cmb-bbody,.cmb-cbody,.cmb-metrics,.cmb-switcher){color:#101828}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) :is(.cmb-sec-h,.cmb-legcount,.cmb-lede){color:#475366}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) :is(.cmb-eyebrow,.on,.cmb-cta){color:#8a5a00 !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) .cmb-badge{color:#6d28d9}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) :is(.cmb-locked-metric,.lk){color:#475366}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) span:not([class]):not([style]),
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) div:not([class]):not([style]){color:#22304a}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) [style*="#94a3b8" i],
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) [style*="#e2e8f0" i]{color:#475366 !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) [style*="#4ade80" i]{color:#047857 !important}

/* ============================================================================
   P3ter — retours Olivier (results, no-games, combiné)
   ========================================================================== */
/* /results/ : la carte verre passait en papier SANS son encre */
html[data-theme="light"] .glass-card{color:#101828}
html[data-theme="light"] .glass-card :is(label,small,.stat-label){color:#475366}
html[data-theme="light"] :is(.sport-tab,.tab-label){color:#22304a !important}
html[data-theme="light"] .sport-tab.active,
html[data-theme="light"] .sport-tab.active .tab-label{color:#8a5a00 !important}
html[data-theme="light"] .pagination-bar{background:#FBF7EF !important;border:1px solid #E2DAC6;color:#101828}
html[data-theme="light"] .page-btn{color:#22304a !important;border-color:#E2DAC6}
html[data-theme="light"] .page-btn.active{background:#a16207 !important;color:#fff !important;border-color:#a16207}
html[data-theme="light"] .results-page .glass-card :is(h2,h3,b,strong){color:#101828}

/* Cartes hors-saison : TITRES (restaient blancs) + sous-titres */
html[data-theme="light"] :is(.no-games,.no-games-rich) :is(h1,h2,h3,h4,.no-games-title,b,strong){color:#101828 !important}
html[data-theme="light"] :is(.no-games,.no-games-rich) :is(p,span,small,div:not([class])){color:#334155 !important}
html[data-theme="light"] :is(.no-games,.no-games-rich) a{color:#8a5a00 !important}

/* Combiné du jour : noms de matchs + chips sport encore gris */
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) :is(b,strong,a:not(.cmb-cta)){color:#101828 !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) [style*="var(--muted" i],
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) [style*="#8a93a3" i],
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) [style*="#cbd5e1" i]{color:#334155 !important}
html[data-theme="light"] .cmbt-card :is(span,div):not([class]):not([style]){color:#22304a}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) [class*="sport"],
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) [class*="chip"]{color:#101828}
/* /results/ : titre header (dans glass-card), sous-titres, presets période */
html[data-theme="light"] .glass-card :is(.animate-title,.title-word,h1){color:#101828 !important}
html[data-theme="light"] .glass-card .title-sport{color:#8a5a00 !important}
html[data-theme="light"] .glass-card :is(.header-sub,.context-note){color:#475366 !important}
html[data-theme="light"] .preset-btn{color:#22304a !important;border-color:#E2DAC6}
html[data-theme="light"] .preset-btn.active{color:#fff !important;background:#a16207 !important;border-color:#a16207}
html[data-theme="light"] .glass-card a:not([class]){color:#8a5a00}
html[data-theme="light"] .pagination-info{color:#475366 !important}
html[data-theme="light"] .glass-card .muted{color:#475366 !important}
/* Combiné : classes exactes des jambes (scan 24/07 nuit) */
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) .match{color:#101828 !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) :is(.sub,.num,.cmb-val.no){color:#475366 !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) .cmb-badge{color:#6d28d9 !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) .lock{color:#8a5a00 !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) .ghost{color:rgba(16,24,40,.25) !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) span:not([class]):not([style]){color:#334155}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) :is(.cl,.v){color:#101828 !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) :is(.k,.pro,.cv,.rs){color:#8a5a00 !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) div:not([class]):not([style]),
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) p:not([class]):not([style]),
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) small{color:#334155 !important}
/* Combiné : rattrape-tout des éléments SANS classe (style inline ou hérité) */
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) :is(div,span,p,label,button,h3,h4):not([class]){color:#22304a !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) :is(.cmb-manual-intro,.st,.l,.cmb-empty2){color:#475366 !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) .cmb-sys-toggle{color:#101828 !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) .b{color:#8a5a00 !important}
/* Combiné : SOUS-CONTENEURS restés sombres (boutons de mode, steppers,
   pastilles n°, zone ticket .cmb-slip, boutons sans classe) */
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) .cmb-modes{background:#F3EDDF !important;border-color:#E2DAC6 !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) .cmb-slip{background:#F3EDDF !important;border-color:#E2DAC6 !important;color:#101828}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) button:not([class]),
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) .cmb-modes button{background:#FBF7EF !important;border:1px solid #E2DAC6 !important;color:#22304a !important;background-image:none !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) .cmb-modes button.on,
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) button.on{background:#a16207 !important;border-color:#a16207 !important;color:#fff !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) button.on :is(span,b,.rs,.pro){color:#fff !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo,.cmbt-card) span.num{background:#a16207 !important;color:#fff !important;background-image:none !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) .cmb-slip :is(.sh,.so-row){color:#101828 !important}
html[data-theme="light"] :is(.cmb-builder,.cmb-combo) .cmb-slip .st{color:#475366 !important}
/* /results/ bas de page : textes SANS classe sur papier (why-different, labels) */
html[data-theme="light"] .results-page :is(div,span,p,li,h2,h3,h4,label):not([class]):not([style]){color:#22304a}
html[data-theme="light"] .results-page .glass-card :is(div,span,p,li,h2,h3,h4,label):not([class]){color:#22304a !important}
html[data-theme="light"] .per-page-btn{color:#22304a !important;border-color:#E2DAC6}
html[data-theme="light"] .per-page-btn.active{background:#a16207 !important;color:#fff !important;border-color:#a16207}
html[data-theme="light"] .vsec-cta-btn{background:#101828 !important;color:#F3EDDF !important;border-color:#101828 !important}
/* Hub soccer : bloc value-betting (carte teintée or) + pastilles étapes */
html[data-theme="light"] .value-betting-cta{background:#F6EBCC !important;border-color:rgba(161,98,7,.4) !important;color:#101828}
html[data-theme="light"] .value-betting-cta :is(div,p,span,h3,h4):not(.vb-link){color:#22304a}
html[data-theme="light"] .value-betting-cta b, html[data-theme="light"] .value-betting-cta strong{color:#101828}
html[data-theme="light"] .value-betting-cta .vb-link{color:#8a5a00 !important}
html[data-theme="light"] .step-number{background:#047857 !important;background-image:none !important;color:#fff !important}
/* Vitrine des gagnants (.rw-*, recent_wins_showcase, partagé hubs) en clair */
html[data-theme="light"] .rw-card{background:#FBF7EF !important;background-image:none !important;border:1px solid #E2DAC6 !important;color:#101828;box-shadow:0 2px 10px rgba(0,0,0,.28)}
html[data-theme="light"] .rw-card :is(.rw-pick,.rw-teams){color:#101828 !important}
html[data-theme="light"] .rw-card :is(.rw-odds,.rw-at){color:#475366 !important}
html[data-theme="light"] .rw-card .rw-badge{color:#047857 !important}
html[data-theme="light"] .rw-card .rw-link{color:#8a5a00 !important}
/* Héros des hubs (zones sombres sans classe stable) : ré-épingler les
   sémantiques bridgées à l'intérieur des .container directs sur fond page */
html[data-theme="light"] .mlb-hero [style*="#4ade80" i],
html[data-theme="light"] [class*="hero"] [style*="#4ade80" i]{color:#4ade80 !important}
html[data-theme="light"] [class*="hero"] [style*="#f87171" i]{color:#f87171 !important}
html[data-theme="light"] [class*="hero"] [style*="#fbbf24" i]{color:#fbbf24 !important}
/* /results/ « Pourquoi différents » : cellules TD/TH sans classe */
html[data-theme="light"] .results-page .glass-card :is(td,th):not([class]){color:#22304a !important}
html[data-theme="light"] .results-page .glass-card :is(td,th):not([class]) b,
html[data-theme="light"] .results-page .glass-card :is(td,th):not([class]) strong{color:#101828 !important}

/* ============================================================================
   P4 — HOME + FAQ génériques (.faq-item) : questions/réponses encrées
   ========================================================================== */
html[data-theme="light"] .faq-item :is(summary,button,h3,h4,[class*="question"]),
html[data-theme="light"] .faq-item > :is(div,span):not([class]){color:#101828 !important}
html[data-theme="light"] .faq-item :is(p,li,[class*="answer"]),
html[data-theme="light"] .faq-item :is(div,span):not([class]) :is(p,span){color:#334155 !important}
html[data-theme="light"] .faq-item a{color:#8a5a00 !important}

/* Articles /guides/ (.article-content, devenu papier via glass-card) :
   corps riche complet en encre */
html[data-theme="light"] .article-content{color:#22304a}
html[data-theme="light"] .article-content :is(strong,b,h1,h2,h3,h4){color:#101828 !important}
html[data-theme="light"] .article-content :is(p,li,em,td){color:#22304a !important}
html[data-theme="light"] .article-content th{color:#475366 !important}
html[data-theme="light"] .article-content a{color:#8a5a00 !important}
html[data-theme="light"] .article-content code{background:rgba(16,24,40,.06);color:#101828}
html[data-theme="light"] .article-content blockquote{color:#334155;border-color:#a16207}
/* Login/signup (carte auth papier) : liens + bouton Google */
html[data-theme="light"] .auth-card :is(.link,a),
html[data-theme="light"] form .link{color:#8a5a00 !important}
html[data-theme="light"] .btn.btn-google{color:#101828 !important;background:#fff !important;border-color:#E2DAC6 !important}
html[data-theme="light"] .auth-card :is(span,div):not([class]){color:#334155}

/* ============================================================================
   P4 — PAGE COMPTE (retours Olivier 25/07, gabarit account.html)
   ========================================================================== */
/* Explorer ProbWin : liens de navigation + Déconnexion */
html[data-theme="light"] .acct-nav-link{color:#22304a !important}
html[data-theme="light"] .acct-nav-link[style*="#94a3b8" i]{color:#475366 !important}
/* Textes inline gris des sections (bankroll, équipes, visite guidée…) */
html[data-theme="light"] .account-section [style*="#cbd5e1" i],
html[data-theme="light"] .account-section [style*="#e2e8f0" i]{color:#22304a !important}
html[data-theme="light"] .account-section [style*="#94a3b8" i],
html[data-theme="light"] .account-section [style*="#94A3B8" i]{color:#475366 !important}
/* Titres de section : TOUS alignés sur l'ocre (Visite guidée était #cbd5e1) */
html[data-theme="light"] .account-section .section-title{color:#8a5a00 !important}
/* Bouton Modifier (disabled) lisible */
html[data-theme="light"] .account-section .btn[disabled],
html[data-theme="light"] .account-section .btn.btn-sm{color:#475366 !important;border-color:#CBC2AB !important}
/* Filet : texte nu des sections compte */
html[data-theme="light"] .account-section :is(p,span,div):not([class]):not([style]){color:#22304a}
/* Compte : pont gris scopé au CONTENEUR .account-page (P2 ne couvrait que
   .account-section → ratait header/teams/bankroll). Inline #e2e8f0/#cbd5e1/#94a3b8. */
html[data-theme="light"] .account-page [style*="#e2e8f0" i],
html[data-theme="light"] .account-page [style*="#cbd5e1" i]{color:#22304a !important}
html[data-theme="light"] .account-page [style*="#94a3b8" i]{color:#475366 !important}
/* Classes (pas inline) : intro feedback + icônes dorées des liens de nav. */
html[data-theme="light"] .feedback-intro{color:#475366}
html[data-theme="light"] .acct-nav-link .ico{color:#a16207}

/* =========================================================================
   P5 — Badges sémantiques match partagés (CLV / B2B / carte « à venir »)
   Remplacent des styles inline dupliqués dans les 12 gabarits *_game_unified.
   Base = jeu SOMBRE (iso-rendu strict des anciens inline).
   html[data-theme=light] = grammaire (sémantiques profondes sur clair).
   ========================================================================= */
/* Badges CLV+/CLV- (bandeau valeur des pages match) */
.mu-clv{display:inline-block;font-size:11px;font-weight:700;padding:3px 8px;border-radius:6px;line-height:1.2}
.mu-clv--pos{background:rgba(16,185,129,0.15);color:#10b981}
.mu-clv--neg{background:rgba(239,68,68,0.15);color:#ef4444}
.mu-clv--sm{font-size:10px;padding:2px 6px;border-radius:4px}
html[data-theme="light"] .mu-clv--pos{background:rgba(16,185,129,.10);color:#047857}
html[data-theme="light"] .mu-clv--neg{background:rgba(239,68,68,.10);color:#b91c1c}
/* Pastille B2B (back-to-back, tableaux forme NHL/NBA/WNBA) */
.mu-b2b{margin-left:6px;font-size:10px;color:#f87171;background:rgba(248,113,113,.1);padding:2px 6px;border-radius:4px}
html[data-theme="light"] .mu-b2b{color:#b91c1c;background:rgba(185,28,28,.08)}
/* Carte « Analyse à venir » : liseré pointillé (doré sombre → ocre clair) */
.mu-upcoming{border:1px dashed rgba(255,199,58,0.3)}
html[data-theme="light"] .mu-upcoming{border-color:rgba(161,98,7,.35)}

/* -------------------------------------------------------------------------
   Tokens sémantiques de DONNÉES (win/loss, échelles ERA/xERA, signaux O/U).
   Remplacent les hex inline conditionnels Django (color:{% if %}#4ade80…).
   Cascade = reproduit à l'identique les anciens ponts [style*="#…" i] :
     • carte claire → sémantique PROFONDE lisible sur papier
     • héros (.mu-hero, toujours sombre) → couleur VIVE ré-épinglée
   ------------------------------------------------------------------------- */
:root{--sem-pos:#4ade80;--sem-neg:#f87171;--sem-warn:#fbbf24;--sem-info:#60a5fa}
html[data-theme="light"]{--sem-pos:#047857;--sem-neg:#b91c1c;--sem-warn:#a16207;--sem-info:#1d4ed8}
html[data-theme="light"] .mu-hero{--sem-pos:#4ade80;--sem-neg:#f87171;--sem-warn:#fbbf24;--sem-info:#60a5fa}

/* P5 soccer — gris labels sans pont dans les cartes claires (compos/arbitre/
   absences .ai-card). Alignés sur leurs voisins déjà pontés (#94a3b8→#475366).
   Light-only → sombre strictement inchangé. #a3adbd vit AUSSI dans le héros
   (sombre) → ré-épinglé clair sur sombre. (Dette : à tokeniser à l'étape :root.) */
html[data-theme="light"] .mu :is(.ai-card,.mu-card,.key-factors) [style*="#77808f" i],
html[data-theme="light"] .mu :is(.ai-card,.mu-card,.key-factors) [style*="#5b6472" i]{color:#475366 !important}
html[data-theme="light"] .mu :is(.ai-card,.mu-card,.key-factors) [style*="#a3adbd" i]{color:#334155 !important}
html[data-theme="light"] .mu .mu-hero [style*="#a3adbd" i]{color:#a3adbd !important}

/* Chips forme W/D/L (game_detail.css) : W suit --emerald (→#047857 clair) mais
   D=--gold-400 et L=#f87171 restaient VIFS sur papier → alignées en profond. */
html[data-theme="light"] .form-result.D{color:#a16207}
html[data-theme="light"] .form-result.L{color:#b91c1c}

/* Pastille lanceur L/R hub MLB (mlb_public.html .pitcher-hand : --gold-600 non
   redéfini en clair → doré sur papier). Ocre sur fond pastel doré. */
html[data-theme="light"] .pitcher-hand{color:#a16207}

/* Journaux tendances : table papier .tj__tbl → --muted global (#94A3B8) non
   redéfini en clair (dates « prise le », inline var(--muted)). Ardoise. */
html[data-theme="light"] .tj__tbl{--muted:#475366}

/* Classements (standings hors-saison) : --muted global non redéfini en clair
   → noms d'équipe (span var(--muted) dans .team-cell). Ardoise sur papier. */
html[data-theme="light"] :is(.standings-table,.league-standings,.division-box,.conference-box){--muted:#475366}
