/* ══════════════════════════════════════════════════════════════════════════════
   CYBER WAR GAMES – Édition 3 · Saint-Louis · 03 octobre 2026
   Thème v3 — chargé APRÈS main.css / partners-v2-enhanced.css / cyber-effects.css.
   Palette : Jaune Dakar #FFEB00 · Jaune JOJ #FFB114 · Orange #FE5D03
             Noir #0B0B0B · Crème #FFF8E7
   Titres : Barlow Condensed (graisse forte, condensée) · Corps : Inter (aéré)
   Règle : le motif reste une texture, jamais un fond surchargé.
══════════════════════════════════════════════════════════════════════════════ */

/* ── Tokens ────────────────────────────────────────────────────────────────── */
:root {
  --v3-yellow:      #FFEB00;
  --v3-joj:         #FFB114;
  --v3-orange:      #FE5D03;
  --v3-orange-deep: #D94E00;
  --v3-orange-ink:  #B84200;   /* orange lisible en petit texte sur crème */
  --v3-black:       #0B0B0B;
  --v3-ink:         #161514;
  --v3-cream:       #FFF8E7;
  --v3-cream-2:     #FBEFD3;
  --v3-grad:        linear-gradient(90deg, var(--v3-yellow) 0%, var(--v3-joj) 45%, var(--v3-orange) 100%);
  --v3-grad-diag:   linear-gradient(135deg, var(--v3-yellow) 0%, var(--v3-joj) 40%, var(--v3-orange) 100%);
  --v3-pattern:     url('../img/v3/pattern-2400.webp');
  --v3-pattern-sm:  url('../img/v3/pattern-1200.webp');
  --v3-gradient-portrait: url('../img/v3/gradient-portrait.webp');
  --v3-radius:      6px;

  --font-heading:   'Barlow Condensed', 'Arial Narrow', 'Helvetica Neue', Arial, sans-serif;
  --font-body:      'Inter', 'Helvetica Neue', Arial, sans-serif;
  --font-mono:      'JetBrains Mono', ui-monospace, Consolas, monospace;

  --transition:     all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Clair / crème — thème par défaut de l'édition 3 */
:root,
[data-theme="light"] {
  --cwg-cyan:       var(--v3-orange-deep);
  --cwg-cyan-dim:   var(--v3-orange-ink);
  --cwg-purple:     var(--v3-joj);
  --cwg-purple-dim: #E09200;
  --cwg-blue:       var(--v3-orange);
  --cwg-blue-dim:   var(--v3-orange-deep);

  --bg-primary:     var(--v3-cream);
  --bg-secondary:   var(--v3-cream-2);
  --bg-card:        #FFFFFF;
  --bg-card-hover:  #FFFDF6;
  --border-color:   #EADCC0;
  --border-glow:    rgba(254, 93, 3, 0.25);
  --text-primary:   var(--v3-black);
  --text-secondary: #3D3831;
  --text-muted:     #6E665B;

  --grad-cyber:     linear-gradient(135deg, var(--v3-orange) 0%, var(--v3-joj) 100%);
  --grad-dark:      linear-gradient(180deg, var(--bg-primary) 0%, var(--bg-secondary) 100%);
  --grad-card:      linear-gradient(145deg, #FFFFFF 0%, var(--v3-cream) 100%);
  --glow-cyan:      0 10px 28px rgba(254, 93, 3, 0.22);
  --glow-purple:    0 10px 28px rgba(255, 177, 20, 0.25);
  --shadow-card:    0 1px 2px rgba(11, 11, 11, 0.04), 0 8px 24px rgba(11, 11, 11, 0.06);

  --bs-body-bg:              var(--v3-cream);
  --bs-body-color:           var(--v3-black);
  --bs-emphasis-color:       var(--v3-black);
  --bs-secondary-color:      #6E665B;
  --bs-tertiary-bg:          var(--v3-cream-2);
  --bs-border-color:         #EADCC0;
  --bs-dark-subtle-bg:       var(--v3-cream-2);
  --bs-table-color:          var(--v3-black);
  --bs-table-striped-color:  var(--v3-black);
  --bs-table-hover-color:    var(--v3-black);
  --bs-table-active-color:   var(--v3-black);
  --bs-link-color:           var(--v3-orange-ink);
  --bs-link-color-rgb:       184, 66, 0;
  --bs-link-hover-color:     var(--v3-black);
  --bs-link-hover-color-rgb: 11, 11, 11;
  --bs-primary:              var(--v3-orange);
  --bs-primary-rgb:          254, 93, 3;
  --bs-warning:              var(--v3-joj);
  --bs-warning-rgb:          255, 177, 20;
  color-scheme: light;
}

/* Sombre / noir tech */
[data-theme="dark"] {
  --cwg-cyan:       var(--v3-orange);
  --cwg-cyan-dim:   var(--v3-orange-deep);
  --cwg-purple:     var(--v3-joj);
  --cwg-purple-dim: #E09200;
  --cwg-blue:       var(--v3-yellow);
  --cwg-blue-dim:   var(--v3-joj);

  --bg-primary:     var(--v3-black);
  --bg-secondary:   #121110;
  --bg-card:        #171614;
  --bg-card-hover:  #1F1D1A;
  --border-color:   #2A2724;
  --border-glow:    rgba(254, 93, 3, 0.3);
  --text-primary:   var(--v3-cream);
  --text-secondary: #D6CDBF;
  --text-muted:     #9A9286;

  --grad-cyber:     linear-gradient(135deg, var(--v3-orange) 0%, var(--v3-joj) 100%);
  --grad-card:      linear-gradient(145deg, #171614 0%, #121110 100%);
  --glow-cyan:      0 10px 28px rgba(254, 93, 3, 0.28);
  --glow-purple:    0 10px 28px rgba(255, 177, 20, 0.25);
  --shadow-card:    0 8px 28px rgba(0, 0, 0, 0.45);

  --bs-body-bg:              var(--v3-black);
  --bs-body-color:           var(--v3-cream);
  --bs-emphasis-color:       var(--v3-cream);
  --bs-secondary-color:      #9A9286;
  --bs-tertiary-bg:          #121110;
  --bs-border-color:         #2A2724;
  --bs-dark-subtle-bg:       #121110;
  --bs-table-color:          var(--v3-cream);
  --bs-table-striped-color:  var(--v3-cream);
  --bs-table-hover-color:    var(--v3-cream);
  --bs-table-active-color:   var(--v3-cream);
  --bs-link-color:           var(--v3-joj);
  --bs-link-color-rgb:       255, 177, 20;
  --bs-link-hover-color:     var(--v3-yellow);
  --bs-link-hover-color-rgb: 255, 235, 0;
  color-scheme: dark;
}

/* ── Base & typographie ───────────────────────────────────────────────────── */
html body {
  font-family: var(--font-body);
  background-color: var(--bg-primary);
  color: var(--text-primary);
  line-height: 1.7;
  letter-spacing: 0.005em;
}
html[data-theme] :is(h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6) {
  font-family: var(--font-heading);
  font-weight: 800;
  letter-spacing: 0.005em;
  line-height: 1.05;
  color: var(--text-primary);
}
html[data-theme] p { color: var(--text-secondary); }
html[data-theme] .text-cyber  { color: var(--cwg-cyan) !important; }
html[data-theme] .text-purple { color: var(--cwg-purple) !important; }
html[data-theme] .text-muted  { color: var(--text-muted) !important; }
::selection { background: var(--v3-yellow); color: var(--v3-black); }

/* Pas de néons : l'identité v3 est franche, pas lumineuse */
html[data-theme] *:not(.keep-glow) { text-shadow: none !important; }

/* Barre de défilement */
html { scrollbar-color: var(--v3-orange) var(--bg-secondary); }

/* ── Bandeau supérieur (ex-hacker banner) ─────────────────────────────────── */
/* Bandeau + nav = un seul bloc noir ; le jaune est réservé au hero */
html[data-theme] .hacker-banner {
  background: var(--v3-black);
  border-bottom: 1px solid rgba(255, 248, 231, 0.08);
  color: var(--v3-cream);
  font-family: var(--font-mono);
}
html[data-theme] .hbanner-prompt { color: var(--v3-orange); opacity: 1; font-weight: 600; }
html[data-theme] .hbanner-text   { color: var(--v3-yellow); font-weight: 600; letter-spacing: 0.04em; }
html[data-theme] .hbanner-cursor { color: var(--v3-yellow); }
/* Les drapeaux emoji s'affichent en lettres sous Windows (« FR FR ») */
html[data-theme] .lang-flag { display: none; }

/* ── Navigation (noire dans les deux thèmes : logos blancs) ───────────────── */
html[data-theme] .cyber-nav {
  background: rgba(11, 11, 11, 0.97);
  border-bottom: 3px solid transparent;
  border-image: var(--v3-grad) 1;
  backdrop-filter: blur(14px);
}
html[data-theme] .cyber-nav.scrolled { box-shadow: 0 8px 30px rgba(0, 0, 0, 0.25); }
html[data-theme] .nav-logo { filter: none; }
html[data-theme] .brand-text {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 1.35rem;
  letter-spacing: 0.06em;
  color: var(--v3-cream);
}
html[data-theme] .brand-accent { color: var(--v3-yellow); }

html[data-theme] .cyber-nav .nav-link {
  font-family: var(--font-heading);
  font-size: 1.02rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(255, 248, 231, 0.78) !important;
  background: transparent !important;
  border-radius: 0;
}
html[data-theme] .cyber-nav .nav-link::before,
html[data-theme] .cyber-nav .nav-link.active::before { display: none !important; content: none !important; animation: none !important; }
html[data-theme] .cyber-nav .nav-link::after {
  bottom: -2px;
  height: 3px;
  background: var(--v3-yellow);
}
html[data-theme] .cyber-nav .nav-link:hover { color: var(--v3-yellow) !important; }
html[data-theme] .cyber-nav .nav-link.active { color: var(--v3-yellow) !important; background: transparent !important; }
html[data-theme] .cyber-nav .nav-link.active::after { width: 70% !important; }
html[data-theme] .cwg-nav-frame { display: none !important; }

html[data-theme] .cyber-nav .btn-icon,
html[data-theme] .cyber-nav .user-menu-btn {
  border-color: rgba(255, 248, 231, 0.18);
  color: rgba(255, 248, 231, 0.8);
  border-radius: var(--v3-radius);
}
html[data-theme] .cyber-nav .btn-icon:hover,
html[data-theme] .cyber-nav .user-menu-btn:hover {
  border-color: var(--v3-yellow);
  color: var(--v3-yellow);
  box-shadow: none;
}
html[data-theme] .cyber-nav .navbar-collapse { background: transparent; border: 0; box-shadow: none; }
html[data-theme] .cyber-toggler { border-color: rgba(255, 248, 231, 0.25); }
html[data-theme] .cyber-toggler span { background: var(--v3-yellow); }
@media (max-width: 991.98px) {
  html[data-theme] .cyber-nav .navbar-collapse {
    background: var(--v3-black);
    margin: 0 -12px;
    padding: 0.75rem 1rem 1rem;
    border-bottom: 3px solid var(--v3-orange);
  }
}

html[data-theme] .cyber-dropdown {
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-top: 3px solid var(--v3-orange);
  border-radius: var(--v3-radius);
  box-shadow: var(--shadow-card);
}
html[data-theme] .cyber-dropdown .dropdown-item { color: var(--text-secondary); border-radius: 4px; }
html[data-theme] .cyber-dropdown .dropdown-item:hover,
html[data-theme] .cyber-dropdown .dropdown-item.active {
  background: var(--v3-yellow);
  color: var(--v3-black);
}

/* ── Boutons ──────────────────────────────────────────────────────────────── */
html[data-theme] .btn-cyber,
html[data-theme] .btn-cyber-outline {
  font-family: var(--font-heading);
  font-size: 1rem;
  font-weight: 800;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  border-radius: var(--v3-radius);
  padding: 0.65rem 1.6rem;
  box-shadow: none;
}
html[data-theme] .btn-cyber {
  background: var(--v3-orange);
  color: var(--v3-black) !important;
  border: 2px solid var(--v3-orange);
}
html[data-theme] .btn-cyber::before { display: none; }
html[data-theme] .btn-cyber:hover,
html[data-theme] .btn-cyber:focus-visible {
  background: var(--v3-black);
  border-color: var(--v3-black);
  color: var(--v3-yellow) !important;
  transform: translateY(-2px);
  box-shadow: 0 10px 24px rgba(11, 11, 11, 0.18);
}
html[data-theme="dark"] .btn-cyber:hover,
html[data-theme="dark"] .btn-cyber:focus-visible {
  background: var(--v3-yellow);
  border-color: var(--v3-yellow);
  color: var(--v3-black) !important;
}
html[data-theme] .btn-cyber-outline {
  background: transparent;
  color: var(--text-primary) !important;
  border: 2px solid var(--text-primary);
}
html[data-theme] .btn-cyber-outline:hover,
html[data-theme] .btn-cyber-outline:focus-visible {
  background: var(--text-primary);
  color: var(--bg-primary) !important;
  box-shadow: none;
  transform: translateY(-2px);
}
html[data-theme] .btn-cyber-sm,
html[data-theme] .btn-cyber.btn-sm,
html[data-theme] .btn-cyber-outline.btn-sm { font-size: 0.9rem; padding: 0.4rem 1rem; }
html[data-theme] .btn-cyber.btn-lg,
html[data-theme] .btn-cyber-outline.btn-lg { font-size: 1.1rem; padding: 0.8rem 2rem; }
html[data-theme] .cyber-nav .btn-cyber-outline {
  color: var(--v3-cream) !important;
  border-color: rgba(255, 248, 231, 0.6);
}
html[data-theme] .cyber-nav .btn-cyber-outline:hover {
  background: var(--v3-cream);
  color: var(--v3-black) !important;
}
html[data-theme] .cyber-nav .btn-cyber:hover {
  background: var(--v3-yellow);
  border-color: var(--v3-yellow);
  color: var(--v3-black) !important;
}
html[data-theme] .btn-primary {
  --bs-btn-bg: var(--v3-orange); --bs-btn-border-color: var(--v3-orange); --bs-btn-color: var(--v3-black);
  --bs-btn-hover-bg: var(--v3-black); --bs-btn-hover-border-color: var(--v3-black); --bs-btn-hover-color: var(--v3-yellow);
  --bs-btn-active-bg: var(--v3-black); --bs-btn-active-color: var(--v3-yellow);
}

/* ── Formulaires ──────────────────────────────────────────────────────────── */
html[data-theme] .form-control,
html[data-theme] .form-select {
  border-radius: var(--v3-radius);
  border-color: var(--border-color);
}
html[data-theme] .form-control:focus,
html[data-theme] .form-select:focus,
html[data-theme] .form-check-input:focus {
  border-color: var(--v3-orange);
  box-shadow: 0 0 0 0.2rem rgba(254, 93, 3, 0.18);
}
html[data-theme] .form-check-input:checked { background-color: var(--v3-orange); border-color: var(--v3-orange); }
html[data-theme] .form-label { font-weight: 600; }

/* ── Hero d'accueil ───────────────────────────────────────────────────────── */
html[data-theme] .hero-section { background: var(--v3-yellow); }
html[data-theme] .hero-section .hero-bg {
  /* voile dégradé au-dessus du motif : il reste une texture (règle de la charte) */
  background:
    linear-gradient(90deg,
      rgba(255, 235, 0, 0.96) 0%,
      rgba(255, 235, 0, 0.82) 34%,
      rgba(255, 200, 20, 0.55) 58%,
      rgba(254, 120, 3, 0.45) 80%,
      rgba(254, 93, 3, 0.40) 100%),
    var(--v3-pattern) right center / cover no-repeat,
    var(--v3-grad);
}
html[data-theme] .hero-section .hero-grid,
html[data-theme] .hero-section .hero-particles { display: none; }
html[data-theme] .hero-section .hero-bg::after {
  /* fondu vers la section suivante */
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 6px;
  background: var(--v3-black);
}
@media (max-width: 991.98px) {
  html[data-theme] .hero-section .hero-bg {
    background:
      linear-gradient(180deg, rgba(255, 235, 0, 0.55) 0%, rgba(255, 235, 0, 0) 55%),
      var(--v3-gradient-portrait) center bottom / cover no-repeat,
      var(--v3-grad-diag);
  }
}

html[data-theme] .hero-section .hero-badge {
  background: var(--v3-black);
  border: 0;
  color: var(--v3-yellow);
  border-radius: 2px;
  font-family: var(--font-heading);
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 0.4rem 0.9rem;
}
html[data-theme] .hero-section .badge-dot { background: var(--v3-orange); }

html[data-theme] .hero-section .hero-title {
  font-family: var(--font-heading);
  font-weight: 800;
  text-transform: uppercase;
  font-size: clamp(3rem, 6.6vw, 6.2rem) !important;
  line-height: 0.88;
  letter-spacing: -0.005em;
  color: var(--v3-black);
  margin-bottom: 1.25rem;
}
html[data-theme] .hero-section .hero-title .hero-t2 {
  display: inline-block;
  align-self: flex-start;
  background: var(--v3-black);
  color: var(--v3-yellow);
  padding: 0.06em 0.22em 0.02em;
  margin-top: 0.12em;
  font-size: 0.62em;
  letter-spacing: 0.02em;
}
html[data-theme] .hero-section .hero-title .hero-t3 {
  font-size: 0.34em;
  letter-spacing: 0.08em;
  color: var(--v3-black);
  margin-top: 0.45em;
}

html[data-theme] .hero-section .hero-title .hero-t3b { color: var(--v3-black); }
html[data-theme] .hero-section .hero-content { padding-block: 2.5rem 3.5rem; }
html[data-theme] .hero-section .hero-scroll-hint { display: none; }

/* Rappel des éditions précédentes sous le badge */
html[data-theme] .hero-heritage {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.6rem;
  margin: -0.6rem 0 1.4rem;
  padding: 0.3rem 0.8rem;
  border-left: 3px solid var(--v3-black);
  font-family: var(--font-mono);
  font-size: 0.8rem;
  color: var(--v3-black);
  text-decoration: none;
  background: rgba(255, 248, 231, 0.45);
}
html[data-theme] .hero-heritage:hover { background: var(--v3-cream); color: var(--v3-black); }
html[data-theme] .hero-heritage .hh-label { opacity: 0.7; }
html[data-theme] .hero-heritage .hh-item { font-weight: 600; }
html[data-theme] .hero-heritage .hh-item + .hh-item::before { content: '→ '; opacity: 0.6; }
html[data-theme] .hero-heritage i { font-size: 0.7rem; opacity: 0.6; }
html[data-theme] .hbanner-text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
@media (max-width: 575.98px) {
  html[data-theme] .hbanner-prompt { display: none; }
  html[data-theme] .hacker-banner { font-size: 0.7rem; }
  html[data-theme] .countdown-card { padding: 1.75rem 1rem 1.5rem; }
  html[data-theme] .countdown-card .ct-val { font-size: 2.5rem; min-width: 2ch; }
  html[data-theme] .countdown-card .ct-sep { font-size: 1.4rem; margin: 0 0.1rem; }
  html[data-theme] .countdown-card .ct-label { font-size: 0.58rem; letter-spacing: 0.06em; }
  html[data-theme] .countdown-label { font-size: 0.9rem; letter-spacing: 0.1em; }
  html[data-theme] .hero-section .hero-title .hero-t3 { font-size: 0.42em; }
}
html[data-theme] .hero-section .hack-begin-wrap { color: var(--v3-black); font-size: clamp(1rem, 2.2vw, 1.35rem); }
html[data-theme] .hero-section .hack-begin-prefix { color: var(--v3-orange-ink); opacity: 1; }
html[data-theme] .hero-section .hack-begin-text { color: var(--v3-black); }
html[data-theme] .hero-section .hack-begin-cursor { background: var(--v3-orange); }

html[data-theme] .hero-section .hero-subtitle {
  color: #1E1B16;
  font-size: 1.15rem;
  line-height: 1.7;
  max-width: 560px;
}
html[data-theme] .hero-section .cyber-tag {
  background: transparent;
  border: 1.5px solid var(--v3-black);
  color: var(--v3-black);
  border-radius: 2px;
  font-weight: 600;
}
html[data-theme] .hero-section .cyber-tag i { color: var(--v3-black); }
html[data-theme] .hero-section .btn-cyber {
  background: var(--v3-black);
  border-color: var(--v3-black);
  color: var(--v3-yellow) !important;
}
html[data-theme] .hero-section .btn-cyber:hover {
  background: var(--v3-orange);
  border-color: var(--v3-orange);
  color: var(--v3-black) !important;
}
html[data-theme] .hero-section .btn-cyber-outline {
  color: var(--v3-black) !important;
  border-color: var(--v3-black);
}
html[data-theme] .hero-section .btn-cyber-outline:hover {
  background: var(--v3-black);
  color: var(--v3-yellow) !important;
}
html[data-theme] .hero-section .btn-outline-secondary.disabled {
  color: var(--v3-black);
  border-color: rgba(11, 11, 11, 0.4);
}
html[data-theme] .hero-scroll-hint span { color: var(--v3-black); }
html[data-theme] .hero-scroll-hint .scroll-arrow { border-color: var(--v3-black); }

/* Compte à rebours : carte noire */
html[data-theme] .countdown-card {
  background: var(--v3-black);
  border: 0;
  border-radius: var(--v3-radius);
  box-shadow: 0 24px 60px rgba(11, 11, 11, 0.28);
  padding: 2.25rem 2rem 2rem;
}
html[data-theme] .countdown-card::before { height: 5px; background: var(--v3-grad); }
html[data-theme] .countdown-label {
  color: var(--v3-yellow);
  font-family: var(--font-heading);
  font-size: 1.05rem;
  letter-spacing: 0.16em;
}
html[data-theme] .countdown-edition {
  font-family: var(--font-heading);
  font-weight: 800;
  text-transform: uppercase;
  color: var(--v3-cream);
  font-size: 1.6rem;
  line-height: 1;
  margin-bottom: 1.25rem;
}
html[data-theme] .countdown-edition span { color: var(--v3-orange); }
html[data-theme] .countdown-card .ct-val {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 3.6rem;
  color: var(--v3-cream);
}
html[data-theme] .countdown-card .ct-label { color: rgba(255, 248, 231, 0.6); }
html[data-theme] .countdown-card .ct-sep { color: var(--v3-orange); font-family: var(--font-heading); }
html[data-theme] .countdown-dates {
  color: rgba(255, 248, 231, 0.75);
  border-top: 1px solid rgba(255, 248, 231, 0.12);
  padding-top: 1rem;
  margin-top: 1.25rem;
  font-size: 0.85rem;
}
html[data-theme] .countdown-dates i { color: var(--v3-joj); }

/* Intro : écran jaune → orange au lieu de la grille néon */
html[data-theme] #introOverlay { background: var(--v3-black); }

/* ── Sections ─────────────────────────────────────────────────────────────── */
html[data-theme] .section-badge {
  background: transparent;
  border: 0;
  border-radius: 0;
  color: var(--cwg-cyan);
  font-family: var(--font-body);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  padding: 0;
  margin-bottom: 0.6rem;
}
html[data-theme] .section-badge::after {
  content: '';
  display: block;
  width: 56px;
  height: 4px;
  margin-top: 0.45rem;
  background: var(--v3-orange);
}
html[data-theme] .text-center .section-badge::after,
html[data-theme] .section-header.text-center .section-badge::after { margin-inline: auto; }
html[data-theme] .section-title,
html[data-theme] .cta-title,
html[data-theme] .page-hero-title {
  font-family: var(--font-heading);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.005em;
  line-height: 1;
}
html[data-theme] .section-title { font-size: clamp(2rem, 4.2vw, 3.3rem); }
html[data-theme] .bg-dark-subtle { background-color: var(--bs-dark-subtle-bg) !important; }

/* Bande de chiffres : noire, chiffres jaunes */
html[data-theme] .stats-section {
  background: var(--v3-black);
  border: 0;
  position: relative;
}
html[data-theme] .stats-section .stat-icon  { color: var(--v3-orange); }
html[data-theme] .stats-section .stat-value { color: var(--v3-yellow); font-family: var(--font-heading); font-size: 3.4rem; }
html[data-theme] .stats-section .stat-label { color: rgba(255, 248, 231, 0.7); }

/* Cartes */
html[data-theme] :is(.news-card, .session-card, .speaker-card, .stat-card, .auth-card, .dashboard-card, .profile-card, .cyber-card, .card, .faq-item, .org-card, .partner-card, .lb-upcoming-card, .gallery-item) {
  border-radius: var(--v3-radius);
}
html[data-theme] :is(.news-card, .session-card, .speaker-card, .org-card, .lb-upcoming-card):hover {
  border-color: var(--v3-orange);
  box-shadow: var(--shadow-card);
}
html[data-theme] .session-track,
html[data-theme] .news-date { color: var(--cwg-cyan); }
html[data-theme] .news-title,
html[data-theme] .session-title { font-family: var(--font-heading); font-weight: 700; font-size: 1.35rem; line-height: 1.15; }

/* Tableaux */
html[data-theme] .cyber-table thead th {
  font-family: var(--font-heading);
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  background: var(--v3-black);
  color: var(--v3-cream);
  border-color: var(--v3-black);
}
html[data-theme] .score-val { color: var(--cwg-cyan); font-family: var(--font-heading); font-weight: 800; font-size: 1.15rem; }

/* Accordéons (FAQ) */
html[data-theme] .accordion-button:not(.collapsed),
html[data-theme] .accordion-button:not(.collapsed) * {
  background-color: var(--v3-yellow);
  color: var(--v3-black) !important;
  box-shadow: none;
}
html[data-theme] .accordion-button { font-size: 1.1rem; }
html[data-theme] .accordion-button:focus { box-shadow: 0 0 0 0.2rem rgba(254, 93, 3, 0.2); }

/* Pagination */
html[data-theme] .page-link { color: var(--text-primary); border-color: var(--border-color); }
html[data-theme] .page-item.active .page-link { background: var(--v3-black); border-color: var(--v3-black); color: var(--v3-yellow); }

/* Édition précédente : bloc « archive » sobre */
html[data-theme] .prev-stat .ps-val { font-family: var(--font-heading); color: var(--cwg-cyan); }
html[data-theme] .winner-rank.rank-1 { background: var(--v3-yellow); color: var(--v3-black); }

/* ── En-tête des pages internes : bande noire + motif en texture ──────────── */
html[data-theme] .page-hero {
  background: var(--v3-black);
  border-bottom: 0;
}
html[data-theme] .page-hero::before {
  background: var(--v3-pattern-sm) right center / cover no-repeat;
  opacity: 0.55;
  -webkit-mask-image: linear-gradient(90deg, transparent 20%, #000 85%);
          mask-image: linear-gradient(90deg, transparent 20%, #000 85%);
}
html[data-theme] .page-hero::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 5px;
  background: var(--v3-grad);
}
html[data-theme] .page-hero .page-hero-title { color: var(--v3-cream); font-size: clamp(2.2rem, 5vw, 3.8rem); }
html[data-theme] .page-hero .page-hero-subtitle,
html[data-theme] .page-hero p { color: rgba(255, 248, 231, 0.75); }
html[data-theme] .page-hero .section-badge { color: var(--v3-yellow); }
/* Pages « landing » (CTF, Bug Bounty) qui réutilisent les classes du hero dans .page-hero */
html[data-theme] .page-hero .hero-title {
  color: var(--v3-cream);
  font-family: var(--font-heading);
  font-weight: 800;
  text-transform: uppercase;
  font-size: clamp(2.6rem, 6vw, 5rem);
  line-height: 0.95;
}
html[data-theme] .page-hero .hero-subtitle { color: rgba(255, 248, 231, 0.8); }
html[data-theme] .page-hero .hero-badge {
  background: var(--v3-yellow);
  border: 0;
  color: var(--v3-black);
  border-radius: 2px;
  font-family: var(--font-heading);
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
html[data-theme] .page-hero .hero-badge .badge-dot { background: var(--v3-orange); }
html[data-theme] .page-hero .breadcrumb-item,
html[data-theme] .page-hero .breadcrumb-item a { color: rgba(255, 248, 231, 0.7); }

/* ── Appel à l'action : dégradé de la charte + motif ──────────────────────── */
html[data-theme] .cta-section {
  background: var(--v3-grad-diag);
  color: var(--v3-black);
}
html[data-theme] .cta-section .cta-bg {
  background: var(--v3-pattern) center / cover no-repeat;
  opacity: 0.5;
  -webkit-mask-image: radial-gradient(ellipse 70% 90% at 50% 50%, transparent 30%, #000 80%);
          mask-image: radial-gradient(ellipse 70% 90% at 50% 50%, transparent 30%, #000 80%);
}
html[data-theme] .cta-section .cta-title { color: var(--v3-black); font-size: clamp(2.2rem, 5vw, 4rem); }
html[data-theme] .cta-section .cta-subtitle { color: #1E1B16; }
html[data-theme] .cta-section .btn-cyber { background: var(--v3-black); border-color: var(--v3-black); color: var(--v3-yellow) !important; }
html[data-theme] .cta-section .btn-cyber:hover { background: var(--v3-cream); border-color: var(--v3-cream); color: var(--v3-black) !important; }
html[data-theme] .cta-section .btn-cyber-outline { color: var(--v3-black) !important; border-color: var(--v3-black); }
html[data-theme] .cta-section .btn-cyber-outline:hover { background: var(--v3-black); color: var(--v3-yellow) !important; }
html[data-theme] .cta-section .btn-outline-secondary { color: var(--v3-black); border-color: rgba(11, 11, 11, 0.4); }

/* ── Pied de page : noir, motif discret ───────────────────────────────────── */
html[data-theme] .cyber-footer {
  background: var(--v3-black);
  border-top: 0;
  color: rgba(255, 248, 231, 0.7);
}
html[data-theme] .cyber-footer::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--v3-pattern-sm) right center / cover no-repeat;
  opacity: 0.16;
  pointer-events: none;
  -webkit-mask-image: linear-gradient(90deg, transparent 35%, #000 100%);
          mask-image: linear-gradient(90deg, transparent 35%, #000 100%);
}
html[data-theme] .cyber-footer .container { position: relative; }
html[data-theme] .footer-glow { height: 5px; background: var(--v3-grad); }
html[data-theme] .cyber-footer .footer-title { color: var(--v3-cream); font-family: var(--font-heading); text-transform: uppercase; }
html[data-theme] .cyber-footer .footer-title .text-cyber { color: var(--v3-yellow) !important; }
html[data-theme] .cyber-footer .footer-heading { color: var(--v3-yellow); font-size: 0.95rem; letter-spacing: 0.14em; }
html[data-theme] .cyber-footer :is(p, .footer-desc, .footer-copyright, .footer-edition) { color: rgba(255, 248, 231, 0.62); }
html[data-theme] .cyber-footer .footer-links a { color: rgba(255, 248, 231, 0.72); }
html[data-theme] .cyber-footer .footer-links a:hover { color: var(--v3-yellow); }
html[data-theme] .cyber-footer .social-link { border-color: rgba(255, 248, 231, 0.18); color: rgba(255, 248, 231, 0.75); border-radius: var(--v3-radius); }
html[data-theme] .cyber-footer .social-link:hover { background: var(--v3-yellow); border-color: var(--v3-yellow); color: var(--v3-black); }
html[data-theme] .cyber-footer .footer-bottom { border-top-color: rgba(255, 248, 231, 0.12); }
html[data-theme] .cyber-footer .text-cyber { color: var(--v3-orange) !important; }
/* v3 logo (white, transparent): on its own line so the edition tag never overflows on mobile */
html[data-theme] .cyber-footer .footer-logo { display: block; height: 80px; width: auto; margin-bottom: 1rem; }
html[data-theme] .nav-logo { height: 48px; width: auto; }

html[data-theme] .footer-edition-tag {
  display: inline-block;
  margin-top: 0.25rem;
  font-family: var(--font-heading);
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--v3-yellow);
}

/* ── Chapô de section ─────────────────────────────────────────────────────── */
html[data-theme] .section-lead {
  max-width: 760px;
  font-size: 1.08rem;
  line-height: 1.75;
  color: var(--text-secondary);
}

/* ── Frise des éditions ───────────────────────────────────────────────────── */
html[data-theme] .editions-section { background: var(--bg-primary); }
html[data-theme] .editions-timeline {
  position: relative;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 1.5rem;
}
html[data-theme] .editions-timeline::before {
  /* fil conducteur entre les éditions */
  content: '';
  position: absolute;
  left: 2%; right: 2%; top: 46px;
  height: 3px;
  background: var(--v3-grad);
  opacity: 0.55;
}
@media (max-width: 767.98px) { html[data-theme] .editions-timeline::before { display: none; } }
html[data-theme] .edition-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
  padding: 1.5rem 1.5rem 1.35rem;
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--v3-radius);
  box-shadow: var(--shadow-card);
}
html[data-theme] .edition-num {
  display: inline-flex;
  align-items: baseline;
  gap: 0.35rem;
  align-self: flex-start;
  padding: 0.2rem 0.75rem 0.1rem;
  background: var(--v3-cream-2);
  border: 1px solid var(--border-color);
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 2.1rem;
  line-height: 1;
  color: var(--text-primary);
}
html[data-theme] .edition-num span { font-size: 0.95rem; letter-spacing: 0.1em; text-transform: uppercase; opacity: 0.65; }
html[data-theme] .edition-status {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-muted);
}
html[data-theme] .edition-city { margin: 0.15rem 0 0.1rem; font-size: 2rem; text-transform: uppercase; }
html[data-theme] .edition-date { font-size: 0.88rem; color: var(--text-muted); }
/* Participants · teams · audience stay on one line; long labels ("compétiteurs attendus") wrap instead */
html[data-theme] .edition-figures { display: flex; flex-wrap: nowrap; gap: 1.25rem; }
html[data-theme] .edition-figures div { display: flex; flex-direction: column; }
html[data-theme] .edition-figures strong { white-space: nowrap; }
html[data-theme] .edition-figures span { line-height: 1.35; }
html[data-theme] .edition-figures strong { font-family: var(--font-heading); font-size: 2.1rem; font-weight: 800; line-height: 1; color: var(--cwg-cyan); }
html[data-theme] .edition-figures span { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-muted); }
html[data-theme] .edition-desc { font-size: 0.92rem; line-height: 1.65; margin: 0; }
html[data-theme] .edition-link {
  margin-top: auto;
  font-family: var(--font-heading);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--text-primary);
}
html[data-theme] .edition-link:hover { color: var(--cwg-cyan); }
html[data-theme="dark"] .editions-section { background: var(--bg-secondary); }
html[data-theme="dark"] .edition-num { background: #262320; border-color: #332F2B; color: var(--v3-cream); }
html[data-theme="dark"] .edition-card.is-current { background: #1B1916; border-color: #2A2724; }
/* Édition en cours : bloc noir, numéro jaune */
html[data-theme] .edition-card.is-current {
  background: var(--v3-black);
  border-color: var(--v3-black);
  border-top: 5px solid var(--v3-orange);
}
html[data-theme] .edition-card.is-current .edition-num { background: var(--v3-yellow); border-color: var(--v3-yellow); color: var(--v3-black); }
html[data-theme] .edition-card.is-current :is(.edition-city, .edition-link) { color: var(--v3-cream); }
html[data-theme] .edition-card.is-current .edition-status { color: var(--v3-yellow); }
html[data-theme] .edition-card.is-current :is(.edition-date, .edition-figures span, .edition-desc) { color: rgba(255, 248, 231, 0.7); }
html[data-theme] .edition-card.is-current .edition-figures strong { color: var(--v3-yellow); }
html[data-theme] .edition-card.is-current .edition-link:hover { color: var(--v3-yellow); }

/* ── Édition 3 · Flame Tour (section noire) ───────────────────────────────── */
html[data-theme] .flame-section {
  position: relative;
  background: var(--v3-black);
  color: var(--v3-cream);
  overflow: hidden;
}
html[data-theme] .flame-section::before {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--v3-pattern-sm) right center / cover no-repeat;
  opacity: 0.1;
  -webkit-mask-image: linear-gradient(90deg, transparent 40%, #000 100%);
          mask-image: linear-gradient(90deg, transparent 40%, #000 100%);
  pointer-events: none;
}
html[data-theme] .flame-section .container { position: relative; }
html[data-theme] .flame-section :is(.section-title, h2, h3) { color: var(--v3-cream); }
html[data-theme] .flame-section .section-badge { color: var(--v3-yellow); }
html[data-theme] .flame-section .section-lead { color: rgba(255, 248, 231, 0.78); }
html[data-theme] .flame-poster {
  margin: 0;
  border-radius: var(--v3-radius);
  overflow: hidden;
  box-shadow: 0 30px 70px rgba(0, 0, 0, 0.55);
  outline: 5px solid rgba(255, 248, 231, 0.06);
}
html[data-theme] .flame-poster img { display: block; width: 100%; height: auto; }
html[data-theme] .flame-axes {
  list-style: none;
  padding: 0;
  margin: 1.25rem 0 0.5rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.4rem;
}
html[data-theme] .flame-axes li {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 1.2rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--v3-yellow);
}
html[data-theme] .flame-axes li::before { content: '■'; color: var(--v3-orange); font-size: 0.7em; margin-right: 0.45rem; vertical-align: 0.12em; }
html[data-theme] .track-card {
  height: 100%;
  padding: 1.25rem 1.3rem;
  background: #171614;
  border: 1px solid #2A2724;
  border-top: 4px solid var(--v3-orange);
  border-radius: var(--v3-radius);
}
html[data-theme] .track-card.track-range { border-top-color: var(--v3-yellow); }
html[data-theme] .track-head {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 1.45rem;
  text-transform: uppercase;
  color: var(--v3-cream);
  margin-bottom: 0.5rem;
}
html[data-theme] .track-park .track-head i { color: var(--v3-orange); }
html[data-theme] .track-range .track-head i { color: var(--v3-yellow); }
html[data-theme] .track-card p { color: rgba(255, 248, 231, 0.78); font-size: 0.92rem; margin-bottom: 0.6rem; }
html[data-theme] .track-card ul { margin: 0; padding-left: 1.1rem; }
html[data-theme] .track-card li { color: rgba(255, 248, 231, 0.7); font-size: 0.86rem; margin-bottom: 0.25rem; }
html[data-theme] .flame-extras { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-top: 1.25rem; }
html[data-theme] .flame-extras span {
  padding: 0.35rem 0.8rem;
  border: 1px solid rgba(255, 248, 231, 0.2);
  border-radius: 2px;
  font-size: 0.85rem;
  color: var(--v3-cream);
}
html[data-theme] .flame-extras i { color: var(--v3-orange); margin-right: 0.35rem; }
html[data-theme] .flame-section .btn-cyber:hover { background: var(--v3-yellow); border-color: var(--v3-yellow); color: var(--v3-black) !important; }

/* ── Partenaires (section d'accueil) : fond uni, cartes nettes ───────────── */
html[data-theme] section.partners-section-v2 { background: var(--bg-secondary) !important; }
html[data-theme] section.partners-section-v2::before,
html[data-theme] section.partners-section-v2::after,
html[data-theme] section.partners-section-v2 > .pc-scanline,
html[data-theme] section.partners-section-v2 > .pc-starfield,
html[data-theme] section.partners-section-v2 .pc-network-nodes,
html[data-theme] section.partners-section-v2 .pc-bottom-glow { display: none !important; }
html[data-theme] section.partners-section-v2 .pc-supra-title {
  color: var(--cwg-cyan) !important;
  font-family: var(--font-body) !important;
  font-size: 0.78rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.14em !important;
  animation: none !important;
}
html[data-theme] section.partners-section-v2 .pc-main-title {
  color: var(--text-primary) !important;
  font-family: var(--font-heading) !important;
  font-weight: 800 !important;
  text-transform: uppercase;
}
html[data-theme] section.partners-section-v2 .pc-label {
  color: var(--v3-cream) !important;
  background: var(--v3-black) !important;
  border: 0 !important;
  border-radius: 2px !important;
  font-family: var(--font-heading) !important;
  font-size: 0.85rem !important;
  letter-spacing: 0.12em !important;
}
html[data-theme] section.partners-section-v2 .pc-label-wrap::before,
html[data-theme] section.partners-section-v2 .pc-label-wrap::after { background: var(--border-color) !important; }
html[data-theme] section.partners-section-v2 :is(.pc-card, .pc-grid > .pc-card, .pc-card-featured) {
  background: var(--bg-card) !important;
  border: 1px solid var(--border-color) !important;
  border-bottom: 3px solid var(--v3-orange) !important;
  border-radius: var(--v3-radius) !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  animation: none !important;
}
html[data-theme] section.partners-section-v2 :is(.pc-card, .pc-card-featured)::before,
html[data-theme] section.partners-section-v2 :is(.pc-card, .pc-card-featured)::after,
html[data-theme] section.partners-section-v2 [class^="pc-corner-"] { display: none !important; }
html[data-theme] section.partners-section-v2 :is(.pc-card, .pc-grid > .pc-card, .pc-card-featured):hover {
  border-color: var(--v3-orange) !important;
  background: var(--bg-card) !important;
  box-shadow: var(--shadow-card) !important;
  transform: translateY(-3px) !important;
}
html[data-theme] section.partners-section-v2 :is(.pc-name, .pc-name-featured) {
  color: var(--text-primary) !important;
  font-family: var(--font-heading) !important;
  font-weight: 700 !important;
}
html[data-theme] section.partners-section-v2 .pc-inline-logo,
html[data-theme] section.partners-section-v2 .pc-card:hover .pc-inline-logo,
html[data-theme] section.partners-section-v2 .pc-card-featured:hover .pc-inline-logo {
  filter: none !important;
  mix-blend-mode: multiply;
}
html[data-theme="dark"] section.partners-section-v2 .pc-inline-logo {
  mix-blend-mode: normal;
  background: #fff;
  padding: 3px 5px;
  border-radius: 3px;
}

/* ── Authentification ─────────────────────────────────────────────────────── */
html[data-theme] .auth-section { background: var(--bg-primary); }
html[data-theme] .auth-bg {
  background: var(--v3-pattern) right center / cover no-repeat;
  opacity: 0.22;
  -webkit-mask-image: linear-gradient(90deg, transparent 45%, #000 100%);
          mask-image: linear-gradient(90deg, transparent 45%, #000 100%);
}
html[data-theme] .auth-grid { display: none; }
html[data-theme] .auth-card {
  border-radius: var(--v3-radius);
  border-top: 5px solid var(--v3-orange);
}
/* Logos officiels blancs : posés sur une pastille noire, jamais recolorés */
html[data-theme] .auth-logo img {
  box-sizing: content-box;
  background: var(--v3-black);
  padding: 10px 16px;
  border-radius: var(--v3-radius);
}
html[data-theme] .auth-title { text-transform: uppercase; font-size: 2rem; }
html[data-theme] .participant-type-card {
  border: 2px solid var(--border-color);
  background: var(--bg-primary);
  border-radius: var(--v3-radius);
}
html[data-theme] .participant-type-card i { color: var(--text-muted); }
html[data-theme] .participant-type-card:hover { border-color: var(--v3-joj); background: var(--bg-card-hover); }
html[data-theme] .participant-type-card.active {
  border-color: var(--v3-orange);
  background: rgba(255, 235, 0, 0.14);
  box-shadow: none;
}
html[data-theme] .participant-type-card.active i { color: var(--v3-orange-deep); }

/* ── Classement ───────────────────────────────────────────────────────────── */
html[data-theme] :is(.domain-tag, .podium-domain-badge) { border-radius: 2px; font-weight: 700; }
html[data-theme="light"] :is(.domain-ctf, .podium-domain-badge) { background: rgba(254, 93, 3, 0.12); color: var(--v3-orange-ink); border-color: rgba(254, 93, 3, 0.4); }
html[data-theme="light"] .domain-bug_bounty { background: rgba(255, 177, 20, 0.2); color: #8A5A00; border-color: rgba(255, 177, 20, 0.6); }
html[data-theme="light"] .domain-overall { background: var(--v3-black); color: var(--v3-yellow); border-color: var(--v3-black); }
html[data-theme="light"] .podium-domain-gold { background: rgba(255, 235, 0, 0.35); color: var(--v3-black); border-color: rgba(11, 11, 11, 0.25); }
html[data-theme] .podium-team { font-family: var(--font-heading); font-weight: 800; font-size: 1.15rem; text-transform: uppercase; }
html[data-theme] .podium-score { font-family: var(--font-heading); font-weight: 800; font-size: 1.4rem; color: var(--cwg-cyan); }

/* ── Divers ───────────────────────────────────────────────────────────────── */
html[data-theme] .cookie-notice {
  background: var(--v3-black);
  color: var(--v3-cream);
  border: 0;
  border-top: 4px solid var(--v3-orange);
  border-radius: var(--v3-radius);
}
html[data-theme] .cookie-notice p,
html[data-theme] .cookie-notice span { color: rgba(255, 248, 231, 0.8); }
html[data-theme] .cookie-notice a { color: var(--v3-yellow); }
html[data-theme] .cookie-notice .btn-cyber-outline { color: var(--v3-cream) !important; border-color: rgba(255, 248, 231, 0.5); }

html[data-theme] .badge.bg-primary { background: var(--v3-orange) !important; color: var(--v3-black); }
html[data-theme] .alert { border-radius: var(--v3-radius); }
html[data-theme] .cyber-modal { border-radius: var(--v3-radius); border-top: 4px solid var(--v3-orange); }

/* Mouvement réduit */
@media (prefers-reduced-motion: reduce) {
  html[data-theme] *, html[data-theme] *::before, html[data-theme] *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

/* ── Espace joueur (tableau de bord, profil, badge) ───────────────────────── */
html[data-theme] .dashboard-section { padding-top: calc(var(--nav-h) + var(--banner-h) + 1rem); }
html[data-theme] .dash-header {
  padding: 1.5rem 1.75rem;
  background: var(--v3-black);
  border-radius: var(--v3-radius);
  border-bottom: 5px solid transparent;
  border-image: var(--v3-grad) 1;
  align-items: center;
}
html[data-theme] .dash-title {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 2.1rem;
  text-transform: uppercase;
  color: var(--v3-cream);
}
html[data-theme] .dash-title .text-cyber { color: var(--v3-yellow) !important; }
html[data-theme] .dash-avatar-placeholder { background: #1F1D1A; border-color: var(--v3-orange); color: var(--v3-orange); }
html[data-theme] .dash-header :is(.player-type-tag, .badge-tag) {
  border-radius: 2px;
  background: rgba(255, 235, 0, 0.12);
  border: 1px solid rgba(255, 235, 0, 0.35);
  color: var(--v3-yellow);
}
html[data-theme] .dash-header .btn-cyber-outline { color: var(--v3-cream) !important; border-color: rgba(255, 248, 231, 0.55); }
html[data-theme] .dash-header .btn-cyber-outline:hover { background: var(--v3-cream); color: var(--v3-black) !important; }
html[data-theme] .dash-header .btn-cyber:hover { background: var(--v3-yellow); border-color: var(--v3-yellow); color: var(--v3-black) !important; }

html[data-theme] .dash-widget { border-radius: var(--v3-radius); overflow: hidden; }
html[data-theme] :is(.widget-header, .profile-section-title) {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 1.15rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--text-primary);
}
html[data-theme] .widget-header { border-left: 4px solid var(--v3-orange); }

/* Compte à rebours compact (widgets) */
html[data-theme] .countdown-timer-sm {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  gap: 0.75rem;
  padding: 0.5rem 0;
}
html[data-theme] .countdown-timer-sm .ct-unit { display: flex; flex-direction: column; align-items: center; min-width: 4.2rem; }
html[data-theme] .countdown-timer-sm .ct-val { font-family: var(--font-heading); font-weight: 800; font-size: 3rem; line-height: 1; color: var(--text-primary); }
html[data-theme] .countdown-timer-sm .ct-label { font-size: 0.68rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-muted); margin-top: 0.3rem; }
html[data-theme] .countdown-timer-sm .ct-sep { font-family: var(--font-heading); font-size: 2rem; color: var(--v3-orange); line-height: 1.3; }

/* Annonces */
html[data-theme] .ann-item { border-radius: 4px; }
html[data-theme] .ann-info     { background: rgba(255, 177, 20, 0.12); border-color: var(--v3-joj); }
html[data-theme] .ann-warning  { background: rgba(254, 93, 3, 0.1);   border-color: var(--v3-orange); }
html[data-theme] .ann-level { font-family: var(--font-mono); font-size: 0.68rem; font-weight: 700; letter-spacing: 0.1em; color: var(--text-muted); }

/* Accès rapides */
html[data-theme] .quick-link { border-radius: 4px; font-weight: 600; }
html[data-theme] .quick-link:hover { border-color: var(--v3-orange); color: var(--text-primary); background: rgba(255, 235, 0, 0.12); }

/* Mon parcours CWG */
html[data-theme] .dash-edition .de-row { display: flex; gap: 0.9rem; align-items: flex-start; padding: 0.6rem 0; }
html[data-theme] .dash-edition .de-row + .de-row { border-top: 1px dashed var(--border-color); }
html[data-theme] .dash-edition .de-num {
  flex-shrink: 0;
  width: 2.6rem; height: 2.6rem;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-heading); font-weight: 800; font-size: 1.5rem;
  background: var(--bg-secondary); border: 1px solid var(--border-color); color: var(--text-primary);
}
html[data-theme] .dash-edition .de-current .de-num { background: var(--v3-yellow); border-color: var(--v3-yellow); color: var(--v3-black); }
html[data-theme] .dash-edition .de-label { font-size: 0.7rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-muted); }
html[data-theme] .dash-edition .de-name { font-family: var(--font-heading); font-weight: 700; font-size: 1.15rem; line-height: 1.15; color: var(--text-primary); }
html[data-theme] .dash-edition .de-meta { font-size: 0.8rem; color: var(--text-muted); margin-top: 0.2rem; }

/* Profil : champs verrouillés */
html[data-theme] .form-control:disabled,
html[data-theme] .form-control[readonly] { background: var(--bg-secondary); color: var(--text-muted); }

/* Pages sans en-tête (badge, QR…) : ne pas passer sous la navigation */
html[data-theme] #main-content > section.py-5:first-child { padding-top: calc(var(--nav-h) + var(--banner-h) + 2.5rem) !important; }

/* Divers Bootstrap hors palette */
html[data-theme] code { color: var(--v3-orange-ink); }
html[data-theme="dark"] code { color: var(--v3-joj); }
html[data-theme] .btn-outline-info {
  --bs-btn-color: var(--text-primary); --bs-btn-border-color: var(--text-primary);
  --bs-btn-hover-bg: var(--text-primary); --bs-btn-hover-border-color: var(--text-primary); --bs-btn-hover-color: var(--bg-primary);
}

/* Logos officiels (blancs) posés dans le contenu : toujours sur une pastille noire */
html[data-theme] #main-content img[src*="/assets/brand/logo"] {
  box-sizing: content-box;
  background: var(--v3-black);
  padding: 8px 14px;
  border-radius: var(--v3-radius);
  filter: none !important;
}

/* Bandeau « archives de l'édition précédente » */
html[data-theme] .edition-archive-notice {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-top: 2rem;
  padding: 0.9rem 1.25rem;
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-left: 4px solid var(--v3-joj);
  border-radius: var(--v3-radius);
}
html[data-theme] .edition-archive-notice i { font-size: 1.3rem; color: var(--v3-orange); }
html[data-theme] .edition-archive-notice strong { display: block; font-family: var(--font-heading); font-size: 1.15rem; text-transform: uppercase; color: var(--text-primary); }
html[data-theme] .edition-archive-notice span { font-size: 0.9rem; color: var(--text-muted); }
html[data-theme="dark"] .dash-header { background: #171614; border-top: 1px solid #2A2724; }

/* ── Édition précédente : chiffres clés, podium, photos ──────────────────── */
html[data-theme] .prev-edition-section .section-header { margin-bottom: 2rem; }
html[data-theme] .pe-figures {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 1px;
  max-width: 1100px;
  margin: 0 auto;
  background: var(--border-color);
  border: 1px solid var(--border-color);
  border-radius: var(--v3-radius);
  overflow: hidden;
}
html[data-theme] .pe-figure {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  padding: 1.35rem 0.9rem;
  background: var(--bg-card);
  text-align: center;
}
html[data-theme] .pe-figure strong {
  font-family: var(--font-heading);
  font-size: 2.4rem;
  font-weight: 800;
  line-height: 1;
  color: var(--text-primary);
}
html[data-theme] .pe-figure strong::after {
  content: '';
  display: block;
  width: 28px;
  height: 3px;
  margin: 0.5rem auto 0;
  background: #FFB114;
}
html[data-theme] .pe-figure span {
  font-size: 0.74rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-muted);
}
html[data-theme] .pe-card {
  display: flex;
  flex-direction: column;
  padding: 1.5rem;
  background: var(--bg-card);
  border: 1px solid var(--border-color);
  border-radius: var(--v3-radius);
}
html[data-theme] .pe-card-title {
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 1.35rem;
  text-transform: uppercase;
  margin-bottom: 1rem;
}
html[data-theme] .pe-card-title i { color: #E08A00; }
html[data-theme] .pe-rank-list { list-style: none; padding: 0; margin: 0 0 1.25rem; }
html[data-theme] .pe-rank {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  padding: 0.8rem 0;
  border-bottom: 1px solid var(--border-color);
}
html[data-theme] .pe-rank:last-child { border-bottom: 0; }
html[data-theme] .pe-rank-num {
  flex-shrink: 0;
  width: 2.1rem; height: 2.1rem;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-heading);
  font-weight: 800;
  font-size: 1.15rem;
  border-radius: 50%;
  background: var(--bg-secondary);
  color: var(--text-primary);
}
html[data-theme] .pe-rank-gold .pe-rank-num   { background: #FFB114; color: #1A1712; }
html[data-theme] .pe-rank-silver .pe-rank-num { background: #D9D4CA; color: #1A1712; }
html[data-theme] .pe-rank-bronze .pe-rank-num { background: #D8955B; color: #1A1712; }
html[data-theme] .pe-rank-avatar {
  flex-shrink: 0;
  width: 46px; height: 46px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--border-color);
  display: flex; align-items: center; justify-content: center;
  background: var(--bg-secondary);
  color: var(--text-muted);
}
html[data-theme] .pe-rank-body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
html[data-theme] .pe-rank-name { font-weight: 700; font-size: 1.05rem; color: var(--text-primary); }
html[data-theme] .pe-rank-domain { font-size: 0.75rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-muted); }
html[data-theme] .pe-rank-side { display: flex; flex-direction: column; align-items: flex-end; gap: 0.2rem; text-align: right; }
html[data-theme] .pe-rank-score { font-family: var(--font-heading); font-weight: 800; font-size: 1.15rem; color: var(--text-primary); }
html[data-theme] .pe-rank-prize {
  font-size: 0.72rem;
  font-weight: 600;
  padding: 0.12rem 0.5rem;
  border-radius: 2px;
  background: rgba(255, 177, 20, 0.16);
  color: #8A5A00;
  white-space: nowrap;
}
html[data-theme="dark"] .pe-rank-prize { color: #FFB114; }
html[data-theme] .pe-mosaic {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: 118px;
  gap: 0.5rem;
}
html[data-theme] .pe-mosaic-item { display: block; overflow: hidden; border-radius: 4px; }
html[data-theme] .pe-mosaic-main { grid-column: span 2; grid-row: span 2; }
html[data-theme] .pe-mosaic-item img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}
html[data-theme] .pe-mosaic-item:hover img { transform: scale(1.05); }
@media (max-width: 575.98px) {
  html[data-theme] .pe-figure strong { font-size: 1.9rem; }
  html[data-theme] .pe-mosaic { grid-auto-rows: 90px; }
  html[data-theme] .pe-rank-side { display: none; }
}

/* Hero : ligne vide à la place de l'ancien sous-titre (même hauteur qu'une ligne) */
html[data-theme] .hero-section .hero-title .hero-t3-gap { display: block; height: 1.05em; }
html[data-theme] .pe-figures { grid-template-columns: repeat(var(--pe-cols, 4), 1fr); }
html[data-theme] .pe-mosaic { grid-auto-rows: 100px; }
@media (max-width: 767.98px) { html[data-theme] .pe-figures { grid-template-columns: repeat(2, 1fr); } }

/* Classement : les longs noms d'établissements (Éd. 1) ne débordent plus du podium */
html[data-theme] .podium-place { min-width: 0; max-width: 300px; }
html[data-theme] .podium-team { overflow-wrap: anywhere; hyphens: auto; }
@media (max-width: 575.98px) {
  html[data-theme] .podium-place { flex: 1 1 0; }
  html[data-theme] .podium-wrap { gap: .4rem; }
  html[data-theme] .podium-team { font-size: .8rem; }
  html[data-theme] .podium-block { width: 100%; }
}
