/* ============================================================
   WORLD YOUTH CHAMPIONSHIP — Singapore
   Premium dark broadcast aesthetic · gold + electric blue
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Saira+Condensed:wght@500;600;700;800;900&family=Sora:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');

:root {
  /* ---- Surfaces ---- */
  --ink:        #060607;
  --ink-2:      #0a0b0d;
  --char:       #121317;
  --char-2:     #181a20;
  --line:       rgba(255,255,255,0.08);
  --line-2:     rgba(255,255,255,0.14);

  /* ---- Gold ---- */
  --gold:       #E8C36B;
  --gold-hi:    #F7E6B0;
  --gold-deep:  #B8902F;
  --gold-grad:  linear-gradient(150deg, #F7E6B0 0%, #E8C36B 38%, #B8902F 72%, #E8C36B 100%);

  /* ---- Electric blue (sparing) ---- */
  --volt:       #3FA7FF;
  --volt-soft:  rgba(63,167,255,0.16);

  /* ---- Text ---- */
  --tx:         #F4F2EC;
  --tx-dim:     #A7A8AD;
  --tx-faint:   #6B6C73;

  /* ---- Type ---- */
  --display: 'Saira Condensed', 'Arial Narrow', sans-serif;
  --body:    'Sora', system-ui, sans-serif;
  --mono:    'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;

  --maxw: 1280px;
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
}

* { margin: 0; padding: 0; box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }

body {
  background: var(--ink);
  color: var(--tx);
  font-family: var(--body);
  font-weight: 400;
  line-height: 1.6;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; border: none; background: none; color: inherit; }
::selection { background: var(--gold); color: #1a1305; }

/* ---- Film grain + vignette over everything ---- */
body::after {
  content: "";
  position: fixed; inset: 0; z-index: 9999; pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");
  opacity: 0.04;
}

/* ============================================================
   TYPOGRAPHY HELPERS
   ============================================================ */
.kicker {
  font-family: var(--body);
  font-weight: 600;
  font-size: clamp(11px, 1vw, 13px);
  letter-spacing: 0.34em;
  text-transform: uppercase;
  color: var(--gold);
  display: inline-flex; align-items: center; gap: 12px;
}
.kicker::before {
  content: ""; width: 34px; height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold));
}
.kicker.center::after {
  content: ""; width: 34px; height: 1px;
  background: linear-gradient(90deg, var(--gold), transparent);
}
.kicker.center { justify-content: center; }

.h-sec {
  font-family: var(--display);
  font-weight: 800;
  text-transform: uppercase;
  line-height: 0.92;
  letter-spacing: -0.01em;
  font-size: clamp(38px, 6vw, 86px);
  text-wrap: balance;
}
.gold-text {
  background: var(--gold-grad);
  -webkit-background-clip: text; background-clip: text;
  color: transparent;
}

.section { position: relative; padding: clamp(80px, 11vh, 160px) 0; }
.wrap { width: min(var(--maxw), 92vw); margin: 0 auto; }

/* ============================================================
   NAV
   ============================================================ */
.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 200;
  display: flex; align-items: center; justify-content: space-between;
  padding: 20px clamp(20px, 4vw, 48px);
  transition: background .4s var(--ease), padding .4s var(--ease), border-color .4s var(--ease);
  border-bottom: 1px solid transparent;
}
.nav.scrolled {
  background: rgba(8,8,10,0.72);
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  border-bottom: 1px solid var(--line);
  padding-top: 14px; padding-bottom: 14px;
}
.brand { display: flex; align-items: center; gap: 13px; }
.brand-mark {
  width: 46px; height: 46px; position: relative; flex: none;
  display: grid; place-items: center;
}
.brand-mark img { width: 100%; height: 100%; object-fit: contain; }
.brand-mark svg { width: 100%; height: 100%; }
.brand-txt { display: flex; flex-direction: column; line-height: 0.98; max-width: 220px; }
.brand-txt b {
  font-family: var(--display); font-weight: 800; font-size: 18px;
  letter-spacing: 0.02em; text-transform: uppercase;
}
.brand-txt span { font-size: 9.5px; letter-spacing: 0.3em; color: var(--tx-dim); text-transform: uppercase; margin-top: 4px; }
@media (max-width: 520px){
  .brand-txt b { font-size: 15px; }
  .brand-txt span { display: none; }
}

.nav-links { display: flex; align-items: center; gap: 34px; }
.nav-links a {
  font-size: 13px; font-weight: 500; letter-spacing: 0.02em; color: var(--tx-dim);
  position: relative; transition: color .25s;
}
.nav-links a::after {
  content: ""; position: absolute; left: 0; bottom: -6px; height: 1px; width: 0;
  background: var(--gold); transition: width .3s var(--ease);
}
.nav-links a:hover { color: var(--tx); }
.nav-links a:hover::after { width: 100%; }
.nav-cta { display: flex; align-items: center; gap: 14px; }
.nav-toggle { display: none; }

/* theme switcher (light default · dark optional) */
.theme-toggle {
  width: 40px; height: 40px; flex: none; border-radius: 50%;
  display: grid; place-items: center; color: var(--tx-dim);
  border: 1px solid var(--line-2); background: rgba(127,127,127,0.04);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  transition: color .25s, border-color .25s, background .25s, transform .3s var(--ease);
}
.theme-toggle:hover { color: var(--gold); border-color: var(--gold); background: rgba(232,195,107,0.08); transform: translateY(-2px); }
.theme-toggle svg { width: 18px; height: 18px; display: block; }
/* light mode → offer the moon (switch to dark); dark mode → offer the sun */
.theme-toggle .i-sun { display: none; }
html:not(.theme-light) .theme-toggle .i-moon { display: none; }
html:not(.theme-light) .theme-toggle .i-sun { display: block; }
@media (max-width: 400px){ .theme-toggle { width: 36px; height: 36px; } }

@media (max-width: 900px) {
  .nav-links { display: none; }
}
@media (max-width: 560px) {
  .nav-cta .btn-sm { padding: 8px 14px; font-size: 12px; }
  .nav-cta .btn-sm .btn-i { display: none; }
}
/* ultra-narrow phones (≤360px): tighten nav so the CTA never overflows */
@media (max-width: 360px) {
  .nav { padding-left: 14px; padding-right: 14px; }
  .nav-cta { gap: 10px; }
  .nav-cta .btn-sm { padding: 8px 12px; font-size: 11.5px; }
}

/* ============================================================
   BUTTONS (magnetic)
   ============================================================ */
