/* Koora Games — modern design system.
   Dark default / light optional. Space Grotesk display + Inter body.
   Pill buttons, rounded cards, no gradients. Class names preserved
   so every game page inherits the new look with no markup change. */

@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=Inter:wght@400;500;600;700&display=swap");

/* ----- Theme: dark is default. Add data-theme="light" to <html> to switch. ----- */
:root {
  /* DARK (default) */
  --bg:            #0b0b0d;
  --bg-card:       #16161a;
  --bg-elevated:   #1f1f24;
  --border:        #2a2a2e;
  --border-strong: #3a3a3e;

  --text:          #f5f5f5;
  --text-muted:    #9ca3af;
  --text-subtle:   #6b7280;

  /* Ink = primary pill button surface. Flips with theme. */
  --ink:           #f5f5f5;
  --ink-text:      #0a0a0a;

  --accent:        #a3e635;
  --accent-dark:   #84cc16;
  --accent-ink:    #0a0a0a;
  --pink:          #ec4899;
  --pink-soft:     rgba(236, 72, 153, 0.12);
  --blue:          #2563eb;
  --blue-soft:     rgba(37, 99, 235, 0.12);
  --yellow:        #facc15;

  --ma-red:        var(--accent);
  --ma-red-dark:   var(--accent-dark);
  --ma-red-glow:   transparent;
  --ma-green:      var(--accent);
  --ma-green-dark: var(--accent-dark);
  --ma-green-glow: transparent;
  --ma-gold:       var(--yellow);
  --ma-gold-dark:  #ca8a04;
  --correct:       var(--accent);
  --present:       var(--yellow);
  --absent:        #2a2a2e;

  --shadow-sm:     0 1px 2px rgba(0,0,0,.25);
  --shadow:        0 8px 24px rgba(0,0,0,.4);
  --shadow-lg:     0 20px 40px rgba(0,0,0,.55);
  --shadow-neon:   none;

  --radius-sm:     8px;
  --radius:        16px;
  --radius-lg:     24px;
  --radius-pill:   9999px;

  --font-body:     "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-display:  "Space Grotesk", "Inter", system-ui, sans-serif;

  color-scheme: dark;
}

[data-theme="light"] {
  --bg:            #f7f5f1;
  --bg-card:       #ffffff;
  --bg-elevated:   #ffffff;
  --border:        #e7e4df;
  --border-strong: #d4d1cc;

  --text:          #0a0a0a;
  --text-muted:    #6b7280;
  --text-subtle:   #9ca3af;

  --ink:           #0a0a0a;
  --ink-text:      #ffffff;

  --pink-soft:     #fce7f3;
  --blue-soft:     #dbeafe;
  --absent:        #e5e3de;

  --shadow-sm:     0 1px 2px rgba(10,10,10,.04);
  --shadow:        0 8px 24px rgba(10,10,10,.06);
  --shadow-lg:     0 20px 40px rgba(10,10,10,.08);

  color-scheme: light;
}

/* ----- PITCH: football field stripes ----- */
[data-theme="pitch"] {
  --bg:            #3aaa36;
  --bg-card:       #ffffff;
  --bg-elevated:   #ffffff;
  --border:        rgba(0, 0, 0, 0.08);
  --border-strong: rgba(0, 0, 0, 0.18);

  --text:          #ffffff;
  --text-muted:    rgba(255, 255, 255, 0.82);
  --text-subtle:   rgba(255, 255, 255, 0.6);

  --ink:           #0a0a0a;
  --ink-text:      #ffffff;

  --correct:       #ffffff;
  --present:       #facc15;
  --absent:        rgba(10, 10, 10, 0.7);

  --pink-soft:     rgba(236, 72, 153, 0.18);
  --blue-soft:     rgba(37, 99, 235, 0.18);

  --shadow-sm:     0 1px 2px rgba(0, 0, 0, 0.12);
  --shadow:        0 10px 28px rgba(0, 0, 0, 0.18);
  --shadow-lg:     0 24px 48px rgba(0, 0, 0, 0.25);

  color-scheme: dark;
}
[data-theme="pitch"] body {
  background-image: repeating-linear-gradient(
    to bottom,
    #3aaa36 0 80px,
    #47ae41 80px 160px
  );
  background-attachment: fixed;
}
/* PITCH THEME ─ text-color sanity override.
   Every container that renders with a WHITE background on pitch (i.e.
   anything styled with `background: var(--bg-card)` anywhere in the
   codebase) must redeclare --text / --text-muted / --text-subtle so
   child elements don't inherit the white pitch-root tokens and vanish.
   Keep this list in sync: if you ship a game with a new .xx-result,
   .xx-card, .xx-status etc. backed by var(--bg-card), add it here. */
