/* Phase 52 — mode sombre complet. Activé par <html data-theme="dark"> (theme-init.js, avant le 1er rendu).
   Violet de marque #6c27d7 et vert #29c19d conservés : en aplat (boutons, pastilles) avec texte blanc ou foncé
   AA ; en TEXTE sur fond sombre on utilise leurs teintes claires (#b48cf5 / #2dd2ac) pour garder ≥ 4,5:1. */
:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #0f0e15; --bg-elevated: #18161f; --card: #18161f; --soft: #221f2c;
  --ink: #f1effa; --ink-secondary: #d9d5e7; --muted: #aaa5bc; --muted-2: #9e99b1;
  --line: #2c2939; --line-strong: #3e3a50; --field-line: #77728d;
  --brand: #b48cf5; --brand-hover: #c9adf8; --brand-2: #9c6ce5; --brand-solid: #6c27d7; --brand-solid-hover: #7d3ee0;
  --brand-soft: #261c3b; --brand-soft-2: #31244d; --brand-line: #4a3672; --brand-ring: rgba(180, 140, 245, .35);
  --violet-50: #221a33; --violet-100: #2b2042; --violet-200: #4a3672;
  /* Violet lisible sur fond sombre (le #6c27d7 de marque ne fait que 2,66:1 ici). Aplats : --brand-solid. */
  --violet-400: #c9adf8; --violet-500: #d4c2fa; --violet-600: #b48cf5;
  --jade-400: #29c19d;
  --jade-50: #12302a; --jade-100: #173b33; --jade-200: #2e6b5d; --jade-800: #7fe6cc;
  --accent: #2dd2ac; --accent-hover: #4fdcbb; --accent-ink: #2dd2ac; --accent-graphic: #2dd2ac; --accent-deco: #29c19d;
  --accent-soft: #12302a; --accent-soft-2: #173b33; --accent-line: #2e6b5d; --accent-solid: #18725d;
  --green: #2dd2ac; --green-soft: #12302a; --green-line: #2e6b5d;
  --success: #2dd2ac; --success-soft: #12302a; --success-line: #2e6b5d; --success-ink: #7fe6cc;
  --red: #f87171; --red-soft: #3a1717; --red-line: #6b2626;
  --amber: #fbbf24; --amber-soft: #352a10; --amber-line: #6b5216;
  --blue: #7aa7ff; --blue-soft: #16223d;
  --chart-1: #b48cf5; --chart-2: #2dd2ac; --chart-3: #f2b24a; --chart-4: #7aa7ff; --chart-grid: #2c2939; --chart-axis: #aaa5bc;
  --shadow-xs: 0 1px 2px rgba(0, 0, 0, .4);
  --shadow: 0 1px 2px rgba(0, 0, 0, .35), 0 2px 6px rgba(0, 0, 0, .3);
  --shadow-md: 0 6px 18px rgba(0, 0, 0, .45), 0 1px 3px rgba(0, 0, 0, .35);
  --shadow-lg: 0 24px 60px rgba(0, 0, 0, .55), 0 6px 16px rgba(0, 0, 0, .4);
}
:root[data-theme="dark"] body { background: var(--bg); color: var(--ink); }