.btn {
  position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  font-family: var(--body); font-weight: 600; font-size: 14px; letter-spacing: 0.02em;
  padding: 15px 28px; border-radius: 999px; will-change: transform; white-space: nowrap;
  transition: transform .3s var(--ease), box-shadow .3s var(--ease), background .3s, color .3s, border-color .3s;
}
.btn:hover { transform: translateY(-2px); }
.btn:active { transform: translateY(0); }
.btn .btn-i { display: inline-flex; transition: transform .3s var(--ease); }
.btn:hover .btn-i { transform: translateX(3px); }

.btn-gold {
  background: var(--gold-grad); color: #21180a;
  box-shadow: 0 8px 30px -8px rgba(232,195,107,0.5), inset 0 1px 0 rgba(255,255,255,0.5);
}
.btn-gold:hover { box-shadow: 0 14px 46px -10px rgba(232,195,107,0.7), inset 0 1px 0 rgba(255,255,255,0.6); }

.btn-ghost {
  color: var(--tx); border: 1px solid var(--line-2);
  background: rgba(255,255,255,0.02); backdrop-filter: blur(8px);
}
.btn-ghost:hover { border-color: var(--gold); color: var(--gold); background: rgba(232,195,107,0.06); }

.btn-sm { padding: 11px 20px; font-size: 13px; }

/* ============================================================
   HERO
   ============================================================ */
.hero {
  position: relative; min-height: 100svh; height: 100svh; display: flex; flex-direction: column;
  justify-content: center; overflow: hidden; isolation: isolate;
  padding: 100px 0 48px;
}
.hero-stage { position: absolute; inset: 0; z-index: -2; }