[data-theme="pitch"] .game-card,
[data-theme="pitch"] .niche-card,
[data-theme="pitch"] .section-tile,
[data-theme="pitch"] .section-roadmap,
[data-theme="pitch"] .career-table,
[data-theme="pitch"] .result-card,
[data-theme="pitch"] .koora-share-box,
[data-theme="pitch"] .autocomplete-list,
[data-theme="pitch"] .guesses-list,
[data-theme="pitch"] .text-input,
[data-theme="pitch"] .wordle-cell,
[data-theme="pitch"] .score-strip__totals,
[data-theme="pitch"] .btn.secondary,
[data-theme="pitch"] .lang-switcher,
/* Trail */
[data-theme="pitch"] .tr-status,
[data-theme="pitch"] .tr-step,
[data-theme="pitch"] .tr-ac,
[data-theme="pitch"] .tr-result,
[data-theme="pitch"] .tr-how,
/* Derby */
[data-theme="pitch"] .dr-stat,
[data-theme="pitch"] .dr-btn,
[data-theme="pitch"] .dr-overlay,
[data-theme="pitch"] .dr-result,
/* Born Today */
[data-theme="pitch"] .bt-card,
[data-theme="pitch"] .bt-status,
[data-theme="pitch"] .bt-ac,
[data-theme="pitch"] .bt-result,
/* Imposter */
[data-theme="pitch"] .im-stat,
[data-theme="pitch"] .im-card,
[data-theme="pitch"] .im-result,
[data-theme="pitch"] .im-how,
/* Mastermind */
[data-theme="pitch"] .mm-status,
[data-theme="pitch"] .mm-row,
[data-theme="pitch"] .mm-ac,
[data-theme="pitch"] .mm-result,
[data-theme="pitch"] .mm-how,
/* Goalless */
[data-theme="pitch"] .gl-stat,
[data-theme="pitch"] .gl-slot,
[data-theme="pitch"] .gl-result,
[data-theme="pitch"] .gl-how,
/* Tenaball */
[data-theme="pitch"] .tb-nav,
[data-theme="pitch"] .tb-status__item,
[data-theme="pitch"] .tb-slot,
[data-theme="pitch"] .tb-result,
[data-theme="pitch"] .tb-how,
/* Guess the Club */
[data-theme="pitch"] .gc-mode,
[data-theme="pitch"] .gc-crest,
[data-theme="pitch"] .gc-search,
[data-theme="pitch"] .gc-ac,
/* Box2Box */
[data-theme="pitch"] .b2b-featured,
/* Tiki-Taka-Toe */
[data-theme="pitch"] .ttt-mode,
[data-theme="pitch"] .ttt-settings,
[data-theme="pitch"] .ttt-score,
[data-theme="pitch"] .ttt-round-banner,
[data-theme="pitch"] .ttt-modal__box,
[data-theme="pitch"] .ttt-result,
[data-theme="pitch"] .ttt-lobby,
/* Botola Pro Simulator */
[data-theme="pitch"] #standings-table,
[data-theme="pitch"] .botola-pager,
[data-theme="pitch"] .matchday h3,
[data-theme="pitch"] .fixture {
  --text:        #0a0a0a;
  --text-muted:  #4b5563;
  --text-subtle: #6b7280;
  color: var(--text);
}
[data-theme="pitch"] .wordle-cell.absent,
[data-theme="pitch"] .kb-key.correct,
[data-theme="pitch"] .kb-key.present,
[data-theme="pitch"] .wordle-cell.correct,
[data-theme="pitch"] .wordle-cell.present {
  color: var(--accent-ink);
}
[data-theme="pitch"] .wordle-cell.absent {
  color: #ffffff;
}
[data-theme="pitch"] .kb-key:not(.correct):not(.present):not(.absent) {
  --text:   #0a0a0a;
  color:    #0a0a0a;
  background: #ffffff;
  border-color: rgba(0,0,0,.1);
}
[data-theme="pitch"] .text-input::placeholder {
  color: #9ca3af;
}
[data-theme="pitch"] .site-footer {
  color: rgba(255,255,255,0.9);
  background: transparent;
  border-top-color: rgba(255,255,255,0.2);
}

/* ----- Reset + base ----- */
* { box-sizing: border-box; margin: 0; padding: 0; }
[hidden] { display: none !important; }

html, body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-body);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

body {
  font-size: 15px;
  line-height: 1.5;
  font-weight: 500;
}

a { color: var(--text); text-decoration: none; }
a:hover { color: var(--text); }

button {
  font-family: inherit;
  font-size: inherit;
  border: none;
  background: none;
  cursor: pointer;
  color: inherit;
}

h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--text);
}

/* ----- Header ----- */
.site-header {
  background: color-mix(in srgb, var(--bg) 85%, transparent);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--border);
  padding: 6px 24px;
  position: sticky;
  top: 0;
  z-index: 50;
}
.site-header::after { content: none; }

.site-header .inner {
  max-width: 1240px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 18px;
  flex-wrap: wrap;
}
/* Discord pill + theme toggle pinned to the far right. The first
   element with margin-left:auto eats all remaining horizontal space,
   so everything after it sits flush to the right edge. */
.site-header .header-discord { margin-left: auto; }
.header-discord {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: #5865F2;
  color: #ffffff;
  border-radius: var(--radius-pill);
  padding: 8px 14px;
  font-weight: 700;
  font-size: 13px;
  text-decoration: none;
  transition: background .15s, transform .15s;
}
.header-discord:hover {
  background: #4752c4;
  color: #ffffff;
  text-decoration: none;
  transform: translateY(-1px);
}
.header-discord__icon { flex-shrink: 0; display: inline-flex; }
@media (max-width: 700px) {
  .header-discord { padding: 8px 10px; }
  .header-discord__label { display: none; }
}

.brand { font-family: var(--font-display); font-weight: 700; }
.brand a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--text);
  text-decoration: none;
}
.brand-logo { height: 56px; width: auto; display: block; }
.brand-text { font-size: 22px; color: var(--text); }

@media (max-width: 600px) {
  .site-header { padding: 4px 16px; }
  .brand-logo { height: 44px; }
}

/* ----- Nav tabs ----- */
.nav-tabs {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-wrap: wrap;
}
.nav-tab {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  border-radius: var(--radius-pill);
  color: var(--text-muted);
  font-weight: 600;
  font-size: 14px;
  transition: background-color .15s, color .15s;
  text-decoration: none;
}
.nav-tab:hover {
  background: color-mix(in srgb, var(--text) 8%, transparent);
  color: var(--text);
}
.nav-tab.active {
  background: var(--ink);
  color: var(--ink-text);
}
.nav-tab__flag {
  font-size: 16px;
  line-height: 1;
  display: inline-block;
}
img.nav-tab__flag {
  width: 20px;
  height: 14px;
  border-radius: 2px;
  object-fit: cover;
}
svg.nav-tab__flag {
  width: 18px;
  height: 18px;
  color: currentColor;
  vertical-align: middle;
}
.nav-tab__label { display: inline; }
@media (max-width: 720px) {
  .nav-tab { padding: 6px 10px; font-size: 13px; }
  .nav-tab__label { display: none; }
}