/* Surfaces codées en blanc dans les feuilles historiques */
:root[data-theme="dark"] :is(.card, .sidebar, .ws-list, .lp-pop, .footer, .opp-card, .help-chip, .hero-eyebrow, .mock-url,
  .modal, dialog, .pub-nav, .topbar, .legal-doc, .lg-clair, .plan, .mock, .feature, .faq details, .toast) {
  background: var(--card); color: var(--ink); border-color: var(--line);
}
@media (min-width: 901px) {
  :root[data-theme="dark"] .shell { background: linear-gradient(90deg, var(--card) calc(var(--side-w) - 1px), var(--line) calc(var(--side-w) - 1px), var(--line) var(--side-w), var(--bg) var(--side-w)); }
}
:root[data-theme="dark"] :is(.lang-switch a.active, .seg button.active, .seg a.active) { background: var(--soft); color: var(--ink); }
:root[data-theme="dark"] :is(thead th, th, .mock-bar, .mock-stat, .channel) { background: #1d1a26; color: var(--ink-secondary); }
:root[data-theme="dark"] .channel:hover { background: var(--soft); }
:root[data-theme="dark"] tbody tr:hover, :root[data-theme="dark"] tr.unread td { background: #1f1c2a; }
:root[data-theme="dark"] tr.blocked td { background: #2a1719; }
:root[data-theme="dark"] :is(input, select, textarea) { background: #12111a; color: var(--ink); border-color: var(--field-line); }
:root[data-theme="dark"] :is(input, textarea)::placeholder { color: #8c879f; }

/* Boutons : aplats de marque conservés, texte blanc AA */
:root[data-theme="dark"] .btn { background: var(--brand-solid); color: #fff; }
:root[data-theme="dark"] .btn:hover { background: var(--brand-solid-hover); color: #fff; }
:root[data-theme="dark"] .btn.secondary, :root[data-theme="dark"] .btn.secondary.accent-outline { background: var(--soft); color: var(--ink); border-color: var(--line-strong); }
:root[data-theme="dark"] .btn.secondary:hover { background: #2a2636; color: var(--ink); }
:root[data-theme="dark"] .btn.ghost { background: transparent; color: var(--muted); }
:root[data-theme="dark"] .btn.ghost:hover { background: var(--soft); color: var(--ink); }
:root[data-theme="dark"] .btn.accent { background: var(--accent-solid); color: #fff; }
:root[data-theme="dark"] .btn.accent:hover { background: #156552; color: #fff; }
:root[data-theme="dark"] .btn.danger { background: #b91c1c; color: #fff; }
:root[data-theme="dark"] :is(.steps li.active, .plan .tag, .checklist li.done .tick) { background: var(--brand-solid); border-color: var(--brand-solid); color: #fff; }
:root[data-theme="dark"] .final-cta .btn { background: #fff; color: #6c27d7; }

/* Pastilles / bandeaux à couleurs fixes */
:root[data-theme="dark"] .tag.demo, :root[data-theme="dark"] .channel .chip.pro { background: #3a2410; color: #fdba74; border-color: #7c4a1c; }
:root[data-theme="dark"] .modebar.test { background: #0d2a3a; color: #7dd3fc; border-color: #155e75; }
:root[data-theme="dark"] .banner { background: linear-gradient(90deg, var(--brand-soft), var(--card)); color: var(--ink); }
:root[data-theme="dark"] .pv-meter { background: #12111a; }
:root[data-theme="dark"] .skip-link { background: var(--ink); color: var(--bg); }
:root[data-theme="dark"] .nav { background: rgba(24, 22, 31, .92); border-bottom-color: var(--line); color: var(--ink); }
:root[data-theme="dark"] .plan ul li { border-top-color: var(--line); }
:root[data-theme="dark"] .tag.beta { background: #12323a; color: #7dd3fc; border-color: #155e75; }
/* Titre d'accueil : violet clair + vert logo #29c19d, tous deux ≥ 4,5:1 sur le fond sombre. */
:root[data-theme="dark"] .hero .grad {
  background: linear-gradient(90deg, #b48cf5 0%, #d4c2fa 40%, #29c19d 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
@media (forced-colors: active) {
  :root[data-theme="dark"] .hero .grad { background: none; color: CanvasText; }
}
/* Pastille active : l'icône blanche exige un aplat ≥ 4,5:1 (les teintes claires du mode sombre ne suffisent pas). */
:root[data-theme="dark"] .side-link.active[data-section="dashboard"] .ic-tile { background: #813fe4; }
:root[data-theme="dark"] .side-link.active[data-section="opportunities"] .ic-tile { background: #1a7a64; }
:root[data-theme="dark"] .side-link.active[data-section="alerts"] .ic-tile { background: #9b6008; }
:root[data-theme="dark"] .side-link.active[data-section="omnibus"] .ic-tile { background: #5b21b6; }
:root[data-theme="dark"] .side-link.active[data-section="intelligence"] .ic-tile { background: #1f65d6; }
:root[data-theme="dark"] .side-link.active[data-section="matching"] .ic-tile { background: #1d798b; }
:root[data-theme="dark"] .side-link.active[data-section="autopilot"] .ic-tile { background: #ae1cc4; }
:root[data-theme="dark"] .side-link.active[data-section="billing"] .ic-tile { background: #c91d48; }
:root[data-theme="dark"] .side-link.active[data-section="settings"] .ic-tile { background: #4858e5; }
:root[data-theme="dark"] .side-link.active[data-section="help"] .ic-tile { background: #b34d19; }
:root[data-theme="dark"] .side-link.active[data-section="readiness"] .ic-tile { background: #0e6b62; }
:root[data-theme="dark"] .side-link.active[data-section="visibility"] .ic-tile { background: #0e6b62; }
:root[data-theme="dark"] .side-link.active[data-section="benchmark"] .ic-tile { background: #5b21b6; }
:root[data-theme="dark"] .side-link.active[data-section="signals"] .ic-tile { background: #5b21b6; }
:root[data-theme="dark"] img.logo-mark-img { filter: none; }
:root[data-theme="dark"] .flash.success { background: var(--success-soft); color: var(--success-ink); border-color: var(--success-line); }
:root[data-theme="dark"] .flash.error, :root[data-theme="dark"] .flash.danger { background: var(--red-soft); color: #fecaca; border-color: var(--red-line); }
:root[data-theme="dark"] .flash.info { background: var(--blue-soft); color: #c7d7ff; border-color: #2a3b66; }
:root[data-theme="dark"] svg text { fill: var(--muted); }
:root[data-theme="dark"] ::selection { background: #4a3672; color: #fff; }

/* Sélecteur d'apparence (Réglages) */
.theme-choices { display: flex; gap: 10px; flex-wrap: wrap; border: 0; padding: 0; margin: 4px 0 14px; }
.theme-choice { display: inline-flex; align-items: center; gap: 8px; padding: 9px 13px; border: 1px solid var(--line-strong);
  border-radius: 11px; cursor: pointer; background: var(--card); color: var(--ink); font-weight: 560; }
.theme-choice:has(input:checked) { border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-ring); }
.theme-choice input { accent-color: #6c27d7; }
.theme-swatch { width: 18px; height: 18px; border-radius: 50%; border: 1px solid var(--line-strong); }
.theme-light .theme-swatch { background: #ffffff; }
.theme-dark .theme-swatch { background: #16141f; }
.theme-system .theme-swatch { background: linear-gradient(135deg, #ffffff 50%, #16141f 50%); }
@media print { :root[data-theme="dark"] { color-scheme: light; } }

/* Phase 54 - en-tete public (header.nav) : restait blanc translucide en sombre (la liste ci-dessus visait .pub-nav,
   classe inexistante) -> texte clair sur fond blanc, illisible. Fond sombre opaque a 92 % + filet violet. */
:root[data-theme="dark"] header.nav {
  background: rgba(22, 20, 31, .92); color: var(--ink);
  border-bottom: 1px solid var(--line);
  box-shadow: inset 0 -2px 0 -1px rgba(139, 92, 246, .35);
}
:root[data-theme="dark"] header.nav .logo, :root[data-theme="dark"] header.nav .nav-login { color: var(--ink); }