/* sky gradient */
.sky {
  position: absolute; inset: 0;
  background:
    radial-gradient(120% 80% at 75% 8%, rgba(63,120,180,0.18) 0%, transparent 45%),
    radial-gradient(90% 60% at 20% 0%, rgba(232,195,107,0.10) 0%, transparent 40%),
    linear-gradient(180deg, #05060a 0%, #0a0d16 38%, #0d0f17 64%, #07080c 100%);
}
/* stars */
.stars { position: absolute; inset: 0; opacity: .7; }
/* glow on horizon (city light pollution) */
.cityglow {
  position: absolute; left: 0; right: 0; bottom: 18%; height: 40%;
  background: radial-gradient(80% 100% at 50% 100%, rgba(232,195,107,0.22) 0%, rgba(232,195,107,0.06) 40%, transparent 70%);
  filter: blur(6px);
}
/* skyline svg layers */
.skyline {
  position: absolute; left: 50%; bottom: 0; transform: translateX(-50%);
  width: 1600px; max-width: 130%; height: auto; z-index: -1;
}
.skyline.back  { opacity: .5; filter: blur(1.5px); width: 1750px; }
.skyline.mid   { opacity: .85; }

/* skyline IMAGE layer (uploaded silhouette: dark on white -> inverted to a
   luminous skyline, screen-blended so the white drops out, muted/cool tint) */
.skyline-img {
  position: absolute; left: 50%; bottom: 0; transform: translateX(-50%);
  width: 1760px; max-width: 138%; height: auto; z-index: -1;
  pointer-events: none; mix-blend-mode: screen;
  filter: invert(1) sepia(.5) saturate(1.1) hue-rotate(2deg) brightness(.6) contrast(1.02);
  -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 26%, #000 60%, transparent 99%);
  mask-image: linear-gradient(180deg, transparent 0%, #000 26%, #000 60%, transparent 99%);
}
.skyline-img.mid  { opacity: .5; }
@media (max-width: 760px){
  /* skyline silhouette sits behind the headline (clear of nav, badge and CTAs) */
  .hero { padding-bottom: 56px !important; }
  .skyline-img { width: 150%; max-width: 150%; bottom: auto; top: 20vh; }
  body.played .hero .skyline-img.mid,
  .hero .skyline-img.mid { opacity: .8 !important; filter: invert(1) sepia(.32) saturate(1.2) hue-rotate(2deg) brightness(1.08) contrast(1.05) !important; }
  .hero-scrim {
    background: linear-gradient(180deg, rgba(6,6,7,0.3) 0%, rgba(6,6,7,0.08) 28%, rgba(6,6,7,0.5) 66%, rgba(6,6,7,0.88) 100%) !important;
  }
  /* punchier hero: drop the long article-style paragraph, tighten the rest */
  .hero-support { display: none; }
  .hero-copy .hero-actions { display: none; }
  .hero-copy { gap: 16px; }
}
/* light streaks */
.streak {
  position: absolute; height: 2px; border-radius: 2px; pointer-events: none;
  background: linear-gradient(90deg, transparent, var(--gold-hi), transparent);
  opacity: 0; filter: blur(.4px);
}
/* spotlights */
.spot {
  position: absolute; top: -10%; width: 50vw; height: 120vh; pointer-events: none;
  background: linear-gradient(180deg, rgba(232,195,107,0.10), transparent 70%);
  mix-blend-mode: screen; filter: blur(8px); transform-origin: top center;
}
.spot.l { left: 4%; transform: rotate(14deg); }
.spot.r { right: 4%; transform: rotate(-14deg); background: linear-gradient(180deg, rgba(63,167,255,0.10), transparent 70%); }

/* particles canvas */
#particles { position: absolute; inset: 0; z-index: -1; pointer-events: none; }

/* floating trajectory arcs (svg) */
.trajectories { position: absolute; inset: 0; z-index: -1; pointer-events: none; opacity: .55; }

/* bottom fade into page */
.hero-fade {
  position: absolute; left: 0; right: 0; bottom: 0; height: 30%; z-index: 1; pointer-events: none;
  background: linear-gradient(180deg, transparent, var(--ink));
}

/* ---- court markings ground plane ---- */
.court-floor {
  position: absolute; left: 50%; bottom: -34px; transform: translateX(-50%);
  width: min(1500px, 135vw); z-index: 1; pointer-events: none;
}
.court-floor svg {
  width: 100%; height: auto; display: block;
  transform: perspective(640px) rotateX(54deg); transform-origin: 50% 100%;
  filter: drop-shadow(0 0 14px rgba(232,195,107,0.3));
  -webkit-mask-image: linear-gradient(180deg, transparent 4%, #000 62%);
  mask-image: linear-gradient(180deg, transparent 4%, #000 62%);
  opacity: .85;
}

@media (max-width: 760px){
  .court-floor { bottom: -12px; }
  .court-floor svg { opacity: .7; }
}

/* readability scrim behind the text column (sits above skyline, below content) */
.hero-scrim {
  position: absolute; inset: 0; z-index: 2; pointer-events: none;
  background:
    linear-gradient(105deg, rgba(6,6,7,0.82) 0%, rgba(6,6,7,0.5) 32%, rgba(6,6,7,0.08) 56%, transparent 72%),
    linear-gradient(0deg, rgba(6,6,7,0.55) 0%, transparent 38%);
}

.hero-inner {
  position: relative; z-index: 3; width: min(var(--maxw), 92vw); margin: 0 auto;
  display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: clamp(24px, 3.5vw, 56px);
  align-items: stretch; min-height: min(76vh, 660px);
}
.hero-copy { min-width: 0; container-type: inline-size; display: flex; flex-direction: column; justify-content: space-between; gap: clamp(20px, 3vh, 40px); }
@media (max-width: 1080px) {
  .hero { height: auto; min-height: auto; padding: 92px 0 48px; }
  .hero-inner { grid-template-columns: 1fr; gap: 30px; min-height: 0; align-items: center; }
  .hero-copy { max-width: 640px; gap: 20px; justify-content: flex-start; }
  .hero h1 { line-height: 0.92; }
  .scoreboard { justify-self: stretch; max-width: none; }
}
.hero-badge {
  align-self: flex-start;
  display: inline-flex; align-items: center; gap: 10px;
  padding: 8px 16px; border-radius: 999px; border: 1px solid var(--line-2);
  background: rgba(255,255,255,0.03); backdrop-filter: blur(10px);
  font-size: 12px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--tx-dim);
  margin-bottom: 30px;
}
.hero-badge .dot {
  width: 7px; height: 7px; border-radius: 50%; background: var(--volt);
  box-shadow: 0 0 0 0 rgba(63,167,255,0.6); animation: pulse 2s infinite;
}
@keyframes pulse {
  0% { box-shadow: 0 0 0 0 rgba(63,167,255,0.55); }
  70% { box-shadow: 0 0 0 9px rgba(63,167,255,0); }
  100% { box-shadow: 0 0 0 0 rgba(63,167,255,0); }
}
.hero-badge b { color: var(--gold); font-weight: 600; }

.hero h1 {
  font-family: var(--display); font-weight: 900; text-transform: uppercase;
  font-size: clamp(28px, 10cqw, 96px); line-height: 0.9; letter-spacing: -0.015em;
  margin: 6px 0 0; text-wrap: balance;
}
.hero h1 .line { display: block; overflow: hidden; }
.hero h1 .line > span { display: block; will-change: transform; }
.hero h1 .l2 { background: var(--gold-grad); -webkit-background-clip: text; background-clip: text; color: transparent; }

.hero-sub {
  font-family: var(--display); font-weight: 600; text-transform: uppercase;
  letter-spacing: 0.04em; font-size: clamp(18px, 2.4vw, 30px); color: var(--tx);
  margin-top: 22px;
}
.hero-support {
  max-width: 560px; color: var(--tx-dim); font-size: clamp(15px, 1.3vw, 17px);
  margin-top: 18px; line-height: 1.65;
}
.hero-actions { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 36px; }

/* hero scoreboard card (countdown) — right column of the hero grid */
.scoreboard {
  width: 100%; max-width: 360px; justify-self: end; align-self: center;
  position: relative; overflow: hidden;
  border: 1px solid var(--line-2); border-radius: 18px; padding: 18px;
  background:
    linear-gradient(180deg, rgba(13,11,8,0.84), rgba(7,6,4,0.92)),
    repeating-linear-gradient(95deg,
      #4a3014 0px, #54381a 38px, #462c12 39px, #4f3417 76px, #422a10 77px, #503516 114px);
  box-shadow: 0 30px 70px -28px rgba(0,0,0,0.85), inset 0 1px 0 rgba(255,255,255,0.05);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
}
/* faint court circle etched into the hardwood */
.scoreboard::before {
  content: ""; position: absolute; top: -74px; right: -74px; width: 200px; height: 200px;
  border: 1.5px solid rgba(232,195,107,0.16); border-radius: 50%; pointer-events: none;
}
.scoreboard::after {
  content: ""; position: absolute; top: -74px; right: -74px; width: 140px; height: 140px;
  margin: 30px; border: 1px solid rgba(232,195,107,0.08); border-radius: 50%; pointer-events: none;
}
.sb-status {
  display: flex; justify-content: space-between; align-items: center;
  font-family: var(--mono); font-size: 10.5px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--tx-dim);
}
.sb-live { display: inline-flex; align-items: center; gap: 8px; color: var(--tx); }
.sb-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--volt); box-shadow: 0 0 0 0 rgba(63,167,255,0.6); animation: pulse 2s infinite; }
.sb-tag { color: var(--gold); }
.sb-count { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin: 16px 0; }
.sb-cell {
  background: linear-gradient(180deg, rgba(0,0,0,0.5), rgba(0,0,0,0.22));
  border: 1px solid var(--line); border-radius: 12px; padding: 13px 4px 9px; text-align: center;
}
.sb-fig {
  font-family: var(--display); font-weight: 800; font-size: 42px; line-height: 1;
  color: var(--gold); font-variant-numeric: tabular-nums; display: block;
}
.sb-cl { font-family: var(--mono); font-size: 9px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--tx-faint); margin-top: 6px; display: block; }
.sb-meta { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 16px; padding-top: 16px; border-top: 1px dashed var(--line-2); }
.sb-mi { display: flex; flex-direction: column; gap: 4px; }
.sb-mi .k { font-family: var(--mono); font-size: 9px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--tx-faint); }
.sb-mi .v { font-family: var(--display); font-weight: 700; font-size: 17px; letter-spacing: 0.02em; text-transform: uppercase; color: var(--tx); }
@media (max-width: 860px) { .scoreboard { justify-self: start; } }

.scroll-hint {
  position: absolute; left: 50%; bottom: 26px; transform: translateX(-50%); z-index: 4;
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  font-size: 10px; letter-spacing: 0.3em; text-transform: uppercase; color: var(--tx-faint);
}
.scroll-hint .bar { width: 1px; height: 40px; background: linear-gradient(var(--gold), transparent); position: relative; overflow: hidden; }
.scroll-hint .bar::after { content:""; position:absolute; top:-40px; left:0; width:1px; height:40px; background: var(--gold-hi); animation: scrolldn 1.8s var(--ease) infinite; }
@keyframes scrolldn { to { top: 40px; } }

/* ============================================================
   STATS TICKER (infinite marquee under the hero)
   ============================================================ */
.ticker {
  position: relative; background: var(--ink-2); overflow: hidden;
  border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
}
.ticker-row { overflow: hidden; }
.ticker-row + .ticker-row { border-top: 1px solid var(--line); }
.ticker-track { display: flex; align-items: center; width: max-content; will-change: transform; }
.ticker-row:not(.rev) .ticker-track { animation: tickerL 40s linear infinite; }
.ticker-row.rev .ticker-track { animation: tickerR 52s linear infinite; }
.ticker:hover .ticker-track { animation-play-state: paused; }