/* ----- Hero / Hub intro ----- */
.hero, .niche-hero, .hub-intro {
  text-align: center;
  max-width: 820px;
  margin: 48px auto 24px;
  padding: 0 20px;
}

.hero h1, .niche-hero h1, .hub-intro h1 {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(44px, 7vw, 80px);
  line-height: 0.96;
  letter-spacing: -0.03em;
  color: var(--text);
  margin-bottom: 20px;
}
.hero p, .niche-hero p, .hub-intro p {
  font-size: clamp(15px, 1.6vw, 18px);
  color: var(--text-muted);
  max-width: 620px;
  margin: 0 auto 14px;
  line-height: 1.5;
}
.hub-intro__games {
  font-size: 14px;
  color: var(--text-muted);
}
.hub-intro__games a {
  color: var(--text);
  font-weight: 600;
  border-bottom: 1.5px solid var(--accent);
  padding-bottom: 1px;
}
.hub-intro__games a:hover { color: var(--accent-dark); }

.niche-hero__emoji,
.section-hero__flag {
  font-size: 48px;
  line-height: 1;
  margin-bottom: 16px;
  display: block;
}

/* ============================================================
   Section hub — playfootball-inspired layout
   - Hero with flag + title
   - Multiplayer strip (separate, top)
   - Daily puzzles block with scoreboard + countdown + W/L cards
   ============================================================ */
.section-hero {
  max-width: 1000px;
  margin: 56px auto 32px;
  padding: 0 24px;
  text-align: center;
}
.section-hero__flag-img {
  width: 80px;
  height: 56px;
  object-fit: cover;
  border-radius: 6px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.12);
  margin: 0 auto 18px;
  display: block;
}
.section-hero h1 {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: clamp(40px, 7vw, 72px);
  line-height: 0.95;
  letter-spacing: -0.03em;
  margin-bottom: 14px;
}
.section-hero p {
  font-size: clamp(15px, 1.6vw, 18px);
  color: var(--text-muted);
  max-width: 620px;
  margin: 0 auto;
  line-height: 1.5;
}

.section-block {
  max-width: 1240px;
  margin: 32px auto;
  padding: 0 24px;
}
.section-block__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 18px;
  flex-wrap: wrap;
}
.section-block__head h2 {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 22px;
  letter-spacing: -0.01em;
  margin: 0;
  text-transform: uppercase;
}
.section-block__hint {
  font-size: 12px;
  color: var(--text-muted);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

/* --- scoreboard strip --- */
.score-strip {
  display: flex;
  align-items: center;
  gap: 18px;
  flex-wrap: wrap;
  font-family: var(--font-body);
}
.score-strip__totals {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 6px 14px;
  background: var(--bg-card);
  border: 1.5px solid var(--border);
  border-radius: var(--radius-pill);
}
.score-strip__label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--text-muted);
}
.score-strip__played {
  font-size: 14px;
  font-weight: 800;
  color: var(--text);
}
.score-strip__wl {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 700;
}
.score-strip__w { color: #16a34a; }
.score-strip__l { color: #dc2626; }
.score-strip__sep { color: var(--text-muted); opacity: 0.6; }
.score-strip__meta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  color: var(--text-muted);
}
.score-strip__countdown {
  font-weight: 700;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.score-strip__dot { opacity: 0.5; }

/* ============================================================
   Ads — always visible, format adapts to viewport.
   Desktop (≥1100px): fixed 160×600 skyscrapers on both edges.
     Body reserves matching padding so the content column can
     never slide under them, regardless of viewport width.
   Mobile / tablet (<1100px): sticky 320×50 banner at the
     bottom edge, full-width navy strip with inline copy + CTA.
   ============================================================ */

/* Desktop: reserve gutter space for the rails via body padding.
   Header (full-bleed) compensates with a small negative margin hook
   further down. Content sections already use `margin: auto` so they
   re-center inside the narrowed body automatically. */
@media (min-width: 1100px) {
  body {
    padding-left:  184px;  /* 160 rail + 24 gutter */
    padding-right: 184px;
  }
  /* Let the sticky site header span the full viewport even with
     body padding — otherwise the brand logo + tabs shift right. */
  .site-header {
    margin-left:  -184px;
    margin-right: -184px;
  }
}

.kg-side {
  position: fixed;
  top: 96px;
  width: 160px;
  z-index: 60;
  display: none;
  flex-direction: column;
  gap: 20px;
  pointer-events: auto;
}
.kg-side--l  { left:  12px; }
.kg-side--r { right: 12px; }
@media (min-width: 1100px) {
  .kg-side { display: flex; }
}

/* Mobile / tablet bottom banner — shown below 1100px. */
.kg-band {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 60;
  display: none;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 14px;
  background: #143c69;
  color: #ffffff;
  text-decoration: none;
  font-family: var(--font-body), "Inter", system-ui, sans-serif;
  min-height: 56px;
  border-top: 1px solid rgba(255,255,255,0.12);
  box-shadow: 0 -6px 20px rgba(0,0,0,0.25);
}
.kg-band:hover { text-decoration: none; }
.kg-band__tag {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.18em;
  opacity: 0.55;
  text-transform: uppercase;
}
.kg-band__headline {
  font-family: var(--font-display), "Inter", system-ui, sans-serif;
  font-weight: 700;
  font-size: 14px;
  letter-spacing: -0.01em;
  margin-top: 2px;
}
.kg-band__pitch {
  font-size: 11px;
  color: rgba(255,255,255,0.75);
  margin-top: 1px;
}
.kg-band__cta {
  flex-shrink: 0;
  background: #ffffff;
  color: #143c69;
  font-family: var(--font-display), "Inter", system-ui, sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 9px 14px;
  border-radius: 999px;
}
@media (max-width: 1099px) {
  .kg-band { display: flex; }
  /* Reserve bottom padding on body so the banner doesn't cover the
     last row of game cards or the footer. */
  body { padding-bottom: 64px; }
}
/* .kg-side__dot kept for backwards compatibility on older cached pages
   but no longer populated with text — the visible "AD" label was a
   flag for EasyList-style adblock rules and has been removed. */
.kg-side__dot { display: none; }
/* Split two-panel stacks: 160×(290 + 20 + 290) = 600px total height.
   Layout (flex-direction + gap) lives on .kg-side so the show/hide
   toggle in the media query drives display on/off cleanly. */
.kg-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 160px;
  height: 290px;
  border-radius: 12px;
  text-decoration: none;
  color: #ffffff;
  padding: 18px 16px;
  text-align: center;
  font-family: var(--font-body), "Inter", system-ui, sans-serif;
  position: relative;
  transition: box-shadow .18s ease, transform .18s ease;
}
.kg-card:hover { transform: translateY(-2px); text-decoration: none; }

/* Four palette variants — one per half-card. */
.kg-card--carbon { background: #212628; box-shadow: 0 10px 30px rgba(33, 38, 40, 0.45); }
.kg-card--carbon:hover { box-shadow: 0 14px 40px rgba(33, 38, 40, 0.65); }
.kg-card--carbon .kg-card__cta { color: #212628; }

.kg-card--green  { background: #1a5918; box-shadow: 0 10px 30px rgba(26, 89, 24, 0.45); }
.kg-card--green:hover  { box-shadow: 0 14px 40px rgba(26, 89, 24, 0.65); }
.kg-card--green .kg-card__cta { color: #1a5918; }

.kg-card--navy   { background: #143c69; box-shadow: 0 10px 30px rgba(20, 60, 105, 0.45); }
.kg-card--navy:hover   { box-shadow: 0 14px 40px rgba(20, 60, 105, 0.65); }
.kg-card--navy .kg-card__cta { color: #143c69; }

.kg-card--orange { background: #e6640a; box-shadow: 0 10px 30px rgba(230, 100, 10, 0.45); }
.kg-card--orange:hover { box-shadow: 0 14px 40px rgba(230, 100, 10, 0.65); }
.kg-card--orange .kg-card__cta { color: #e6640a; }

.kg-card__kicker {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.65);
  margin-bottom: 10px;
}
.kg-card__headline {
  font-family: var(--font-display), "Inter", system-ui, sans-serif;
  font-weight: 800;
  font-size: 24px;
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: #ffffff;
  margin-bottom: 8px;
}
.kg-card__email {
  font-size: 11px;
  color: rgba(255, 255, 255, 0.78);
  letter-spacing: 0.01em;
  margin-top: 4px;
  word-break: break-all;
}
.kg-card__cta {
  display: block;
  margin-top: auto;
  background: #ffffff;
  font-family: var(--font-display), "Inter", system-ui, sans-serif;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 10px 14px;
  border-radius: 999px;
  width: 100%;
  max-width: 130px;
}

/* ============================================================
   Live multiplayer strip (above the daily grid).
   One card per game; visually distinct from daily cards — dark
   ink background, "LIVE" pulse dot, full-width on mobile.
   ============================================================ */
.live-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
  gap: 16px;
}
.live-card {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 18px 22px;
  background: var(--ink);
  color: var(--ink-text);
  border: 1.5px solid var(--ink);
  border-radius: var(--radius-lg);
  text-decoration: none;
  position: relative;
  transition: transform .15s, box-shadow .15s;
}
.live-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow);
  text-decoration: none;
}
.live-card__pulse {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #22c55e;
  box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.7);
  animation: live-pulse 1.8s ease-out infinite;
}
@keyframes live-pulse {
  0%   { box-shadow: 0 0 0 0   rgba(34, 197, 94, 0.7); }
  70%  { box-shadow: 0 0 0 10px rgba(34, 197, 94, 0); }
  100% { box-shadow: 0 0 0 0   rgba(34, 197, 94, 0); }
}
.live-card__icon {
  width: 52px;
  height: 52px;
  border-radius: 12px;
  background: color-mix(in srgb, var(--ink-text) 10%, transparent);
  color: var(--ink-text);
  display: grid;
  place-items: center;
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 24px;
  flex-shrink: 0;
}
.live-card__body { flex: 1; min-width: 0; }
.live-card__tag {
  display: inline-block;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.18em;
  color: #22c55e;
  margin-bottom: 4px;
}
.live-card__body h3 {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 20px;
  letter-spacing: -0.01em;
  margin: 0 0 4px;
  color: var(--ink-text);
}
.live-card__body p {
  margin: 0;
  font-size: 13px;
  color: color-mix(in srgb, var(--ink-text) 72%, transparent);
  line-height: 1.4;
}
.live-card__cta {
  flex-shrink: 0;
  background: var(--ink-text);
  color: var(--ink);
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.05em;
  padding: 9px 16px;
  border-radius: var(--radius-pill);
}
/* Discord variant — official brand indigo #5865F2. Inherits .live-card
   chassis (padding, icon slot, body layout, mobile wrap) then swaps
   the palette. No pulse dot — it's a static invite, not a live match. */
.live-card--discord {
  background: #5865F2;
  border-color: #5865F2;
  color: #ffffff;
}
.live-card--discord:hover {
  background: #4752c4;
  border-color: #4752c4;
}
.live-card--discord .live-card__icon--discord {
  background: rgba(255, 255, 255, 0.15);
  color: #ffffff;
}
.live-card--discord .live-card__body h3 { color: #ffffff; }
.live-card--discord .live-card__body p  { color: rgba(255, 255, 255, 0.82); }
.live-card--discord .live-card__cta {
  background: #ffffff;
  color: #5865F2;
}
.live-card--discord .live-card__pulse { display: none; }

@media (max-width: 700px) {
  .live-card { flex-wrap: wrap; }
  .live-card__cta { width: 100%; text-align: center; margin-top: 8px; }
}

/* --- Football Trivia card grid. Compact themed-pack tiles below the
   daily puzzle grid. No images; just a kicker + title + blurb + CTA
   on the theme-adaptive card chassis. */
.trivia-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 14px;
}
.trivia-card {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 18px 20px;
  background: var(--bg-card);
  border: 1.5px solid var(--border);
  border-radius: var(--radius-lg);
  color: var(--text);
  text-decoration: none;
  transition: transform .15s, border-color .15s, box-shadow .15s;
}
.trivia-card:hover {
  transform: translateY(-2px);
  border-color: var(--text);
  box-shadow: var(--shadow);
  text-decoration: none;
}
.trivia-card__body { flex: 1; min-width: 0; }
.trivia-card__kicker {
  display: inline-block;
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-bottom: 4px;
}
.trivia-card h3 {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 17px;
  letter-spacing: -0.01em;
  margin: 0 0 4px;
}
.trivia-card p {
  margin: 0;
  font-size: 13px;
  color: var(--text-muted);
  line-height: 1.45;
}
.trivia-card__cta {
  flex-shrink: 0;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.05em;
  color: var(--text);
  padding-top: 2px;
}

/* --- day-level progress bar, between the section head and the grid ---
   One rectangle per daily game in the section; filled green when
   today's result is W, red when L, empty otherwise. Sits flush with
   the grid below so it reads as a single ledger row. */
.seg-bar {
  display: flex;
  gap: 4px;
  max-width: 1240px;
  margin: -4px auto 22px;
  padding: 0 24px;
}
.seg {
  flex: 1;
  height: 14px;
  border-radius: 3px;
  background: color-mix(in srgb, var(--text) 14%, var(--bg));
  transition: background .2s;
}
.seg.seg--w { background: #16a34a; }
.seg.seg--l { background: color-mix(in srgb, #dc2626 70%, var(--border)); }

/* --- W/L badge overlayed on .game-card when a game is played today --- */
.game-card__badge {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 2;
}
.result-badge {
  display: inline-grid;
  place-items: center;
  width: 26px; height: 26px;
  border-radius: 50%;
  font-size: 13px;
  font-weight: 800;
  font-family: var(--font-display);
  box-shadow: 0 2px 6px rgba(0,0,0,0.25);
}
.result-badge--w { background: #16a34a; color: #fff; }
.result-badge--l { background: #dc2626; color: #fff; }

/* Won/lost variants on the existing .game-card chassis. */
.game-card.card--won {
  border-color: #16a34a;
}
.game-card.card--won .game-card__play {
  background: #16a34a;
  color: #fff;
}
.game-card.card--lost {
  border-color: color-mix(in srgb, #dc2626 55%, var(--border));
  opacity: 0.92;
}
.game-card.card--lost .game-card__play {
  background: transparent;
  color: var(--text-muted);
  border: 1.5px solid var(--border);
}

@media (max-width: 700px) {
  .section-block__head { flex-direction: column; align-items: flex-start; }
  .score-strip { gap: 12px; }
}

/* ----- Containers ----- */
.container {
  max-width: 1240px;
  margin: 0 auto;
  padding: 0 24px 80px;
}

.section-title, .catalog-section {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 22px;
  margin: 32px 0 16px;
  color: var(--text);
  letter-spacing: -0.01em;
}
.section-title::before { content: none; }

/* ----- Game cards grid ----- */
.games-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 20px;
}
.game-card {
  display: flex;
  flex-direction: column;
  background: var(--bg-card);
  border: 1.5px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  text-decoration: none;
  color: var(--text);
  transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease;
  position: relative;
}
.game-card:hover {
  transform: translateY(-3px);
  border-color: var(--text);
  box-shadow: var(--shadow);
  text-decoration: none;
}
.game-card__art {
  position: relative;
  height: 140px;
  background: var(--bg);
  display: flex;
  align-items: center;
  justify-content: center;
  border-bottom: 1.5px solid var(--border);
}
.game-card__art img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.game-card__icon-fallback {
  display: none;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 44px;
  color: var(--text);
  letter-spacing: -0.02em;
}
.game-card__art.no-art { background: var(--bg); }
.game-card__art.no-art .game-card__icon-fallback { display: inline-block; }
.game-card__body { padding: 20px 20px 22px; }
.game-card h3 {
  font-size: 20px;
  font-weight: 700;
  margin-bottom: 6px;
  letter-spacing: -0.015em;
}
.game-card p {
  font-size: 14px;
  color: var(--text-muted);
  margin-bottom: 14px;
  line-height: 1.45;
}
.game-card__play {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--ink);
  color: var(--ink-text);
  font-family: var(--font-body);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.02em;
  padding: 8px 16px;
  border-radius: var(--radius-pill);
  text-transform: none;
}
.game-card__play::after {
  content: "";
  display: inline-block;
  width: 14px; height: 14px;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14M13 5l7 7-7 7'/></svg>") center / contain no-repeat;
          mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14M13 5l7 7-7 7'/></svg>") center / contain no-repeat;
}
.game-card .badge {
  position: absolute;
  top: 14px;
  left: 14px;
  background: var(--pink);
  color: #ffffff;
  font-size: 11px;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: var(--radius-pill);
  letter-spacing: 0.05em;
  z-index: 2;
}

/* ----- Game wrap (individual game pages) ----- */
.game-wrap {
  max-width: 720px;
  margin: 0 auto;
  padding: 28px 16px 80px;
}
.game-header { text-align: center; margin-bottom: 28px; }
.game-header h2 {
  font-family: var(--font-display);
  font-size: 36px;
  font-weight: 700;
  margin-bottom: 8px;
  letter-spacing: -0.02em;
}
.game-header .subtitle { font-size: 14px; color: var(--text-muted); }
.daily-tag {
  display: inline-block;
  background: var(--accent);
  color: var(--accent-ink);
  font-size: 11px;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: var(--radius-pill);
  letter-spacing: 0.05em;
  margin-bottom: 10px;
}

/* ----- Buttons ----- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: var(--ink);
  color: var(--ink-text);
  padding: 12px 22px;
  border-radius: var(--radius-pill);
  font-family: var(--font-body);
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.01em;
  transition: transform .1s ease, opacity .15s ease;
  text-decoration: none;
  border: none;
  cursor: pointer;
}
.btn:hover { opacity: 0.88; text-decoration: none; }
.btn:active { transform: translateY(1px); }
.btn:disabled { opacity: .45; cursor: not-allowed; }
.btn.secondary {
  background: var(--bg-card);
  color: var(--text);
  border: 1.5px solid var(--border);
}
.btn.secondary:hover { background: var(--bg-elevated); opacity: 1; border-color: var(--text); }
.btn.green {
  background: var(--accent);
  color: var(--accent-ink);
}
.btn.green:hover { background: var(--accent-dark); }
.btn.tiny { padding: 7px 14px; font-size: 12px; }

/* ----- Inputs ----- */
.text-input {
  width: 100%;
  padding: 13px 16px;
  background: var(--bg-card);
  color: var(--text);
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  font-family: inherit;
  font-size: 15px;
  outline: none;
  transition: border-color .15s;
}
.text-input:focus {
  border-color: var(--ink);
}
.text-input::placeholder { color: var(--text-subtle); }

/* ----- Autocomplete ----- */
.autocomplete { position: relative; }
.autocomplete-list {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  background: var(--bg-card);
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  max-height: 260px;
  overflow-y: auto;
  z-index: 20;
  display: none;
}
.autocomplete-list div {
  padding: 10px 14px;
  cursor: pointer;
  font-size: 14px;
}
.autocomplete-list div:hover,
.autocomplete-list div.active { background: var(--bg); }

/* ----- Wordle-style grids (inherited) ----- */
.wordle-grid { display: grid; gap: 6px; justify-content: center; margin: 20px 0; }
.wordle-row  { display: grid; gap: 6px; justify-content: center; }
.wordle-cell {
  width: 56px; height: 56px;
  display: flex; align-items: center; justify-content: center;
  background: var(--bg-card);
  border: 2px solid var(--border-strong);
  border-radius: 8px;
  font-weight: 700; font-size: 24px;
  color: var(--text);
  text-transform: uppercase;
}
.wordle-cell.filled  { border-color: var(--text-muted); }
.wordle-cell.correct { background: var(--correct); border-color: var(--correct); color: var(--accent-ink); }
.wordle-cell.present { background: var(--present); border-color: var(--present); color: var(--accent-ink); }
.wordle-cell.absent  {
  background: var(--absent);
  border-color: var(--absent);
  color: color-mix(in srgb, var(--text) 55%, transparent);
}

.keyboard { display: flex; flex-direction: column; gap: 6px; margin: 20px 0; }
.kb-row   { display: flex; gap: 5px; justify-content: center; }
.kb-key   {
  flex: 1; max-width: 42px; height: 54px;
  display: flex; align-items: center; justify-content: center;
  background: color-mix(in srgb, var(--text) 12%, var(--bg-card));
  color: var(--text);
  border: 1px solid var(--border);
  font-weight: 700; font-size: 13px;
  border-radius: 6px; cursor: pointer;
  text-transform: uppercase; user-select: none;
  transition: background-color .12s;
}
.kb-key:hover { background: color-mix(in srgb, var(--text) 18%, var(--bg-card)); }
.kb-key.wide    { flex: 1.5; font-size: 11px; }
.kb-key.correct { background: var(--correct); color: var(--accent-ink); border-color: var(--correct); }
.kb-key.present { background: var(--present); color: var(--accent-ink); border-color: var(--present); }
.kb-key.absent  { background: var(--absent); color: color-mix(in srgb, var(--text) 55%, transparent); border-color: var(--absent); }

/* ----- Career table / lists ----- */
.career-table {
  background: var(--bg-card);
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  margin: 16px 0;
}
.career-table table { width: 100%; border-collapse: collapse; }
.career-table th, .career-table td {
  padding: 10px 14px; text-align: left; font-size: 14px;
  border-bottom: 1px solid var(--border);
}
.career-table th {
  background: var(--bg); font-weight: 700; color: var(--text-muted);
  text-transform: uppercase; font-size: 11px; letter-spacing: 0.05em;
}
.career-table tr:last-child td { border-bottom: none; }
.career-table .hidden-row { color: var(--text-muted); }

.guesses-list {
  background: var(--bg-card);
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  padding: 8px;
  margin: 16px 0;
  min-height: 50px;
}
.guesses-list .guess {
  padding: 10px 12px; margin: 4px 0; border-radius: 10px;
  background: var(--bg); color: var(--text); font-size: 14px;
}
.guesses-list .guess.correct { background: var(--accent); color: var(--accent-ink); font-weight: 700; }
.guesses-list .guess.skipped { background: var(--border); color: var(--text-muted); }

/* ----- Footer ----- */
.site-footer {
  padding: 40px 24px 28px;
  color: var(--text-muted);
  font-size: 13px;
  border-top: 1px solid var(--border);
  background: var(--bg);
  margin-top: 40px;
}
.footer-top {
  max-width: 1240px;
  margin: 0 auto 24px;
  text-align: center;
}
.footer-heading {
  font-family: var(--font-display), system-ui, sans-serif;
  font-weight: 800;
  font-size: 14px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text);
  margin: 0 0 18px;
}
.footer-socials {
  list-style: none;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  gap: 28px;
  padding: 0;
  margin: 0;
}
.footer-socials a {
  color: var(--text);
  opacity: 0.85;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: opacity .15s, transform .15s;
}
.footer-socials a:hover { opacity: 1; transform: translateY(-2px); }

.footer-bottom {
  max-width: 1240px;
  margin: 0 auto;
  padding-top: 20px;
  border-top: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  font-size: 13px;
  text-align: center;
}
.footer-links { display: inline-flex; gap: 22px; }
.footer-links a {
  color: var(--accent, #a3e635);
  font-weight: 700;
  text-decoration: none;
}
.footer-links a:hover { text-decoration: underline; }
.footer-legal {
  margin: 0;
  max-width: 760px;
  line-height: 1.55;
  color: var(--text);
}
.footer-legal .dim { color: var(--text-muted); }

/* ----- Toast ----- */
.toast {
  position: fixed;
  bottom: 32px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--ink);
  color: var(--ink-text);
  padding: 12px 22px;
  border-radius: var(--radius-pill);
  font-size: 14px;
  font-weight: 600;
  z-index: 1000;
  animation: toastIn .25s ease;
  box-shadow: var(--shadow);
}
@keyframes toastIn {
  from { opacity: 0; transform: translate(-50%, 10px); }
  to   { opacity: 1; transform: translate(-50%, 0); }
}

/* ----- Lang switcher (legacy) ----- */
.lang-switcher {
  display: inline-flex;
  background: var(--bg-card);
  border: 1.5px solid var(--border);
  border-radius: var(--radius-pill);
  padding: 3px;
  gap: 2px;
}
.lang-switcher button {
  padding: 6px 14px;
  font-size: 12px;
  font-weight: 700;
  color: var(--text-muted);
  border-radius: var(--radius-pill);
  letter-spacing: 0.03em;
  transition: all .15s;
}
.lang-switcher button.active {
  background: var(--ink);
  color: var(--ink-text);
}

/* ----- Niche accent classes (kept for compat, all resolve to lime) ----- */
.niche-foot, .niche-culture, .niche-simulateurs, .niche-arena, .niche-trivia {
  --niche-accent: var(--accent);
  --niche-accent-dark: var(--accent-dark);
  --niche-accent-glow: transparent;
}

/* ----- Home niche splash (legacy /foot hub) ----- */
.home-splash { padding: 20px 20px 60px; }
.niche-splash {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 20px;
  max-width: 1240px;
  margin: 0 auto;
}
.niche-card {
  display: block;
  padding: 28px;
  background: var(--bg-card);
  border: 1.5px solid var(--border);
  border-radius: var(--radius-lg);
  text-decoration: none;
  color: var(--text);
  transition: transform .15s, border-color .15s, box-shadow .15s;
}
.niche-card:hover {
  transform: translateY(-3px);
  border-color: var(--text);
  box-shadow: var(--shadow);
  text-decoration: none !important;
}
.niche-card__emoji { font-size: 38px; line-height: 1; margin-bottom: 12px; display: block; }
.niche-card h2 {
  font-size: 24px;
  font-weight: 700;
  margin-bottom: 6px;
  letter-spacing: -0.015em;
}
.niche-card p { color: var(--text-muted); font-size: 14px; line-height: 1.5; }
.niche-card__list { margin-top: 12px; list-style: none; }
.niche-card__list li {
  font-size: 13px;
  color: var(--text-muted);
  padding: 4px 0;
  border-top: 1px solid var(--border);
}
.niche-card__cta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 14px;
  background: var(--ink);
  color: var(--ink-text);
  padding: 8px 16px;
  border-radius: var(--radius-pill);
  font-size: 13px;
  font-weight: 700;
}

/* ----- Country hub "coming soon" section ----- */
.section-status {
  max-width: 720px;
  margin: 16px auto 40px;
  padding: 18px 22px;
  background: var(--pink-soft);
  border: 1.5px solid #f8bcd6;
  border-radius: var(--radius);
  text-align: center;
}
.section-status__label {
  display: inline-block;
  background: var(--pink);
  color: #ffffff;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.1em;
  padding: 4px 12px;
  border-radius: var(--radius-pill);
  text-transform: uppercase;
  margin-bottom: 8px;
}
.section-status p { margin: 4px 0 0; font-size: 14px; color: var(--text); }

.section-roadmap {
  max-width: 720px;
  margin: 0 auto 60px;
  background: var(--bg-card);
  border: 1.5px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 28px 24px;
}
.section-roadmap h2 {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-muted);
  margin-bottom: 16px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--border);
}
.section-roadmap ul { list-style: none; padding: 0; margin: 0; }
.section-roadmap li {
  display: grid;
  grid-template-columns: 24px 1fr;
  gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid var(--border);
}
.section-roadmap li:last-child { border: none; }
.section-roadmap li b {
  color: var(--text);
  font-weight: 700;
  display: block;
  margin-bottom: 2px;
}
.section-roadmap li span { font-size: 13px; color: var(--text-muted); line-height: 1.45; }
.section-cta { text-align: center; margin: 20px auto; padding: 0 20px; max-width: 720px; }
.section-cta a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: var(--ink);
  color: var(--ink-text);
  font-weight: 700;
  padding: 13px 26px;
  border-radius: var(--radius-pill);
  font-size: 14px;
  text-decoration: none;
  transition: opacity .15s;
}
.section-cta a:hover { opacity: 0.88; }
.section-cta a::after {
  content: "";
  width: 14px; height: 14px;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14M13 5l7 7-7 7'/></svg>") center / contain no-repeat;
          mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12h14M13 5l7 7-7 7'/></svg>") center / contain no-repeat;
}

/* ----- Share modal ----- */
.koora-share-modal {
  position: fixed; inset: 0;
  background: rgba(10,10,10,0.5);
  display: flex; align-items: center; justify-content: center;
  z-index: 1000; padding: 20px;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.koora-share-box {
  background: var(--bg-card);
  border-radius: var(--radius-lg);
  border: 1.5px solid var(--border);
  padding: 24px;
  max-width: 420px; width: 100%;
  max-height: 90vh; overflow-y: auto;
  box-shadow: var(--shadow-lg);
  position: relative;
}
.koora-share-box h3 {
  font-family: var(--font-display);
  font-size: 20px;
  font-weight: 700;
  margin-bottom: 16px;
  padding-right: 30px;
}
.koora-share-close {
  position: absolute;
  top: 16px; right: 16px;
  background: var(--bg);
  border: 1.5px solid var(--border);
  color: var(--text-muted);
  width: 32px; height: 32px;
  border-radius: 50%;
  cursor: pointer;
  font-size: 20px; line-height: 1;
}
.koora-share-preview { margin-bottom: 16px; }
.koora-share-actions { display: flex; gap: 10px; }
.koora-share-actions .btn { flex: 1; }

/* ----- Result card / streaks ----- */
.result-card {
  background: var(--bg-card);
  border: 1.5px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 28px;
  text-align: center;
  margin: 20px 0;
}
.result-card h3 { font-size: 22px; margin-bottom: 10px; font-family: var(--font-display); font-weight: 700; }
.result-card p { color: var(--text-muted); margin-bottom: 16px; font-size: 14px; }
.streak-row {
  display: flex;
  justify-content: center;
  gap: 24px;
  padding: 14px 0;
  border-top: 1px solid var(--border);
  margin-top: 14px;
}
.streak-row div { text-align: center; }
.streak-row .num {
  font-family: var(--font-display);
  font-size: 28px; font-weight: 700;
  color: var(--text); letter-spacing: -0.02em;
}
.streak-row .lbl {
  font-size: 11px; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: 0.1em;
  margin-top: 2px;
}

/* ----- Mobile ----- */
@media (max-width: 600px) {
  .container { padding: 0 16px 60px; }
  .hero, .niche-hero, .hub-intro { margin-top: 32px; }
  .games-grid { grid-template-columns: 1fr; gap: 14px; }
  .game-card__art { height: 120px; }
  .wordle-cell { width: 48px; height: 48px; font-size: 20px; }
  .kb-key { max-width: 32px; height: 48px; font-size: 12px; }
}
@media (max-width: 380px) {
  .wordle-cell { width: 40px; height: 40px; font-size: 18px; }
  .kb-key { max-width: 28px; height: 42px; font-size: 10px; }
}

/* ----- Theme toggle button in header ----- */
.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px; height: 36px;
  border-radius: var(--radius-pill);
  background: transparent;
  border: 1.5px solid var(--border);
  color: var(--text-muted);
  cursor: pointer;
  transition: background-color .15s, color .15s, border-color .15s;
  margin-left: 8px;
  line-height: 1;
  flex-shrink: 0;
}
.theme-toggle svg {
  width: 18px; height: 18px;
  display: block;
}
.theme-toggle:hover {
  color: var(--text);
  border-color: var(--text);
  background: color-mix(in srgb, var(--text) 6%, transparent);
}
/* Default (dark) shows moon — tap → light → shows sun → tap → pitch → shows football */
.theme-toggle .icon-moon  { display: inline; }
.theme-toggle .icon-sun   { display: none; }
.theme-toggle .icon-pitch { display: none; }
[data-theme="light"] .theme-toggle .icon-moon  { display: none; }
[data-theme="light"] .theme-toggle .icon-sun   { display: inline; }
[data-theme="light"] .theme-toggle .icon-pitch { display: none; }
[data-theme="pitch"] .theme-toggle .icon-moon  { display: none; }
[data-theme="pitch"] .theme-toggle .icon-sun   { display: none; }
[data-theme="pitch"] .theme-toggle .icon-pitch { display: inline; }

/* Safety: hide any leftover gradients in inline styles (belt + braces) */
[style*="gradient"] { background-image: none !important; }

/* ---------- Cookie consent banner ---------- */
.cookie-banner {
  position: fixed;
  bottom: 16px;
  left: 16px;
  right: 16px;
  max-width: 720px;
  margin: 0 auto;
  background: var(--bg-card, #1a1a1d);
  color: var(--text, #f5f5f5);
  border: 1px solid var(--border, rgba(255,255,255,.12));
  border-radius: 12px;
  padding: 14px 18px;
  display: flex;
  align-items: center;
  gap: 16px;
  box-shadow: 0 8px 32px rgba(0,0,0,.3);
  z-index: 9999;
  font-size: 0.93rem;
}
.cookie-banner p { margin: 0; flex: 1; line-height: 1.5; }
.cookie-banner a { color: var(--accent, #22c55e); text-decoration: none; }
.cookie-banner a:hover { text-decoration: underline; }
.cookie-banner__btn {
  background: var(--accent, #22c55e);
  color: #fff;
  border: 0;
  border-radius: 8px;
  padding: 9px 18px;
  font-weight: 700;
  cursor: pointer;
  font-size: 0.92rem;
  flex-shrink: 0;
}
.cookie-banner__btn:hover { filter: brightness(1.08); }
@media (max-width: 560px) {
  .cookie-banner { flex-direction: column; align-items: stretch; text-align: left; }
  .cookie-banner__btn { width: 100%; }
}