@keyframes tickerL { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes tickerR { from { transform: translateX(-50%); } to { transform: translateX(0); } }

/* big stat item */
.tick { display: inline-flex; align-items: baseline; gap: 12px; padding: 26px 40px; flex: none; }
.tick-num {
  font-family: var(--display); font-weight: 800; line-height: 1;
  font-size: clamp(34px, 4.2vw, 58px); letter-spacing: -0.01em;
  background: var(--gold-grad); -webkit-background-clip: text; background-clip: text; color: transparent;
}
.tick-lab {
  font-family: var(--body); font-weight: 600; font-size: clamp(11px, 1vw, 13px);
  letter-spacing: 0.26em; text-transform: uppercase; color: var(--tx-dim); white-space: nowrap;
}
.tick-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--gold-deep); flex: none; }

/* sub row (opposite direction, smaller editorial strip) */
.ticker-row.sub .tick { padding: 12px 30px; gap: 0; }
.ticker-row.sub .tick-word {
  font-family: var(--display); font-weight: 700; font-size: clamp(13px, 1.4vw, 16px);
  letter-spacing: 0.22em; text-transform: uppercase; color: var(--tx-faint); white-space: nowrap;
}
.ticker-row.sub .tick-dot { width: 5px; height: 5px; background: var(--gold); }

@media (prefers-reduced-motion: reduce) {
  .ticker-track { animation: none !important; }
}

/* ============================================================
   GLOBAL MAP
   ============================================================ */
.map-head { display: grid; grid-template-columns: 1.2fr .8fr; gap: 30px; align-items: end; margin-bottom: 48px; }
@media (max-width: 820px){ .map-head { grid-template-columns: 1fr; } }
.map-head p { color: var(--tx-dim); max-width: 420px; }

.globe-wrap {
  position: relative; border: 1px solid var(--line); border-radius: 22px; overflow: hidden;
  background:
    radial-gradient(120% 120% at 50% 0%, rgba(63,167,255,0.07), transparent 55%),
    radial-gradient(90% 90% at 78% 60%, rgba(232,195,107,0.06), transparent 60%),
    linear-gradient(180deg, #0b0d12, #08090c);
}
.globe-svg { width: 100%; height: auto; display: block; }

/* Singapore map sits ON its true location in the regional Asia-Pacific map */
.globe-island {
  position: absolute; left: 45.3%; top: 51.9%;
  width: 13%; height: auto; transform: translate(-50%, -50%);
  pointer-events: none; z-index: 2;
  filter: drop-shadow(0 12px 30px rgba(232,195,107,0.36)) drop-shadow(0 0 14px rgba(232,195,107,0.26));
  transition: opacity .9s var(--ease), transform .9s var(--ease);
}
body.playing .globe-wrap .globe-island { opacity: 0; transform: translate(-50%, -50%) scale(.82); }
body.playing .globe-wrap.in .globe-island { opacity: 1; transform: translate(-50%, -50%) scale(1); }
body.played .globe-island { opacity: 1 !important; transform: translate(-50%, -50%) !important; }
@media (max-width: 640px){ .globe-island { width: 19%; } }
.node-tip {
  position: absolute; transform: translate(-50%, -130%); pointer-events: none;
  background: rgba(10,11,14,0.92); border: 1px solid var(--line-2); border-radius: 10px;
  padding: 8px 12px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity .2s;
  backdrop-filter: blur(8px); z-index: 5;
}
.node-tip b { color: var(--gold); }
.node-tip .c { color: var(--tx-dim); display: block; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; }

.country-cards { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 30px; }
@media (max-width: 560px){
  .country-cards { gap: 10px; }
  .country-cards .cc { flex: 1 1 calc(50% - 5px); min-width: 0; padding: 13px 14px; }
}
.cc {
  flex: 0 1 208px; min-width: 180px;
  border: 1px solid var(--line); border-radius: 14px; padding: 15px 18px;
  background: linear-gradient(180deg, rgba(24,26,32,0.75), rgba(12,13,16,0.8));
  display: flex; align-items: center; gap: 14px;
  transition: transform .35s var(--ease), border-color .35s, background .35s, box-shadow .35s;
}
.cc:hover {
  transform: translateY(-5px); border-color: rgba(232,195,107,0.45);
  background: linear-gradient(180deg, rgba(28,30,37,0.9), rgba(15,16,20,0.9));
  box-shadow: 0 14px 34px -16px rgba(232,195,107,0.4);
}
.cc .flag { width: 40px; height: 28px; border-radius: 5px; flex: none; overflow: hidden; box-shadow: 0 2px 10px rgba(0,0,0,.5), inset 0 0 0 1px rgba(255,255,255,.08); }
.cc .flag svg { width: 100%; height: 100%; display: block; }
.cc .meta { min-width: 0; text-align: left; }
.cc .meta b { font-family: var(--display); font-weight: 700; font-size: 17.5px; letter-spacing: .02em; display: block; line-height: 1; text-transform: uppercase; white-space: nowrap; }
.cc .meta span { font-size: 11px; color: var(--tx-dim); letter-spacing: .14em; text-transform: uppercase; display: block; margin-top: 6px; }
.cc.host { border-color: rgba(232,195,107,0.4); background: linear-gradient(180deg, rgba(232,195,107,0.1), rgba(15,16,20,0.85)); }
.cc.host .meta span { color: var(--gold); }

/* ============================================================
   TEAMS WALL
   ============================================================ */
.teams-grid {
  display: grid; grid-template-columns: repeat(6, 1fr); gap: clamp(14px, 1.8vw, 26px);
  max-width: 980px; margin: 0 auto;
}
.team-tile {
  position: relative; aspect-ratio: 1; border-radius: 50%; overflow: hidden;
  background: #ffffff;
  border: 2px solid var(--line); display: grid; place-items: center; padding: 15%;
  box-shadow: 0 10px 28px -14px rgba(0,0,0,0.7);
  transition: transform .4s var(--ease), box-shadow .4s var(--ease), border-color .4s;
}
.team-tile img { width: 100%; height: 100%; object-fit: contain; display: block; }
/* Logos that should fill the whole circle (no padded ring around them). */
.team-tile--cover { padding: 0; }
.team-tile--cover img { object-fit: cover; }
.team-tile:hover {
  transform: translateY(-6px) scale(1.04); border-color: var(--gold);
  box-shadow: 0 18px 40px -14px rgba(232,195,107,0.55);
}
@media (max-width: 900px){ .teams-grid { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 560px){ .teams-grid { grid-template-columns: repeat(3, 1fr); } }

/* ============================================================
   GALLERY (masonry, mixed portrait/landscape) + LIGHTBOX
   ============================================================ */
.gallery-masonry {
  column-count: 4; column-gap: 16px;
}
@media (max-width: 1080px){ .gallery-masonry { column-count: 3; } }
@media (max-width: 720px){ .gallery-masonry { column-count: 2; column-gap: 12px; } }
.g-item {
  position: relative; break-inside: avoid; margin-bottom: 16px; border-radius: 14px;
  overflow: hidden; border: 1px solid var(--line); cursor: pointer; background: var(--char);
  transition: transform .45s var(--ease), box-shadow .45s var(--ease), border-color .45s;
}
@media (max-width: 720px){ .g-item { margin-bottom: 12px; } }
.g-item img { width: 100%; height: auto; display: block; transition: transform .6s var(--ease); }
.g-item::after {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: 0; transition: opacity .45s;
  background: linear-gradient(180deg, transparent 40%, rgba(6,6,7,0.55));
}
.g-item:hover { transform: translateY(-5px); border-color: rgba(232,195,107,0.5); box-shadow: 0 18px 44px -18px rgba(232,195,107,0.45); }
.g-item:hover img { transform: scale(1.06); }
.g-item:hover::after { opacity: 1; }
.g-year {
  position: absolute; left: 12px; bottom: 11px; z-index: 2; opacity: 0; transform: translateY(6px);
  transition: opacity .4s, transform .4s; font-family: var(--display); font-weight: 700;
  font-size: 14px; letter-spacing: .12em; color: #fff; text-shadow: 0 1px 8px rgba(0,0,0,.7);
}
.g-item:hover .g-year { opacity: 1; transform: none; }
.g-expand {
  position: absolute; right: 11px; top: 11px; z-index: 2; width: 30px; height: 30px; border-radius: 9px;
  display: grid; place-items: center; background: rgba(10,11,14,0.6); backdrop-filter: blur(6px);
  color: var(--gold); opacity: 0; transition: opacity .4s; pointer-events: none;
}
.g-item:hover .g-expand { opacity: 1; }
/* placeholder tile (before real photos are dropped in) */
.g-item.ph { background: linear-gradient(150deg, var(--char-2), var(--ink-2)); display: grid; place-items: center; }
.g-item.ph span { font-family: var(--display); font-weight: 800; font-size: 22px; letter-spacing: .1em; color: var(--tx-faint); opacity: .5; }

/* collapsible gallery — teaser height + gradient fold + expand control */
.gallery-collapse {
  position: relative; overflow: hidden;
  max-height: clamp(460px, 60vh, 820px);
  transition: max-height .55s var(--ease);
}
.gallery-collapse.nocollapse { max-height: none; }
.gallery-fade {
  position: absolute; left: 0; right: 0; bottom: 0; height: 200px; z-index: 3; pointer-events: none;
  background: linear-gradient(180deg, transparent, var(--ink));
  transition: opacity .45s var(--ease);
}
.gallery-collapse.open .gallery-fade,
.gallery-collapse.nocollapse .gallery-fade { opacity: 0; }
.gallery-more { display: flex; justify-content: center; margin-top: 30px; }
.gallery-toggle { gap: 10px; }
.gallery-toggle .gt-icon { display: inline-flex; transition: transform .35s var(--ease); }
.gallery-toggle[aria-expanded="true"] .gt-icon { transform: rotate(180deg); }
@media (prefers-reduced-motion: reduce) { .gallery-collapse { transition: none; } }

/* lightbox */
.lb {
  position: fixed; inset: 0; z-index: 10001; display: flex; align-items: center; justify-content: center;
  background: rgba(4,4,6,0.92); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  opacity: 0; animation: lbIn .25s var(--ease) forwards; padding: 4vh 4vw;
}
.lb[hidden] { display: none; }
@keyframes lbIn { to { opacity: 1; } }
.lb-stage { display: flex; flex-direction: column; align-items: center; gap: 14px; max-width: 92vw; max-height: 92vh; }
.lb-stage img { max-width: 100%; max-height: 84vh; width: auto; height: auto; border-radius: 12px; box-shadow: 0 40px 90px -24px rgba(0,0,0,0.9); object-fit: contain; }
.lb-stage figcaption { font-family: var(--display); font-weight: 600; font-size: 15px; letter-spacing: .14em; text-transform: uppercase; color: var(--gold); }
.lb-close { position: absolute; top: 20px; right: 24px; width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; font-size: 18px; color: #fff; background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.16); transition: background .2s; }
.lb-close:hover { background: rgba(255,255,255,0.16); }
.lb-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 52px; height: 52px; border-radius: 50%; display: grid; place-items: center; font-size: 28px; color: #fff; background: rgba(255,255,255,0.07); border: 1px solid rgba(255,255,255,0.16); transition: background .2s, transform .2s; }
.lb-nav:hover { background: var(--gold); color: #1a1305; }
.lb-prev { left: 18px; } .lb-next { right: 18px; }
@media (max-width: 600px){ .lb-nav { width: 42px; height: 42px; font-size: 22px; } .lb-prev{left:8px;} .lb-next{right:8px;} }

/* light theme gallery touches */
html.theme-light .g-item::after { background: linear-gradient(180deg, transparent 40%, rgba(20,16,8,0.5)); }
html.theme-light .g-expand { background: rgba(255,253,248,0.75); }
html.theme-light .lb { background: rgba(235,231,222,0.94); }
html.theme-light .lb-close, html.theme-light .lb-nav { color: #1a1916; background: rgba(0,0,0,0.06); border-color: rgba(0,0,0,0.14); }
html.theme-light .lb-nav:hover { background: var(--gold); color: #fff; }

/* ============================================================
   SPONSORS
   ============================================================ */
.marquee { position: relative; overflow: hidden; padding: 14px 0; -webkit-mask: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); mask: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.marquee-track { display: flex; align-items: center; gap: 40px; width: max-content; animation: marq 38s linear infinite; }
.marquee:hover .marquee-track { animation-play-state: paused; }
@keyframes marq { to { transform: translateX(-50%); } }
.slogo {
  display: grid; place-items: center; flex: none;
  height: 92px; min-width: 130px; padding: 12px 24px;
  background: #ffffff; border: 1px solid rgba(0,0,0,0.1); border-radius: 16px;
  overflow: hidden; opacity: .92;
  transition: opacity .35s, transform .35s var(--ease), box-shadow .35s;
}
.slogo img { max-height: 68px; max-width: 190px; width: auto; height: auto; object-fit: contain; display: block; }
.slogo:hover { opacity: 1; transform: translateY(-4px) scale(1.03); box-shadow: 0 16px 36px -14px rgba(232,195,107,0.45); }
@media (max-width: 640px){ .slogo { height: 72px; min-width: 104px; padding: 10px 18px; } .slogo img { max-height: 52px; max-width: 150px; } }

/* ============================================================
   FINAL CTA
   ============================================================ */
.finalcta { position: relative; overflow: hidden; text-align: center; padding: clamp(120px,18vh,230px) 0; isolation: isolate; }
.finalcta .bg {
  position: absolute; inset: 0; z-index: -3;
  background:
    radial-gradient(75% 85% at 50% 116%, rgba(232,195,107,0.14) 0%, transparent 55%),
    radial-gradient(55% 60% at 22% 4%, rgba(63,120,180,0.10) 0%, transparent 60%),
    linear-gradient(180deg, #06070b 0%, #090b12 58%, #050609 100%);
}
/* muted skyline silhouette — cool blue-grey, in keeping with the rest of the page */
.cta-skyline {
  position: absolute; left: 50%; bottom: -2px; transform: translateX(-50%);
  width: 1760px; max-width: 150%; height: auto; z-index: -2; pointer-events: none;
  mix-blend-mode: screen; opacity: .5;
  filter: invert(1) sepia(.45) saturate(1.1) hue-rotate(178deg) brightness(.55) contrast(1.02);
  -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 30%, #000 100%);
  mask-image: linear-gradient(180deg, transparent 0%, #000 30%, #000 100%);
}
/* warm gold horizon glow behind the skyline (matches hero) */
.cta-glow {
  position: absolute; left: 0; right: 0; bottom: 0; height: 44%; z-index: -2; pointer-events: none;
  background: radial-gradient(72% 120% at 50% 100%, rgba(232,195,107,0.16), rgba(232,195,107,0.05) 45%, transparent 72%);
  filter: blur(8px);
}
/* subtle light streaks flare */
.cta-streaks { position: absolute; inset: 0; z-index: -1; pointer-events: none; overflow: hidden; }
.cta-streaks span {
  position: absolute; height: 1.5px; border-radius: 2px; opacity: 0;
  background: linear-gradient(90deg, transparent, rgba(247,230,176,0.65), transparent);
  filter: blur(.3px); animation: ctaStreak 7s linear infinite;
}
.cta-streaks span:nth-child(1){ top: 26%; left: -30%; width: 34%; animation-delay: 0s; }
.cta-streaks span:nth-child(2){ top: 54%; left: -30%; width: 24%; animation-delay: 2.2s; }
.cta-streaks span:nth-child(3){ top: 40%; left: -30%; width: 40%; animation-delay: 4s; }
.cta-streaks span:nth-child(4){ top: 70%; left: -30%; width: 28%; animation-delay: 5.4s; }
@keyframes ctaStreak {
  0% { transform: translateX(0); opacity: 0; }
  12% { opacity: .55; }
  60% { opacity: .55; }
  100% { transform: translateX(360%); opacity: 0; }
}
.finalcta .grid-floor {
  position: absolute; left: 0; right: 0; bottom: 0; height: 45%; z-index: -2;
  background-image: linear-gradient(rgba(232,195,107,0.10) 1px, transparent 1px), linear-gradient(90deg, rgba(232,195,107,0.10) 1px, transparent 1px);
  background-size: 60px 60px; transform: perspective(420px) rotateX(62deg); transform-origin: bottom; opacity: .5;
  -webkit-mask: linear-gradient(transparent, #000 80%); mask: linear-gradient(transparent, #000 80%);
}
.finalcta h2 { font-family: var(--display); font-weight: 900; text-transform: uppercase; font-size: clamp(40px, 7vw, 110px); line-height: .9; }
.finalcta p { color: var(--tx-dim); max-width: 540px; margin: 22px auto 0; font-size: 17px; }
.finalcta .hero-actions { justify-content: center; }
@media (prefers-reduced-motion: reduce){ .cta-streaks span { animation: none; opacity: .35; } }

/* ============================================================
   FOOTER
   ============================================================ */
.footer { border-top: 1px solid var(--line); padding: 60px 0 40px; background: var(--ink-2); }
.footer-top { display: flex; justify-content: space-between; gap: 40px; flex-wrap: wrap; }
.footer-cols { display: flex; gap: clamp(40px,7vw,90px); flex-wrap: wrap; }
.fcol h5 { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--tx-faint); margin-bottom: 16px; }
.fcol a { display: block; color: var(--tx-dim); font-size: 14px; margin-bottom: 11px; transition: color .25s; }
.fcol a:hover { color: var(--gold); }
.fcol a.social { display: flex; align-items: center; gap: 9px; width: fit-content; max-width: 100%; min-width: 0; }
.fcol a.social svg { width: 18px; height: 18px; flex-shrink: 0; }
.fcol a.social span { overflow-wrap: anywhere; min-width: 0; }
.footer-bottom { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-top: 50px; padding-top: 26px; border-top: 1px solid var(--line); flex-wrap: wrap; }
.footer-bottom span { font-size: 12.5px; color: var(--tx-faint); }
@media (max-width: 640px){
  .footer { padding: 44px 0 32px; }
  .footer-top { flex-direction: column; gap: 32px; }
  .footer-cols { width: 100%; display: grid; grid-template-columns: 1fr 1fr; gap: 28px 20px; }
  .fcol h5 { margin-bottom: 12px; }
  .fcol a { margin-bottom: 9px; }
  .footer-bottom { flex-direction: column; align-items: flex-start; gap: 8px; margin-top: 36px; }
  .footer-bottom span { font-size: 11.5px; }
}
/* very narrow phones: one column so the @handle gets full width and never overflows */
@media (max-width: 420px){
  .footer-cols { grid-template-columns: 1fr; }
}

/* ---- image-slot empty state on dark theme ---- */
image-slot::part(frame) { background: rgba(255,255,255,0.025); }
image-slot::part(empty) { color: rgba(244,242,236,0.55); }
image-slot::part(ring) { border-color: rgba(232,195,107,0.26); }

/* ============================================================
   ENTRANCE / REVEAL  (visible by default; hidden pre-state only
   applies once JS confirms the page is painting -> body.playing.
   Inert/capture/PDF contexts never get .playing, so they stay
   visible. Live browsers get the full entrance.)
   ============================================================ */
.reveal { opacity: 1; transform: none; transition: opacity .9s var(--ease), transform .9s var(--ease); }
body.playing .reveal { opacity: 0; transform: translateY(30px); }
body.playing .reveal.in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: no-preference) {
  body.playing .hero h1 .line > span { transform: translateY(116%); animation: lineUp 1.05s var(--ease) forwards; }
  body.playing .hero h1 .l1 { animation-delay: .2s; }
  body.playing .hero h1 .l2 { animation-delay: .35s; }
  body.playing .reveal-hero { opacity: 0; animation: fadeUp .85s var(--ease) forwards; }
  body.playing .hero-badge.reveal-hero { animation-delay: .1s; }
  body.playing .hero-sub.reveal-hero { animation-delay: .55s; }
  body.playing .hero-support.reveal-hero { animation-delay: .67s; }
  body.playing .hero-actions.reveal-hero { animation-delay: .8s; }
  body.playing .scoreboard.reveal-hero { animation-delay: .92s; }
}
@keyframes lineUp { from { transform: translateY(116%); } to { transform: translateY(0); } }
@keyframes fadeUp { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }

/* --- Skyline entrance: the muted skyline unveils from the top down with a soft
   brightness ramp ("lights coming up"). clip-path + opacity + filter only
   (no transform) so it never fights the GSAP scroll-parallax. --- */
@media (prefers-reduced-motion: no-preference) {
  body.playing .skyline-img { opacity: 0; clip-path: inset(0 0 100% 0); }
  body.playing .skyline-img.mid {
    animation: skylineRise 1.8s var(--ease) .35s forwards;
  }
}
@keyframes skylineRise {
  0%   { opacity: 0;  clip-path: inset(0 0 100% 0);
         filter: invert(1) sepia(.5) saturate(1.1) hue-rotate(2deg) brightness(.28) contrast(1.02); }
  100% { opacity: .5; clip-path: inset(0 0 0 0);
         filter: invert(1) sepia(.5) saturate(1.1) hue-rotate(2deg) brightness(.6) contrast(1.02); }
}

/* Failsafe: a timer adds body.played after the entrance window. Timers fire
   even when paint is throttled, so a stalled/interrupted entrance still lands
   on fully visible content (overrides the hidden pre-state, kills animations). */
body.played .hero h1 .line > span { transform: none !important; animation: none !important; }
body.played .reveal-hero { opacity: 1 !important; transform: none !important; animation: none !important; }
body.played .reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
body.played .skyline-img { clip-path: none !important; animation: none !important; }
body.played .skyline-img.mid { opacity: .5 !important; }

@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1 !important; transform: none !important; transition: none; }
  .trophy { animation: none; }
  * { scroll-behavior: auto; }
}


/* ============================================================
   TWEAKS PANEL + MOBILE PREVIEW FRAME
   ============================================================ */
.tw-panel {
  position: fixed; right: 18px; bottom: 18px; z-index: 10000; width: 244px;
  background: rgba(14,15,19,0.92); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
  border: 1px solid var(--line-2); border-radius: 16px; color: var(--tx);
  box-shadow: 0 24px 60px -20px rgba(0,0,0,0.8); font-family: var(--body);
  animation: twIn .26s var(--ease);
}
.tw-panel[hidden] { display: none; }
@keyframes twIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.tw-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 13px 14px; border-bottom: 1px solid var(--line);
}
.tw-title { font-family: var(--display); font-weight: 800; font-size: 16px; letter-spacing: .06em; text-transform: uppercase; }
.tw-close {
  width: 26px; height: 26px; border-radius: 8px; display: grid; place-items: center;
  color: var(--tx-dim); font-size: 13px; border: 1px solid transparent; transition: .2s;
}
.tw-close:hover { color: var(--tx); border-color: var(--line-2); background: rgba(255,255,255,0.04); }
.tw-body { padding: 14px; }
.tw-row { display: flex; flex-direction: column; gap: 9px; }
.tw-label { font-family: var(--mono); font-size: 10px; letter-spacing: .18em; text-transform: uppercase; color: var(--tx-faint); }
.tw-seg {
  display: grid; grid-template-columns: 1fr 1fr; gap: 4px; padding: 4px;
  background: rgba(0,0,0,0.4); border: 1px solid var(--line); border-radius: 11px;
}
.tw-seg button {
  padding: 9px 8px; border-radius: 8px; font-family: var(--body); font-weight: 600; font-size: 13px;
  color: var(--tx-dim); transition: background .2s, color .2s; letter-spacing: .01em;
}
.tw-seg button:hover { color: var(--tx); }
.tw-seg button.on { background: var(--gold-grad); color: #21180a; box-shadow: 0 4px 14px -4px rgba(232,195,107,0.5); }
.tw-hint { margin-top: 11px; font-size: 11px; line-height: 1.5; color: var(--tx-faint); }

/* mobile preview overlay */
.tw-overlay {
  position: fixed; inset: 0; z-index: 9990; display: none;
  align-items: center; justify-content: center; padding: 24px 0 18px;
  background: radial-gradient(120% 90% at 50% 0%, rgba(20,22,28,0.9), rgba(4,5,8,0.96));
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
.tw-overlay.on { display: flex; }
.tw-phone {
  position: relative; width: 390px; max-width: 90vw; height: min(844px, 92vh);
  background: #05060a; border: 10px solid #15171d; border-radius: 46px;
  box-shadow: 0 40px 90px -24px rgba(0,0,0,0.9), 0 0 0 1px rgba(255,255,255,0.05),
              inset 0 0 0 2px rgba(255,255,255,0.03);
  overflow: hidden;
}
.tw-notch {
  position: absolute; top: 0; left: 50%; transform: translateX(-50%); z-index: 3;
  width: 150px; height: 26px; background: #15171d; border-radius: 0 0 16px 16px;
}
.tw-frame { width: 100%; height: 100%; border: 0; border-radius: 36px; background: var(--ink); display: block; }
.tw-mobile-active { overflow: hidden; }

@media (max-width: 520px){
  .tw-panel { left: 12px; right: 12px; width: auto; bottom: 12px; }
}

/* ============================================================
   LIGHT THEME  (html.theme-light — applied via head script + Tweaks)
   Most surfaces are token-driven and adapt automatically; the
   blocks below re-tune the literal-dark hero / scoreboard / CTA.
   ============================================================ */
html.theme-light {
  --ink:        #F1ECE0;   /* warm paper */
  --ink-2:      #E7E1D3;   /* recessed / footer / ticker */
  --char:       #FFFFFF;   /* cards */
  --char-2:     #F7F2E8;
  --line:       rgba(26,22,12,0.12);
  --line-2:     rgba(26,22,12,0.20);

  --gold:       #9A7A1E;   /* deeper so gold text/accents read on cream */
  --gold-hi:    #C9A227;
  --gold-deep:  #6E5512;

  --tx:         #1A1916;
  --tx-dim:     #5B584E;
  --tx-faint:   #8A8678;
}

/* keep the gold BUTTON bright (deep token would dull it) */
html.theme-light .btn-gold {
  background: linear-gradient(150deg, #F7E6B0 0%, #E8C36B 38%, #B8902F 72%, #E8C36B 100%);
  color: #2a1f08;
}
/* clipped gold headline text → deep gradient for contrast on cream */
html.theme-light .gold-text,
html.theme-light .dc-age,
html.theme-light .hero h1 .l2 {
  background: linear-gradient(150deg, #B8902F 0%, #9A7A1E 55%, #6E5512 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}

/* nav */
html.theme-light .nav.scrolled {
  background: rgba(247,243,236,0.82);
  border-bottom-color: var(--line);
}

/* hero — daytime sky */
html.theme-light .sky {
  background:
    radial-gradient(120% 80% at 75% 8%, rgba(120,168,222,0.40) 0%, transparent 46%),
    radial-gradient(90% 60% at 18% 0%, rgba(232,195,107,0.22) 0%, transparent 42%),
    linear-gradient(180deg, #cadcef 0%, #dde7f1 38%, #ece6da 70%, #f1ece0 100%);
}
html.theme-light .stars { display: none; }
html.theme-light .cityglow { opacity: .5; }
html.theme-light .spot { opacity: .35; }

/* skyline silhouette → dark-on-light (multiply drops the white) */
html.theme-light .skyline-img {
  mix-blend-mode: multiply;
  filter: sepia(.35) saturate(1.2) hue-rotate(178deg) brightness(.85) contrast(1.08) !important;
}
html.theme-light .skyline-img.mid { opacity: .42 !important; }
html.theme-light .hero .skyline-img.mid { opacity: .42 !important; }

/* hero readability scrim → light wash so dark text pops */
html.theme-light .hero-scrim {
  background:
    linear-gradient(105deg, rgba(241,236,224,0.9) 0%, rgba(241,236,224,0.55) 32%, rgba(241,236,224,0.08) 56%, transparent 72%),
    linear-gradient(0deg, rgba(241,236,224,0.55) 0%, transparent 38%) !important;
}

/* court markings → deeper gold for contrast on light floor */
html.theme-light .court-floor svg g { stroke: rgba(150,112,28,0.6) !important; }
html.theme-light .court-floor svg { filter: drop-shadow(0 0 10px rgba(150,112,28,0.22)); }

/* scoreboard → light maple hardwood */
html.theme-light .scoreboard {
  border-color: var(--line-2);
  background:
    linear-gradient(180deg, rgba(255,252,245,0.72), rgba(243,234,219,0.85)),
    repeating-linear-gradient(95deg,
      #e8d2ac 0px, #f0dcba 38px, #e3c89c 39px, #edd6b0 76px, #dfc090 77px, #ead0a4 114px);
  box-shadow: 0 24px 52px -26px rgba(90,68,22,0.4), inset 0 1px 0 rgba(255,255,255,0.6);
}
html.theme-light .scoreboard::before { border-color: rgba(150,112,28,0.22); }
html.theme-light .scoreboard::after { border-color: rgba(150,112,28,0.12); }
html.theme-light .sb-cell {
  background: linear-gradient(180deg, rgba(255,255,255,0.78), rgba(255,255,255,0.42));
  border-color: var(--line);
}

/* host country card */
html.theme-light .cc.host {
  border-color: rgba(154,122,30,0.45);
  background: linear-gradient(180deg, rgba(232,195,107,0.22), rgba(255,255,255,0.9));
}

/* country cards → light */
html.theme-light .cc {
  border-color: var(--line);
  background: linear-gradient(180deg, #ffffff, #f5efe4);
}
html.theme-light .cc:hover {
  border-color: rgba(154,122,30,0.5);
  background: linear-gradient(180deg, #ffffff, #f2ebdc);
  box-shadow: 0 14px 34px -16px rgba(154,122,30,0.4);
}
html.theme-light .cc .flag { box-shadow: 0 2px 10px rgba(0,0,0,.16), inset 0 0 0 1px rgba(0,0,0,.08); }

/* Global Participation map → light atlas panel */
html.theme-light .globe-wrap {
  border-color: var(--line-2);
  background:
    radial-gradient(120% 120% at 50% 0%, rgba(63,167,255,0.10), transparent 55%),
    radial-gradient(90% 90% at 78% 60%, rgba(232,195,107,0.12), transparent 60%),
    linear-gradient(180deg, #eef2f8, #e6e9f0);
  box-shadow: 0 20px 50px -28px rgba(40,30,10,0.3);
}
html.theme-light .node-label { fill: #46506a !important; }
html.theme-light .host-name  { fill: #8a6712 !important; }
html.theme-light .host-sub   { fill: #6a6657 !important; }
html.theme-light .globe-svg .node-core { fill: #2b6fb0 !important; }
html.theme-light .globe-svg [fill="#5d7099"] { fill: #7d8aa8 !important; }
/* Connection arcs + travelling pulses: the dark-mode gradient/glow washes out
   on the light atlas, so give them a deeper, more opaque gold to read clearly.
   (Pulse selector scoped to <circle> so it doesn't recolour the host-name text,
   which also carries fill="#F7E6B0".) */
html.theme-light .globe-svg .arc { stroke: #a9791f !important; stroke-width: 1.6 !important; opacity: .9 !important; }
html.theme-light .globe-svg circle[fill="#F7E6B0"] { fill: #a9791f !important; }
html.theme-light .node-tip { background: rgba(255,253,248,0.95); }

/* dark map module — globe frame already themed above */
html.theme-light .globe-wrap.legacy { border-color: var(--line-2); }

/* final CTA → light arena */
html.theme-light .finalcta .bg {
  background:
    radial-gradient(75% 85% at 50% 116%, rgba(232,195,107,0.26) 0%, transparent 55%),
    radial-gradient(55% 60% at 22% 4%, rgba(120,168,222,0.22) 0%, transparent 60%),
    linear-gradient(180deg, #eaeef3 0%, #f0ebe0 56%, #e7e0d2 100%);
}
html.theme-light .cta-skyline {
  mix-blend-mode: multiply; opacity: .5;
  filter: sepia(.35) saturate(1.2) hue-rotate(178deg) brightness(.85) contrast(1.08) !important;
}
html.theme-light .cta-glow { opacity: .55; }
html.theme-light .finalcta .grid-floor { opacity: .4; }
html.theme-light .cta-streaks span { opacity: .25; }

/* film grain barely-there on light */
html.theme-light body::after,
html.theme-light::after { opacity: .025; }
