/* ============================================================
   TREEHOUSE EVENTS — Consolidated Stylesheet
   Phase 2 Refactor: Architecture, Typography, Accessibility
   treehouseevents.cliffeliz.ai
   ============================================================ */

/* ============================================================
   CSS CUSTOM PROPERTIES
   ============================================================ */
:root {
  /* PHASE 2 FIX #1 — Brand color palette consolidated to 6 variables */
  --color-green:        #2D4A1E;
  --color-green-dark:   #1a3a1a;
  --color-green-mid:    #2b5c1f;
  --color-green-light:  #3A5E28;
  --color-cream:        #E8E6DF;
  --color-cream-dark:   #e8e3db;
  --color-cream-light:  #f0ede8;
  --color-gold:         #d4af37;
  --color-aperol:       #e05b1a;
  --color-accent:       #7eb832;
  --color-accent-dk:    #6aa228;
  --color-white:        #ffffff;

  /* Opacity variants */
  --color-green-90:     rgba(26,58,26,0.90);
  --color-green-80:     rgba(26,58,26,0.80);
  --color-green-12:     rgba(26,58,26,0.12);
  --color-green-06:     rgba(26,58,26,0.06);
  --color-cream-20:     rgba(240,237,232,0.20);
  --color-cream-10:     rgba(240,237,232,0.10);
  --color-cream-08:     rgba(240,237,232,0.08);

  /* Legacy aliases — kept for backward compatibility */
  --g:       var(--color-green-dark);
  --g2:      var(--color-green-mid);
  --linen:   var(--color-cream-light);
  --linen2:  var(--color-cream-dark);
  --white:   var(--color-white);
  --accent:  var(--color-accent);
  --adk:     var(--color-accent-dk);
  --gold:    var(--color-gold);
  --aperol:  var(--color-aperol);
  --g90:     var(--color-green-90);
  --g80:     var(--color-green-80);
  --g12:     var(--color-green-12);
  --g06:     var(--color-green-06);
  --ln20:    var(--color-cream-20);
  --ln10:    var(--color-cream-10);
  --ln08:    var(--color-cream-08);

  /* PHASE 2 FIX #2 — Type scale using CSS variables */
  --text-xs:   0.75rem;   /* labels, credits */
  --text-sm:   0.85rem;   /* form labels, dates */
  --text-base: 1rem;      /* body text */
  --text-md:   1.15rem;   /* descriptions, body emphasis */
  --text-lg:   1.3rem;    /* quotes, button text */
  --text-xl:   1.75rem;   /* tier prices */
  --text-2xl:  2rem;      /* tier names, subheadings */
  --text-3xl:  3.5rem;    /* section headings (mobile) */
  --text-4xl:  4.5rem;    /* section headings (desktop) */
  --text-5xl:  6rem;      /* stat numbers */
  --text-hero: 8rem;      /* hero headline */

  /* Typography */
  --ff-d: 'Bebas Neue', sans-serif;
  --ff-e: 'Playfair Display', serif;
  --ff-b: 'Inter', sans-serif;

  /* Layout */
  --pad:  5rem clamp(1.5rem,5vw,5rem);
  --nav:  72px;
  --wrap: 1280px;
  --r:    6px;
  --ease: cubic-bezier(0.4,0,0.2,1);
  --ts:   0.3s var(--ease);
  --tf:   0.15s var(--ease);
}

/* ============================================================
   RESET & BASE
   ============================================================ */
*,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }
html { scroll-behavior:smooth; scrollbar-gutter:stable; }
::selection { background:var(--color-green); color:var(--color-cream); }
::-moz-selection { background:var(--color-green); color:var(--color-cream); }
body { font-family:var(--ff-b); font-size:1rem; line-height:1.7; -webkit-font-smoothing:antialiased; overflow-x:hidden; background:var(--g); }
img { display:block; max-width:100%; height:auto; }
a { color:inherit; text-decoration:none; }
ul { list-style:none; }
button { font-family:inherit; cursor:pointer; border:none; background:none; }

/* PHASE 2 FIX #3 — Skip-to-content link */
.skip-link {
  position: absolute;
  top: -100%;
  left: 0;
  padding: 12px 24px;
  background: var(--color-green);
  color: var(--color-cream);
  font-family: var(--ff-b);
  font-size: var(--text-base);
  font-weight: 600;
  z-index: 9999;
  text-decoration: none;
  transition: top 0.2s ease;
}
.skip-link:focus { top: 0; }

/* PHASE 2 FIX #4 — Focus indicators */
:focus-visible {
  outline: 2px solid var(--color-green);
  outline-offset: 3px;
}

/* PHASE 2 FIX #5 — Screen reader only utility */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}

/* ============================================================
   SECTIONS
   ============================================================ */
.dk { background:var(--g); color:var(--linen); position:relative; overflow:visible; padding:80px 0; }
.lt {
  background: linear-gradient(
    155deg,
    var(--color-cream) 0%,
    #e2e8d8 20%,
    var(--color-cream) 40%,
    #dde4d4 60%,
    var(--color-cream) 80%,
    #e0e6d6 100%
  );
  color:var(--g); position:relative; overflow:visible; padding:80px 0;
}
/* Film grain on cream sections */
.lt::after {
  content:'';
  position:absolute;
  top:0; left:0; width:100%; height:100%;
  opacity:0.3;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");
  pointer-events:none;
  z-index:0;
}
.lt > * { position:relative; z-index:1; }
/* Full-bleed sections override padding */
.dk.no-pad, .lt.no-pad { padding:0; }

/* GRAIN */
.grain::before { content:''; position:absolute; inset:0; pointer-events:none; z-index:1; opacity:0.03; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.72' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }
.grain > * { position:relative; z-index:2; }

/* WRAP */
.w { max-width:var(--wrap); margin:0 auto; padding:var(--pad); width:100%; }

/* ============================================================
   TYPOGRAPHY
   ============================================================ */
/* PHASE 2 FIX #6 — Standardized heading hierarchy */
h1 { font-family:var(--ff-d); font-size:clamp(var(--text-4xl), 9vw, var(--text-hero)); line-height:0.92; letter-spacing:0.02em; text-transform:uppercase; }
h2 { font-family:var(--ff-e); font-size:clamp(var(--text-3xl), 8vw, var(--text-4xl)); font-weight:700; line-height:1.1; letter-spacing:-0.02em; text-wrap:balance; }
h3 { font-family:var(--ff-e); font-size:clamp(1rem,2vw,1.4rem); font-weight:700; line-height:1.3; }
p { font-size:var(--text-base); line-height:1.6; font-weight:300; }
.lbl { font-family:var(--ff-b); font-size:var(--text-xs); font-weight:500; letter-spacing:0.15em; text-transform:uppercase; opacity:0.6; display:block; margin-bottom:16px; }
.cap { font-size:0.68rem; font-weight:400; opacity:0.52; letter-spacing:0.04em; }

/* ============================================================
   BUTTONS — PHASE 2 FIX #7 — Unified button system
   ============================================================ */
/* Base button */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 16px 40px;
  font-family: var(--ff-b);
  font-size: var(--text-base);
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: lowercase;
  border-radius: 4px;
  transition: all 0.3s ease;
  cursor: pointer;
  white-space: nowrap;
  border: 1.5px solid transparent;
  text-decoration: none;
}
/* Primary button */
.btn-primary,
.btn-p {
  background: var(--color-green);
  color: var(--color-cream);
  border-color: var(--color-green);
}
.btn-primary:hover,
.btn-p:hover {
  filter: brightness(1.15);
  transform: translateY(-1px);
  box-shadow: 0 4px 16px rgba(45,74,30,0.25);
}
/* Secondary/outline button */
.btn-secondary,
.btn-s {
  background: transparent;
  color: currentColor;
  border-color: currentColor;
}
.btn-secondary:hover,
.btn-s:hover { background: rgba(255,255,255,0.1); transform: translateY(-1px); }
.dk .btn-secondary:hover, .dk .btn-s:hover { background: rgba(240,237,232,0.1); }
.lt .btn-secondary:hover, .lt .btn-s:hover { background: rgba(45,74,30,0.08); }
/* Full-width variant */
.btn-full {
  display: block;
  width: 100%;
  max-width: 600px;
  text-align: center;
  padding: 24px 48px;
  font-size: var(--text-lg);
  letter-spacing: 0.08em;
  margin: 40px 0;
}
@media (max-width: 640px) {
  .btn-full { max-width: 100%; }
}

/* ============================================================
   ANIMATIONS
   ============================================================ */
@keyframes fadeUp { from{opacity:0;transform:translateY(24px)} to{opacity:1;transform:translateY(0)} }
@keyframes fadeIn { from{opacity:0} to{opacity:1} }
@keyframes slideLeft { from{opacity:0;transform:translateX(-32px)} to{opacity:1;transform:translateX(0)} }
@keyframes bounce { 0%,100%{transform:translateY(0)} 50%{transform:translateY(5px)} }
@keyframes bob { 0%,100%{transform:translateX(-50%) translateY(0)} 50%{transform:translateX(-50%) translateY(7px)} }
@keyframes marquee { from{transform:translateX(0)} to{transform:translateX(-50%)} }
[data-a="u"] { opacity:0; transform:translateY(24px); }
[data-a="f"] { opacity:0; }
[data-a="l"] { opacity:0; transform:translateX(-32px); }
[data-a="u"].on { animation:fadeUp 0.7s ease-out forwards; }
[data-a="f"].on { animation:fadeIn 0.7s ease-out forwards; }
[data-a="l"].on { animation:slideLeft 0.7s ease-out forwards; }
[data-d="1"].on{animation-delay:.1s}[data-d="2"].on{animation-delay:.2s}[data-d="3"].on{animation-delay:.3s}[data-d="4"].on{animation-delay:.4s}[data-d="5"].on{animation-delay:.5s}[data-d="6"].on{animation-delay:.6s}

/* ============================================================
   CURSOR
   ============================================================ */
.cur,.cur-r { position:fixed; top:0; left:0; pointer-events:none; z-index:9999; transform:translate(-50%,-50%); will-change:transform; }
.cur { width:8px; height:8px; background:var(--accent); border-radius:50%; }
.cur-r { width:32px; height:32px; border:1.5px solid var(--accent); border-radius:50%; opacity:0.7; transition:width var(--tf),height var(--tf),opacity var(--tf); }
body.ch .cur-r { width:46px; height:46px; opacity:1; }
body.ci .cur { background:var(--g); }
body.ci .cur-r { border-color:var(--g); }

/* ============================================================
   NAV
   ============================================================ */
.nav { position:fixed; top:0; left:0; right:0; z-index:1000; height:var(--nav); display:flex; align-items:center; justify-content:space-between; padding:0 clamp(1.5rem,5vw,4rem); transition:background var(--ts),box-shadow var(--ts); }
.nav.sc { backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); background:var(--color-green-90); box-shadow:0 1px 0 var(--ln08); }
.nav-logo img { height:36px; width:auto; }
.nav-links { display:flex; align-items:center; gap:1.5rem; }
.nav-links a { font-size:1.1rem; font-weight:500; letter-spacing:0.06em; text-transform:lowercase; color:var(--linen); opacity:0.6; transition:opacity 0.3s ease, text-decoration-color 0.3s ease; text-decoration:underline; text-decoration-color:transparent; text-underline-offset:3px; position:relative; }
.nav-links a:hover, .nav-links a.hi { opacity:1; text-decoration-color:rgba(240,237,232,0.5); }
.nav-links a::after { content:""; position:absolute; bottom:-2px; left:0; width:0; height:1px; background:currentColor; transition:width 0.25s ease; }
.nav-links a:hover::after { width:100%; }
/* PHASE 2 FIX #8 — ARIA label on hamburger */
.ham { display:none; flex-direction:column; gap:5px; padding:4px; }
.ham span { display:block; width:22px; height:1.5px; background:var(--linen); transition:all var(--ts); }
.mob { position:fixed; inset:0; z-index:990; background:linear-gradient(180deg,var(--g) 0%,#0a1c0a 100%); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2.5rem; }
.mob[hidden] { display:none; }
.mob::before { content:''; position:absolute; inset:0; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.72' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); opacity:0.025; pointer-events:none; }
.mob a { font-family:var(--ff-e); font-size:2.2rem; font-weight:700; color:var(--linen); opacity:0.85; display:block; text-align:center; transition:opacity var(--tf); }
.mob a:hover { opacity:1; }
.mob-x { position:absolute; top:1.5rem; right:2rem; font-size:1.5rem; color:var(--linen); opacity:0.6; cursor:pointer; background:none; border:none; }
/* Active nav state */
.nav-links a.nav-active,
.mob nav a.nav-active { color:var(--accent); }

/* IMAGE FALLBACK */
.if { display:none; position:absolute; inset:0; background:var(--color-green-mid); color:var(--linen); align-items:center; justify-content:center; font-family:var(--ff-d); font-size:1.1rem; letter-spacing:0.1em; opacity:0.5; }
.fail .if { display:flex; }
.fail { position:relative; }

/* ============================================================
   HERO
   ============================================================ */
.hero { min-height:100svh; display:flex; flex-direction:column; align-items:center; justify-content:center; position:relative; overflow:visible; }
.hero-bg { position:absolute; inset:0; z-index:0; overflow:hidden; }
.hero-bg img { width:100%; height:100%; object-fit:cover; object-position:center 30%; opacity:0.65; }
.hero-bg::after { content:''; position:absolute; inset:0; background:linear-gradient(to bottom, rgba(10,28,10,0.35) 0%, rgba(10,28,10,0.1) 35%, rgba(10,28,10,0.5) 70%, rgba(10,28,10,0.92) 100%), linear-gradient(to right, rgba(10,28,10,0.4) 0%, transparent 55%); z-index:1; }
.hero-inner { position:relative; z-index:2; display:flex; flex-direction:column; align-items:center; text-align:center; gap:1.75rem; padding:calc(var(--nav) + 3rem) clamp(1.5rem,5vw,4rem) 4rem; max-width:1000px; }
.hero-eye { display:inline-flex; align-items:center; gap:1rem; font-size:0.56rem; font-weight:500; letter-spacing:0.32em; text-transform:uppercase; color:var(--linen); opacity:0.6; }
.hero-eye::before,.hero-eye::after { content:''; display:block; width:2.5rem; height:1px; background:var(--linen); opacity:0.3; }
.hero-wm img { height:clamp(80px,16vw,160px); width:auto; filter:drop-shadow(0 2px 24px rgba(0,0,0,0.4)); }
.hero-rule { width:56px; height:1.5px; background:var(--accent); opacity:0.9; }
.hero-sub { font-family:var(--ff-e); font-style:italic; font-size:clamp(1.05rem,2.2vw,1.45rem); font-weight:400; opacity:0.85; max-width:440px; line-height:1.55; text-shadow:0 1px 12px rgba(0,0,0,0.3); }
.hero-ctas { display:flex; align-items:center; gap:1.25rem; flex-wrap:wrap; justify-content:center; margin-top:0.75rem; }
.scroll-hint { position:absolute; bottom:2.5rem; left:50%; transform:translateX(-50%); z-index:2; display:flex; flex-direction:column; align-items:center; gap:0.5rem; opacity:0.35; animation:bob 2.5s ease-in-out infinite; }
.scroll-hint-line { width:1px; height:2.5rem; background:var(--linen); }

/* ── HERO COUNTDOWN ── */
.hero-countdown { display:flex; flex-direction:column; align-items:center; gap:0.35rem; margin-top:0.5rem; }
.countdown-label { font-family:var(--ff-b); font-size:0.68rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--accent); opacity:0.9; }
.countdown-display { display:flex; align-items:baseline; gap:0.15rem; }
.countdown-num { font-family:var(--ff-d); font-size:clamp(3.5rem,8vw,6rem); line-height:1; color:var(--linen); letter-spacing:-0.02em; min-width:2ch; text-align:center; }
.countdown-sep { font-family:var(--ff-d); font-size:clamp(1.2rem,3vw,2rem); color:var(--accent); letter-spacing:0.05em; margin:0 0.1rem; }
.countdown-colon { font-family:var(--ff-d); font-size:clamp(2rem,5vw,4rem); color:var(--linen); opacity:0.5; margin:0 0.25rem; line-height:1; }

/* ============================================================
   MARQUEE TICKER
   ============================================================ */
.marquee-wrap { overflow:hidden; border-top:1px solid var(--ln10); border-bottom:1px solid var(--ln10); padding:0.9rem 0; background:var(--g); }
.marquee-track { display:flex; gap:0; white-space:nowrap; animation:marquee 28s linear infinite; }
.marquee-track:hover { animation-play-state:paused; }
.marquee-item { display:inline-flex; align-items:center; gap:1.5rem; padding:0 2.5rem; font-family:var(--ff-d); font-size:0.9rem; letter-spacing:0.18em; text-transform:uppercase; color:var(--linen); opacity:0.38; }
.marquee-dot { width:4px; height:4px; border-radius:50%; background:var(--accent); opacity:0.7; flex-shrink:0; }

/* ============================================================
   STATS
   ============================================================ */
.stats-band { display:flex; align-items:stretch; justify-content:center; padding:clamp(3rem,5vw,5rem) clamp(1.5rem,5vw,5rem); max-width:var(--wrap); margin:0 auto; border-top:1px solid var(--ln10); border-bottom:1px solid var(--ln10); }
.stat { display:flex; flex-direction:column; align-items:center; gap:0.5rem; flex:1; text-align:center; padding:0 2rem; }
.stat-v { font-family:var(--ff-d); font-size:clamp(3rem,6vw,5.5rem); line-height:1; letter-spacing:-0.02em; color:var(--linen); }
.stat-l { font-size:0.56rem; font-weight:500; letter-spacing:0.2em; text-transform:uppercase; opacity:0.38; }
.stat-div { width:1px; align-self:stretch; background:var(--ln10); flex-shrink:0; }
.stat-v[data-count] { transition:none; }

/* ============================================================
   CURATE SECTION
   ============================================================ */
.curate-section { position:relative; width:100%; overflow:visible; padding:0; }
.curate-section .dj-photo { width:100%; height:88vh; object-fit:cover; object-position:center 60%; display:block; max-height:none; }
.curate-section .curate-copy { position:absolute; top:clamp(3rem,12vw,8rem); left:50%; transform:translateX(-50%); text-align:center; color:var(--color-cream-light); max-width:640px; padding:0 24px; width:100%; z-index:2; }
.curate-copy::before { content:""; position:absolute; inset:-50px -80px; background:radial-gradient(ellipse at center, rgba(0,0,0,0.45) 0%, rgba(0,0,0,0) 70%); border-radius:50%; z-index:-1; pointer-events:none; }
.curate-copy h2 { font-size:clamp(2.5rem,6vw,5rem); font-family:var(--ff-d); line-height:0.9; letter-spacing:-0.02em; font-weight:700; margin-bottom:16px; color:var(--color-cream-light); text-shadow:0 2px 10px rgba(0,0,0,0.65); } /* FIX — reduced from clamp(3.5rem,8vw,7rem) for full visibility */
.curate-copy p { font-size:var(--text-base); line-height:1.7; color:rgba(240,237,232,0.85); margin-bottom:0; text-shadow:0 1px 6px rgba(0,0,0,0.55); }
.curate-copy .tag { background:rgba(0,0,0,0.35); border-color:rgba(240,237,232,0.3); color:var(--color-cream-light); }
.curate-copy .tag:hover { background:rgba(240,237,232,0.15); color:var(--color-cream-light); }

/* Curate video section */
.curate-video-section { width:100%; background:var(--color-green); line-height:0; display:block; }
.curate-video { width:100%; height:auto; display:block; object-fit:contain; }

/* ============================================================
   EVENT GALLERY SECTIONS
   ============================================================ */
.ev-section { padding:32px 0 0; margin-bottom:0; border-top:1px solid rgba(126,184,50,0.08); }
.ev-header { padding:0 clamp(1.5rem,5vw,5rem) 0.5rem; max-width:var(--wrap); margin:0 auto; }
.ev-header .lbl { margin-bottom:0.5rem; }
.ev-title { font-family:var(--ff-d); font-size:clamp(3.5rem,8vw,7rem); letter-spacing:-0.02em; line-height:0.88; margin-bottom:0.5rem; }
.ev-desc { font-size:0.92rem; opacity:0.65; max-width:520px; font-style:italic; font-family:var(--ff-e); font-weight:400; line-height:1.6; margin-bottom:0.5rem; }
.ev-meta-row { display:flex; align-items:center; gap:2rem; flex-wrap:wrap; }
.ev-date { font-size:0.68rem; font-weight:500; letter-spacing:0.12em; text-transform:uppercase; opacity:0.45; }

/* Staggered reveal animations */
.reveal-child {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.5s ease, transform 0.5s ease;
}
.reveal.is-visible .reveal-child,
.reveal.revealed .reveal-child { opacity:1; transform:translateY(0); }
.ev-header .reveal-child:nth-child(1) { transition-delay:0ms; }
.ev-header .reveal-child:nth-child(2) { transition-delay:80ms; }
.ev-header .reveal-child:nth-child(3) { transition-delay:160ms; }
.ev-header .reveal-child:nth-child(4) { transition-delay:240ms; }

/* ============================================================
   MASONRY GALLERY
   ============================================================ */
.photo-grid,
.gallery-visible,
.gallery-collapsed {
  display: block;
  column-count: 3;
  column-gap: 6px;
  margin: 0;
  padding: 0;
}
.photo-grid .gallery-item,
.gallery-visible .gallery-item,
.gallery-collapsed .gallery-item {
  break-inside: avoid;
  margin-bottom: 6px;
  overflow: hidden;
  background: var(--color-green-dark);
  cursor: zoom-in;
  position: relative;
  display: block;
}
.photo-grid .gallery-item img,
.gallery-visible .gallery-item img,
.gallery-collapsed .gallery-item img {
  width: 100%;
  height: auto;
  display: block;
  transition: transform 0.3s ease;
}
.gallery-collapsed { overflow:hidden; max-height:0; opacity:0; transition:max-height 0.6s cubic-bezier(0.25,0.46,0.45,0.94),opacity 0.4s ease; }
.gallery-collapsed.is-open { max-height:9999px; opacity:1; }
.gallery-item { overflow:hidden; background:var(--color-green-dark); cursor:zoom-in; position:relative; margin:0; padding:0; }
.gallery-item img { width:100%; height:auto; display:block; transition:transform 0.3s ease; }
.gallery-item:hover img { transform:scale(1.05); }
.gallery-item { transition:transform 0.35s cubic-bezier(0.25,0.46,0.45,0.94); }
.gallery-item:hover { transform:scale(1.04); z-index:2; }
.gallery-item img { transition:filter 0.35s ease; }
.gallery-item:hover img { filter:brightness(1.08) saturate(1.1); }

/* Video tiles in gallery grid */
.gallery-item.is-video::after { display:none; }
.gallery-item.is-video::before {
  content:"";
  position:absolute;
  bottom:8px; right:8px;
  width:6px; height:6px;
  border-radius:50%;
  background:rgba(240,237,232,0.7);
  z-index:2;
  pointer-events:none;
}
.gallery-item.is-video video { width:100%; height:auto; object-fit:contain; display:block; } /* FIX — natural aspect ratio, no cropping */

/* Gallery toggle */
.gallery-toggle { transition:background 0.25s ease,color 0.25s ease,transform 0.15s ease,border-color 0.25s ease; }
.gallery-toggle:hover { transform:scale(1.02); }
.gallery-toggle:active { transform:scale(0.98); }

/* ============================================================
   LIGHTBOX
   ============================================================ */
.lightbox { display:flex; position:fixed; inset:0; z-index:9999; background:rgba(0,0,0,0.94); align-items:center; justify-content:center; flex-direction:column; opacity:0; transition:opacity 0.3s ease; pointer-events:none; }
.lightbox.is-open { opacity:1; pointer-events:all; }
.lightbox-media { display:flex; align-items:center; justify-content:center; max-width:90vw; max-height:82vh; }
.lightbox-media img { max-width:90vw; max-height:82vh; object-fit:contain; border-radius:4px; display:block; opacity:0; transform:scale(0.96); transition:opacity 0.3s ease,transform 0.3s ease; }
.lightbox-media video { max-width:90vw; max-height:82vh; border-radius:4px; opacity:0; transform:scale(0.96); transition:opacity 0.3s ease,transform 0.3s ease; }
.lightbox-media.loaded img, .lightbox-media.loaded video { opacity:1; transform:scale(1); }
.lightbox-close { position:fixed; top:18px; right:22px; color:var(--color-cream-light); font-size:38px; background:none; border:none; cursor:pointer; padding:8px; z-index:10000; line-height:1; }
.lightbox-prev, .lightbox-next { position:fixed; top:50%; transform:translateY(-50%); width:48px; height:48px; border-radius:50%; border:1px solid rgba(240,237,232,0.3); background:rgba(240,237,232,0.12); color:var(--color-cream-light); font-size:22px; cursor:pointer; display:flex; align-items:center; justify-content:center; z-index:10000; }
.lightbox-prev { left:16px; }
.lightbox-next { right:16px; }
.lightbox-counter { color:rgba(240,237,232,0.6); font-size:13px; margin-top:14px; }

/* ============================================================
   BRAND LOGOS
   ============================================================ */
.brand-logo { height:56px; width:auto; max-width:140px; object-fit:contain; filter:invert(1) brightness(0.85); opacity:0.75; transition:filter 0.25s,opacity 0.25s,transform 0.25s; }
.brand-logo:hover { filter:invert(1) grayscale(0%) brightness(1.3); opacity:1; transform:scale(1.06); }
.brands-grid-wrap { display:grid; grid-template-columns:repeat(6,1fr); gap:2rem 3rem; align-items:center; justify-items:center; padding:3rem 0; }

/* ============================================================
   REVEAL ANIMATIONS
   ============================================================ */
.reveal { opacity:0; transform:translateY(32px); transition:opacity 0.7s cubic-bezier(0.25,0.46,0.45,0.94),transform 0.7s cubic-bezier(0.25,0.46,0.45,0.94); }
.reveal.is-visible { opacity:1; transform:translateY(0); }
.reveal.in { opacity:1; transform:translateY(0); }

/* ============================================================
   VENUE CAROUSEL
   ============================================================ */
.vc-slide { position:absolute; inset:0; opacity:0; transition:opacity 1.1s ease; }
.vc-slide.active { opacity:1; }
.vc-slide img { width:100%; height:100%; object-fit:cover; object-position:center; display:block; }
.vc-dots { position:absolute; bottom:14px; left:50%; transform:translateX(-50%); display:flex; gap:7px; z-index:3; }
.vc-dot { width:6px; height:6px; border-radius:50%; background:rgba(240,237,232,0.35); border:none; cursor:pointer; padding:0; transition:background 0.25s,transform 0.25s; }
.vc-dot.active { background:var(--accent); transform:scale(1.3); }
.vc-btn { position:absolute; top:50%; transform:translateY(-50%); z-index:3; width:40px; height:40px; border-radius:50%; border:1px solid rgba(240,237,232,0.25); background:rgba(10,28,10,0.45); color:var(--linen); font-size:18px; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background 0.2s; backdrop-filter:blur(6px); }
.vc-btn:hover { background:rgba(10,28,10,0.7); }
.vc-prev { left:14px; }
.vc-next { right:14px; }

/* ============================================================
   NEXT EVENT SECTION
   ============================================================ */
.event-date { font-family:var(--ff-e); font-size:clamp(2.8rem,5.5vw,5rem); font-weight:700; line-height:1; letter-spacing:-0.02em; margin-bottom:0.25rem; }
.event-time { font-size:0.82rem; opacity:0.5; letter-spacing:0.06em; }
.venue { border-left:3px solid var(--accent); padding-left:1.5rem; margin:1.75rem 0; }
.venue-n { font-family:var(--ff-e); font-size:1.2rem; font-weight:700; }
.venue-l { font-size:0.78rem; opacity:0.48; margin-top:0.2rem; }
.event-meta { font-size:0.66rem; font-weight:500; letter-spacing:0.1em; text-transform:uppercase; opacity:0.48; margin-bottom:1.75rem; }
.event-img { border-radius:var(--r); overflow:hidden; aspect-ratio:3/4; position:relative; }
.event-img img { width:100%; height:100%; object-fit:cover; object-position:center top; transition:transform 0.6s var(--ease); }
.event-img:hover img { transform:scale(1.03); }

/* ============================================================
   HOW IT WORKS
   ============================================================ */
.hiw-inner .lbl { margin-bottom:1rem; }
.hiw-inner h2 { margin-bottom:3.5rem; }
.hiw-steps { display:grid; grid-template-columns:repeat(4,1fr); gap:0; position:relative; }
.hiw-steps::before { content:''; position:absolute; top:2rem; left:12.5%; right:12.5%; height:1px; background:var(--color-green-12); z-index:0; }
.hiw-step { display:flex; flex-direction:column; gap:0.75rem; padding:0 1.5rem; position:relative; z-index:1; background:var(--color-green-06); border-radius:var(--r); }
.hiw-step:first-child { padding-left:0; }
.hiw-step:last-child { padding-right:0; }
.hiw-n { font-family:var(--ff-d); font-size:3rem; line-height:1; color:var(--accent); margin-bottom:0.5rem; }
.hiw-t { font-family:var(--ff-e); font-size:1.05rem; font-weight:700; }
.hiw-d { font-size:0.83rem; font-weight:300; opacity:0.62; line-height:1.75; }

/* Scarcity line */
.scarcity-line { font-family:var(--ff-b); font-size:0.82rem; font-weight:500; letter-spacing:0.12em; text-transform:uppercase; opacity:0.58; text-align:center; margin-bottom:0.75rem; color:var(--accent); }

/* ============================================================
   JOIN / GET ON THE LIST
   ============================================================ */
.join { text-align:center; background:linear-gradient(180deg, var(--g) 0%, #0f2410 100%); }
.join-inner { max-width:640px; margin:0 auto; padding:var(--pad); display:flex; flex-direction:column; align-items:center; gap:1.5rem; }
.join-inner h2 { margin-bottom:0.25rem; font-size:clamp(2.2rem,4.5vw,3.5rem); }
.join-body { max-width:440px; opacity:0.7; font-size:var(--text-base); line-height:1.75; }
.join-form { width:100%; max-width:520px; margin-top:0.5rem; }
.join-row { display:flex; border:1.5px solid var(--ln20); border-radius:var(--r); overflow:hidden; transition:border-color var(--tf); }
.join-row:focus-within { border-color:var(--accent); box-shadow:0 0 0 3px rgba(126,184,50,0.15); }
.join-row input { flex:1; padding:1.1rem 1.5rem; background:transparent; border:none; outline:none; color:var(--linen); font-family:var(--ff-b); font-size:0.9rem; font-weight:300; }
.join-row input::placeholder { color:var(--linen); opacity:0.32; }
.join-row .btn-p { border-radius:0; padding:1.1rem 2rem; font-size:0.72rem; }
.join-ok { font-family:var(--ff-e); font-style:italic; font-size:1.05rem; color:var(--accent); margin-top:0.75rem; opacity:0; transition:opacity var(--ts); }
.join-ok.show { opacity:1; }

/* ============================================================
   FOOTER
   ============================================================ */
.foot-top { display:flex; flex-direction:column; align-items:center; text-align:center; gap:0.75rem; padding:clamp(4rem,7vw,6rem) clamp(1.5rem,5vw,5rem) 2.5rem; }
.foot-logo img { height:72px; width:auto; opacity:0.75; transition:opacity var(--tf),transform var(--tf); }
.foot-logo:hover img { opacity:1; transform:scale(1.03); }
.foot-tag { font-size:0.54rem; font-weight:500; letter-spacing:0.26em; text-transform:uppercase; opacity:0.25; }
.foot-links { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:0.5rem 2.5rem; padding:0 clamp(1.5rem,5vw,5rem) 2.5rem; }
.foot-links a { font-size:0.68rem; opacity:0.4; letter-spacing:0.08em; transition:opacity var(--tf),color var(--tf); }
.foot-links a:hover { opacity:1; color:var(--accent); }
.foot-btm { padding:1.5rem clamp(1.5rem,5vw,5rem); text-align:center; border-top:1px solid var(--ln08); }
.foot-copy { font-size:0.54rem; opacity:0.18; letter-spacing:0.12em; text-transform:uppercase; }

/* ============================================================
   TAGS
   ============================================================ */
.tags { display:flex; flex-wrap:wrap; gap:0.6rem; }
.tag { border:1px solid var(--color-green-12); border-radius:var(--r); padding:0.42rem 1rem; font-size:0.7rem; font-weight:500; letter-spacing:0.06em; text-transform:lowercase; cursor:default; transition:background var(--tf),color var(--tf); }
.tag:hover { background:var(--g); color:var(--linen); }

/* ============================================================
   MOBILE NAV DROPDOWN
   ============================================================ */
.nav-mobile {
  position:fixed;
  top:var(--nav);
  left:0;
  right:0;
  z-index:998;
  background:var(--g);
  max-height:0;
  overflow:hidden;
  transition:max-height 0.28s ease, opacity 0.22s ease;
  opacity:0;
  box-shadow:0 8px 32px rgba(0,0,0,0.35);
  backdrop-filter:blur(8px);
}
.nav-mobile.is-open { max-height:50vh; opacity:1; }
.nav-mobile ul { display:flex; flex-direction:column; padding:1.25rem 2rem 1.75rem; gap:0; list-style:none; margin:0; }
.nav-mobile ul li a { display:block; font-family:var(--ff-d); font-size:1.6rem; letter-spacing:0.04em; color:var(--linen); padding:0.6rem 0; border-bottom:1px solid rgba(240,237,232,0.08); text-decoration:none; transition:color 0.2s; }
.nav-mobile ul li:last-child a { border-bottom:none; }
.nav-mobile ul li a:hover { color:var(--accent); }
.nav-mobile-backdrop { display:none; position:fixed; inset:0; top:var(--nav); background:rgba(0,0,0,0.45); z-index:997; backdrop-filter:blur(2px); }
.nav-mobile-backdrop.is-open { display:block; }

/* ============================================================
   SPONSOR VIDEO
   ============================================================ */
.sponsor-video { width:100%; height:100%; object-fit:cover; display:block; border-radius:4px; }
.why-photos { position:relative; overflow:hidden; border-radius:4px; min-height:60vh; max-height:none; }

/* ============================================================
   SPONSOR PAGE STYLES
   Phase 2: Merged from sponsor.html inline <style> block
   ============================================================ */

/* PHASE 2 FIX #9 — Viewport-centered content wrappers (fixes scrollbar asymmetry).
   Using 100vw-based margins ensures equal left/right gaps regardless of scrollbar width.
   Specificity is high enough to override .w defaults without !important. */
body .sp-stats-inner,
body .sp-packages-inner,
body .sp-contact-inner,
body #sp-brands .w {
  margin-left: max(24px, calc((100vw - 1100px) / 2));
  margin-right: max(24px, calc((100vw - 1100px) / 2));
  max-width: 1100px;
  box-sizing: border-box;
}

/* ── SPONSOR HERO ── */
.sp-hero {
  position: relative;
  width: 100%;
  min-height: 60vh; /* FIX — shortened from 100vh */
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: visible; /* FIX #2 Round 46 — never clip hero text at any zoom level */
  background: var(--g);
}
.sp-hero-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden; /* FIX #2 Round 46 — contain bg image within section */
}
/* Sponsor hero background video — positioned absolutely so it doesn't affect layout */
.sponsor-hero-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  z-index: 0;
  pointer-events: none;
}
.sp-hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(10,28,10,0.72) 0%, rgba(10,28,10,0.55) 50%, rgba(10,28,10,0.78) 100%);
  z-index: 1;
}
.sp-hero-inner {
  position: relative;
  z-index: 2;
  text-align: center;
  color: var(--linen);
  max-width: 800px;
  padding: 120px clamp(1.5rem, 5vw, 4rem); /* FIX #2 Round 46 — generous vertical padding so text never touches edges */
  box-sizing: border-box;
}
.sp-hero-inner .lbl { margin-bottom: 1.5rem; display: block; }
.sp-hero-h1 {
  font-family: var(--ff-d);
  font-size: clamp(2.5rem, 6vw, var(--text-hero)); /* FIX #2 Round 46 — lower floor so text scales down at high zoom */
  line-height: 0.92;
  word-wrap: break-word;
  overflow-wrap: break-word;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--linen);
  margin-bottom: 1.75rem;
  text-shadow: 0 2px 20px rgba(0,0,0,0.5);
}
.sp-hero-sub {
  font-family: var(--ff-b);
  font-size: clamp(var(--text-base), 2vw, var(--text-md));
  line-height: 1.7;
  color: rgba(240,237,232,0.85);
  max-width: 600px;
  margin: 0 auto 2.5rem;
  text-shadow: 0 1px 8px rgba(0,0,0,0.4);
}
.sp-hero-scroll {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-family: var(--ff-b);
  font-size: var(--text-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(240,237,232,0.55);
  text-decoration: none;
  transition: color var(--ts);
}
.sp-hero-scroll:hover { color: var(--linen); }
.sp-hero-scroll svg { animation: bounce 2s ease-in-out infinite; }

/* ── STATS SECTION ── */
body .sp-stats {
  background: linear-gradient(
    155deg,
    var(--color-cream) 0%,
    #e2e8d8 20%,
    var(--color-cream) 40%,
    #dde4d4 60%,
    var(--color-cream) 80%,
    #e0e6d6 100%
  );
  color: var(--g);
  padding: 6rem 0;
  position: relative;
}
.sp-stats::after {
  content: '';
  position: absolute;
  top: 0; left: 0; width: 100%; height: 100%;
  opacity: 0.3;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");
  pointer-events: none;
  z-index: 0;
}
.sp-stats > * { position: relative; z-index: 1; }
.sp-stats-inner {
  max-width: 1100px;
  margin: 0 auto;
  padding-left: 48px;
  padding-right: 48px;
}
.sp-stats-layout { display: block; }
.sp-stats-left { width: 100%; }
.sp-stats-right { width: 100%; margin-top: 4rem; overflow: hidden; line-height: 0; }
.why-sponsor-video { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; display: block; } /* FIX — 4:5 aspect ratio */
.sp-stats-label {
  display: block;
  font-family: var(--ff-b);
  font-size: var(--text-xs);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--g2);
  opacity: 0.6;
  margin-bottom: 16px;
}
.sp-stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2rem 3rem;
  margin-bottom: 4rem;
}
.sp-stat-num {
  font-family: var(--ff-d);
  font-size: clamp(var(--text-5xl), 11vw, 9rem);
  line-height: 0.85;
  color: var(--g);
  letter-spacing: 0.01em;
  display: block;
  margin-bottom: 0.5rem;
}
.sp-stat-label {
  font-family: var(--ff-b);
  font-size: var(--text-base);
  line-height: 1.6;
  color: var(--g);
  opacity: 0.72;
  max-width: 280px;
}
.sp-stats-venues {
  border-top: 1px solid rgba(45,74,30,0.2);
  padding-top: 2.5rem;
  margin-bottom: 2.5rem;
}
.sp-stats-venues p {
  font-family: var(--ff-e);
  font-style: normal;
  font-size: var(--text-md);
  line-height: 1.7;
  color: var(--g);
  opacity: 0.75;
}
.sp-stats-quote {
  border-left: 4px solid var(--color-green);
  background: rgba(45,74,30,0.04);
  padding: 1.5rem 1.5rem 1.5rem 2rem;
  border-radius: 0 4px 4px 0;
}
.sp-stats-quote blockquote {
  font-family: var(--ff-e);
  font-style: italic;
  font-size: var(--text-lg);
  line-height: 1.65;
  color: var(--g);
  margin-bottom: 0.75rem;
}
.sp-stats-quote cite {
  font-family: var(--ff-b);
  font-size: 0.82rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--g);
  opacity: 0.5;
  font-style: normal;
}

/* ── PACKAGES SECTION ── */
body .sp-packages {
  background: linear-gradient(
    155deg,
    var(--color-cream) 0%,
    #e2e8d8 20%,
    var(--color-cream) 40%,
    #dde4d4 60%,
    var(--color-cream) 80%,
    #e0e6d6 100%
  );
  color: var(--g);
  padding: 48px 0 6rem;
  position: relative;
}
.sp-packages::after {
  content: '';
  position: absolute;
  top: 0; left: 0; width: 100%; height: 100%;
  opacity: 0.3;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");
  pointer-events: none;
  z-index: 0;
}
.sp-packages > * { position: relative; z-index: 1; }
.sp-packages-inner {
  max-width: 1100px;
  margin: 0 auto;
  padding-left: 48px;
  padding-right: 48px;
}
.sp-packages-header { margin-bottom: 4rem; }
.sp-packages-header h2 {
  font-family: var(--ff-d);
  font-size: clamp(var(--text-4xl), 6vw, var(--text-5xl));
  line-height: 0.95;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--g);
  margin-bottom: 1rem;
}
.sp-packages-header p {
  font-family: var(--ff-b);
  font-size: var(--text-base);
  color: rgba(26,58,26,0.65);
  max-width: 480px;
}
.sp-tiers { display: flex; flex-direction: column; gap: 2rem; }
.sp-tier {
  background: var(--color-green);
  border: 1px solid rgba(232,230,223,0.15);
  border-radius: 8px;
  padding: 48px;
  transition: transform 0.3s ease, box-shadow 0.3s ease, background 0.3s ease;
  position: relative;
  color: var(--color-cream);
}
.sp-tier:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 40px rgba(0,0,0,0.25);
  background: var(--color-green-light);
}
.sp-tier.gold {
  background: var(--color-green-light);
  border: 2px solid rgba(212,175,55,0.6);
  padding: 40px;
  box-shadow: 0 4px 20px rgba(212,175,55,0.2);
  color: var(--color-cream);
}
.sp-tier.gold:hover {
  background: #446b30;
  box-shadow: 0 8px 32px rgba(212,175,55,0.3);
  transform: translateY(-2px);
}
.sp-tier-badge {
  display: inline-block;
  font-family: var(--ff-b);
  font-size: 0.65rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  background: var(--gold);
  color: var(--g);
  padding: 0.3rem 0.75rem;
  border-radius: 2px;
  margin-bottom: 1.25rem;
  font-weight: 600;
}
.sp-tier-name {
  font-family: var(--ff-d);
  font-size: clamp(var(--text-2xl), 4vw, var(--text-3xl));
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-cream);
  line-height: 1;
  margin-bottom: 0.35rem;
}
.sp-tier-price {
  font-family: var(--ff-b);
  font-size: var(--text-xl);
  font-weight: 400;
  color: rgba(232,230,223,0.75);
  margin-bottom: 0.5rem;
}
.sp-tier-desc {
  font-family: var(--ff-e);
  font-style: italic;
  font-size: var(--text-md);
  color: rgba(232,230,223,0.6);
  margin-bottom: 2rem;
}
.sp-tier-div { height: 1px; background: rgba(232,230,223,0.15); margin-bottom: 2rem; }
.sp-tier.gold .sp-tier-div { background: rgba(212,175,55,0.4); }
.sp-tier-feats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px 2rem;
  margin-bottom: 2.5rem;
}
.sp-tier-feats li {
  font-family: var(--ff-b);
  font-size: var(--text-md);
  color: rgba(232,230,223,0.85);
  line-height: 1.7;
  padding-left: 1rem;
  position: relative;
}
.sp-tier-feats li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.55em;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--accent);
}
.sp-tier.gold .sp-tier-feats li::before { background: var(--gold); }
.sp-tier-cta {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-family: var(--ff-b);
  font-size: var(--text-base);
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: lowercase;
  color: var(--color-green);
  background: var(--color-cream);
  border: 1.5px solid var(--color-cream);
  padding: 16px 40px;
  border-radius: 4px;
  text-decoration: none;
  transition: all 0.3s ease;
}
.sp-tier-cta:hover {
  background: var(--color-cream-light);
  border-color: var(--color-cream-light);
  transform: translateY(-1px);
  box-shadow: 0 4px 16px rgba(0,0,0,0.15);
}
.sp-tier.gold .sp-tier-cta { background: var(--gold); border-color: var(--gold); color: #1a1a1a; }
.sp-tier.gold .sp-tier-cta:hover { background: #c9a227; border-color: #c9a227; }
.sp-tiers-note {
  margin-top: 2.5rem;
  font-family: var(--ff-b);
  font-size: var(--text-sm);
  color: rgba(232,230,223,0.5);
  text-align: center;
  border-top: 1px solid rgba(232,230,223,0.12);
  padding-top: 2rem;
}

/* ── CONTACT SECTION ── */
.sp-contact {
  background: var(--g);
  color: var(--linen);
  padding: 6rem 0;
}
.sp-contact-inner {
  max-width: 1100px;
  margin: 0 auto;
  padding-left: 48px;
  padding-right: 48px;
}
.sp-contact-inner h2 {
  font-family: var(--ff-d);
  font-size: clamp(var(--text-4xl), 5vw, var(--text-5xl));
  line-height: 0.95;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--linen);
  margin-bottom: 1rem;
}
.sp-contact-body {
  font-family: var(--ff-b);
  font-size: var(--text-md);
  line-height: 1.7;
  color: rgba(240,237,232,0.72);
  margin-bottom: 0.75rem;
}
.sp-contact-email {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-family: var(--ff-b);
  font-size: 0.9rem;
  color: var(--accent);
  text-decoration: none;
  margin-bottom: 2.5rem;
  transition: color var(--ts);
}
.sp-contact-email:hover { color: var(--linen); }
.sp-contact-deck { margin-bottom: 3rem; }

/* ── SPONSOR FORM ── */
.sp-form { display: flex; flex-direction: column; gap: 1.25rem; }
.sp-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
.sp-form label {
  display: block;
  font-family: var(--ff-b);
  font-size: var(--text-sm);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  /* PHASE 2 FIX #10 — Increased placeholder contrast for WCAG AA */
  color: rgba(240,237,232,0.65);
  margin-bottom: 0.4rem;
}
.sp-form input,
.sp-form select,
.sp-form textarea {
  width: 100%;
  background: rgba(240,237,232,0.05);
  border: 1px solid rgba(240,237,232,0.15);
  border-radius: var(--r);
  color: var(--linen);
  font-family: var(--ff-b);
  font-size: var(--text-base);
  padding: 12px 16px;
  outline: none;
  transition: border-color 0.3s ease, background 0.3s ease, box-shadow 0.3s ease;
  -webkit-appearance: none;
}
.sp-form input::placeholder,
.sp-form textarea::placeholder {
  /* PHASE 2 FIX #10 — Increased from 0.25 to 0.6 for WCAG AA contrast */
  color: rgba(240,237,232,0.6);
}
.sp-form input:focus,
.sp-form select:focus,
.sp-form textarea:focus {
  border-color: rgba(240,237,232,0.7);
  background: rgba(240,237,232,0.08);
  box-shadow: 0 0 0 2px rgba(240,237,232,0.08);
}
.sp-form select option { background: var(--g); color: var(--linen); }
.sp-form textarea { resize: vertical; min-height: 120px; }
.sp-form-submit {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-family: var(--ff-b);
  font-size: var(--text-base);
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: lowercase;
  color: var(--color-cream);
  background: var(--color-green);
  border: 1.5px solid var(--color-green);
  padding: 16px 40px;
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.3s ease;
  align-self: flex-start;
}
.sp-form-submit:hover {
  filter: brightness(1.15);
  transform: translateY(-1px);
  box-shadow: 0 4px 16px rgba(45,74,30,0.25);
}
/* PHASE 2 FIX #11 — Form success message */
.sp-form-success {
  display: none;
  padding: 1.5rem 2rem;
  background: rgba(126,184,50,0.12);
  border: 1px solid rgba(126,184,50,0.3);
  border-radius: var(--r);
  color: var(--linen);
  font-family: var(--ff-e);
  font-style: italic;
  font-size: var(--text-md);
  text-align: center;
}
.sp-form-success.show { display: block; }

/* ── PAST PARTNERS (BRANDS) SECTION ── */
.brands-grid-r23 {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 40px 48px;
  align-items: center;
  justify-items: center;
  margin-bottom: 0;
}
.brands-grid-r23 .brand-logo {
  height: 90px;
  width: auto;
  max-width: 180px;
  object-fit: contain;
  opacity: 0.72;
  filter: brightness(0) invert(1);
  transition: opacity 0.2s, transform 0.2s;
}
.brands-grid-r23 .brand-logo:hover { opacity: 1; transform: scale(1.06); }

/* ── WHY SPONSOR HEADING ── */
.sp-why-heading {
  font-family: var(--ff-d);
  font-size: clamp(var(--text-3xl), 5vw, var(--text-4xl));
  color: var(--g);
  margin-bottom: 2.5rem;
  letter-spacing: 0.02em;
  line-height: 1;
}

/* ── SPONSOR BOTTOM VIDEO ── */
.sponsor-bottom-video-section { width: 100%; line-height: 0; overflow: hidden; }
.sponsor-bottom-video { width: 100%; height: 80vh; min-height: unset; object-fit: cover; display: block; } /* FIX — doubled from 40vh */

/* ── SECONDARY BUTTON (on dark bg) ── */
.sp-contact .btn-secondary {
  color: rgba(240,237,232,0.8);
  border-color: rgba(240,237,232,0.3);
}
.sp-contact .btn-secondary:hover {
  color: var(--linen);
  border-color: rgba(240,237,232,0.6);
  background: rgba(240,237,232,0.06);
  transform: translateY(-1px);
}

/* ── SPONSOR COUNTDOWN ── */
.sp-countdown-display {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 0.1rem;
  margin-bottom: 2rem;
}
.sp-countdown-num {
  font-family: var(--ff-d);
  font-size: clamp(3rem, 7vw, 5.5rem);
  line-height: 1;
  color: var(--g);
}
.sp-countdown-sep {
  font-family: var(--ff-b);
  font-size: 0.85rem;
  letter-spacing: 0.1em;
  color: var(--g);
  opacity: 0.4;
  margin-right: 0.75rem;
  align-self: flex-end;
  padding-bottom: 0.3rem;
}

/* ============================================================
   ROUND 47 — Event details panel: editorial gradient treatment
   No box/card — text sits on a right-side gradient that fades
   the photo naturally into the content area.
   ============================================================ */
.event-details-panel {
  background: none;
  padding: 0;
  border-radius: 0;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  max-width: 520px;
  position: relative;
  z-index: 2;
}
/* All text inside the panel: cream, with text-shadow for legibility */
.event-details-panel .lbl,
.event-details-panel .event-date,
.event-details-panel .countdown-num,
.event-details-panel .event-time,
.event-details-panel .venue-n,
.event-details-panel .venue-l,
.event-details-panel .event-meta,
.event-details-panel p,
.event-details-panel span {
  color: #E8E6DF;
  text-shadow: 0 1px 8px rgba(0,0,0,0.55);
}
/* Right-side editorial gradient on the events section */
#events::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to left,
    rgba(10,28,10,0.92) 0%,
    rgba(10,28,10,0.75) 30%,
    rgba(10,28,10,0.35) 55%,
    rgba(10,28,10,0) 75%
  );
  z-index: 1;
  pointer-events: none;
}

/* ============================================================
   RESPONSIVE — ALL BREAKPOINTS (consolidated Round 47)
   Order: 1024px → 768px → 640px → 480px → 375px
   Accessibility: prefers-reduced-motion, hover:none
   ============================================================ */

/* ── 1024px — TABLET LANDSCAPE ── */
@media (max-width: 1024px) {
  .hiw-steps { grid-template-columns: repeat(2,1fr); gap: 3rem 2rem; }
  .hiw-steps::before { display: none; }
  .brands-grid-wrap { grid-template-columns: repeat(4,1fr); gap: 1.75rem 2rem; }
  .brands-grid-r23 { grid-template-columns: repeat(3,1fr); gap: 1.75rem 2rem; }
  .brands-grid-r23 .brand-logo { height: 60px; max-width: 140px; }
  .sp-stats-grid { grid-template-columns: repeat(2, 1fr); gap: 2.5rem; }
}

/* ── 768px — TABLET PORTRAIT ── */
@media (max-width: 768px) {
  /* Global */
  html, body { overflow-x: hidden; max-width: 100%; }
  :root { --nav: 60px; --pad: 3rem 1.5rem; }
  .dk, .lt { padding: 48px 0; }

  /* Nav */
  .nav-links { display: none; }
  .ham { display: flex; }
  .mob a { min-height: 44px; display: flex; align-items: center; justify-content: center; }
  .vc-btn { display: none; }

  /* Hero */
  .hero-ctas { flex-direction: column; width: 100%; max-width: 300px; }
  .hero-ctas .btn { width: 100%; min-height: 52px; justify-content: center; }
  .scroll-hint { display: none; }
  .btn { min-height: 48px; }
  .hero-eye { font-size: 0.65rem; }

  /* Events section: gradient switches to bottom-up on mobile */
  #events::after {
    background: linear-gradient(
      to top,
      rgba(10,28,10,0.95) 0%,
      rgba(10,28,10,0.75) 35%,
      rgba(10,28,10,0.35) 60%,
      rgba(10,28,10,0) 80%
    );
  }
  /* Event panel: full-width, centered, at bottom */
  .event-details-panel {
    max-width: 100%;
    width: 100%;
    align-self: stretch !important;
    text-align: center !important;
  }
  .event-details-panel > * { text-align: center !important; }
  .event-details-panel div[style*="justify-content:flex-end"] {
    justify-content: center !important;
  }
  .event-details-panel a[class*="btn"] {
    align-self: center !important;
  }

  /* Stats */
  .stats-band { flex-direction: column; gap: 0; padding: 2rem 1.5rem; }
  .stat { padding: 1.5rem 0; }
  .stat-div { width: 3rem; height: 1px; align-self: auto; }

  /* Gallery */
  .ev-section { padding: 48px 0 0; }
  .photo-grid, .gallery-visible, .gallery-collapsed { column-count: 2; }
  .photo-grid .gallery-item, .gallery-visible .gallery-item, .gallery-collapsed .gallery-item { margin-bottom: 4px; }

  /* Curate — FIX: switch from fixed-height overlay to content-height stacked layout on mobile */
  .curate-section { padding: 0; overflow: visible; height: auto !important; min-height: auto !important; } /* FIX */
  .curate-section .dj-photo { height: 50vw; min-height: 220px; max-height: 320px; display: block; } /* FIX — shorter photo, text flows below */
  .curate-copy { position: relative !important; top: auto !important; left: auto !important; transform: none !important; padding: 2.5rem 24px 2.5rem; width: 100%; max-width: 100%; text-align: center; background: var(--color-green); } /* FIX — taken out of absolute, stacked below photo */
  .curate-copy h2 { font-size: clamp(2rem, 8vw, 3rem); line-height: 1.05; word-wrap: break-word; overflow-wrap: break-word; } /* FIX */
  .curate-copy p { font-size: 1rem; line-height: 1.6; max-width: 100%; } /* FIX */
  .curate-copy .tags { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-top: 1.25rem; } /* FIX */
  .curate-copy::before { display: none; } /* FIX — remove radial gradient pseudo-element */
  .ev-title { font-size: clamp(2.5rem, 8vw, 5rem); }

  /* Tags: tap targets */
  .tag { min-height: 44px; padding: 10px 16px; display: inline-flex; align-items: center; }

  /* How it works */
  .hiw-steps { grid-template-columns: 1fr; gap: 2rem; }
  .hiw-step { padding: 0 0 2rem; border-bottom: 1px solid var(--color-green-12); }
  .hiw-step:last-child { border-bottom: none; padding-bottom: 0; }

  /* Join row */
  .join-row { flex-direction: column; border: none; gap: 0.75rem; overflow: visible; }
  .join-row input { border: 1.5px solid var(--ln20); border-radius: var(--r); width: 100%; }
  .join-row .btn-p { border-radius: var(--r); width: 100%; min-height: 52px; }

  /* Footer */
  .foot-links { flex-direction: column; gap: 0.75rem; }
  .foot-photos { grid-template-columns: repeat(2, 1fr) !important; height: clamp(160px, 25vw, 240px) !important; }

  /* Brand logos */
  .brand-logo { height: 44px; max-width: 120px; }
  .brands-grid-r23 { grid-template-columns: repeat(3,1fr); gap: 1.75rem 2rem; }

  /* Why photos */
  .why-photos { min-height: 40vh; max-height: none; width: 100%; }

  /* Sponsor hero */
  .sp-hero-h1 { font-size: clamp(3rem, 9vw, 6rem); }

  /* Sponsor stats */
  .sp-stats-inner,
  .sp-packages-inner,
  .sp-contact-inner { padding-left: 24px; padding-right: 24px; }
  .sp-stats-grid { grid-template-columns: repeat(2, 1fr); gap: 2.5rem; }

  /* Sponsor tiers */
  .sp-tier { padding: 24px; }
  .sp-tier.gold { padding: 24px; }
  .sp-tier-feats { grid-template-columns: 1fr; }
  .sp-tier .btn-primary,
  .sp-tier-cta { width: 100%; text-align: center; justify-content: center; }

  /* Sponsor form */
  .sp-form-row { grid-template-columns: 1fr; }
  .sp-form input,
  .sp-form select,
  .sp-form textarea { font-size: 16px; } /* prevent iOS zoom */
  .sp-form-submit { width: 100%; }

  /* Sponsor contact */
  .sp-contact h2,
  .sp-contact-inner h2 { font-size: clamp(2.5rem, 8vw, 5rem); }

  /* Sponsor brands */
  #sp-brands .w { padding-left: 24px !important; padding-right: 24px !important; }

  /* Sponsor videos */ /* FIX — updated heights */
  .why-sponsor-video { aspect-ratio: 4 / 5; } /* FIX — maintain 4:5 on mobile */
  .sponsor-bottom-video { height: 60vh; min-height: unset; } /* FIX — doubled from 30vh */

  /* Sponsor btn-full */
  .btn-full { max-width: 100%; margin: 24px 0; padding: 20px 32px; }
}

/* ── 640px — SMALL TABLET / LARGE PHONE ── */
@media (max-width: 640px) {
  .brands-grid-wrap { grid-template-columns: repeat(3,1fr); gap: 1.5rem; }
  .btn-full { max-width: 100%; }
}

/* ── 480px — MOBILE ── */
@media (max-width: 480px) {
  /* Global */
  html, body { overflow-x: hidden; max-width: 100%; }

  /* Gallery */
  .photo-grid, .gallery-visible, .gallery-collapsed { column-count: 1; }

  /* Countdown */
  .countdown-num { font-size: clamp(2.8rem,12vw,4rem); }

  /* Curate — FIX: keep stacked layout from 768px, adjust photo height */
  .curate-section .dj-photo { height: 55vw; min-height: 200px; max-height: 280px; } /* FIX */
  .curate-copy h2 { font-size: clamp(1.8rem, 8vw, 2.6rem); } /* FIX */
  .ev-title { font-size: clamp(2rem, 10vw, 3.5rem); }

  /* Footer photos */
  .foot-photos { grid-template-columns: repeat(2, 1fr) !important; height: 180px !important; }

  /* Brand logos */
  .brands-grid-r23 { grid-template-columns: repeat(2,1fr); gap: 1.5rem; }
  .brands-grid-r23 .brand-logo { height: 44px; max-width: 110px; }

  /* Sponsor hero */
  .sp-hero-h1 { font-size: clamp(2.5rem, 10vw, 4rem); line-height: 0.95; }

  /* Sponsor stats */
  .sp-stats-grid { grid-template-columns: 1fr; gap: 2rem; }
  .sp-stat-num { font-size: clamp(4rem, 18vw, 6rem); }
  .sp-stats-inner,
  .sp-packages-inner,
  .sp-contact-inner { padding-left: 16px; padding-right: 16px; }

  /* Sponsor packages */
  .sp-packages-header h2 { font-size: clamp(2.5rem, 10vw, 4rem); }

  /* Sponsor tiers */
  .sp-tier { padding: 20px 16px; }
  .sp-tier.gold { padding: 20px 16px; }
  .sp-tier-feats { grid-template-columns: 1fr; gap: 0.5rem; }

  /* Sponsor form */
  .sp-form input,
  .sp-form select,
  .sp-form textarea { font-size: 16px; padding: 14px 16px; }

  /* Sponsor contact */
  .sp-contact h2,
  .sp-contact-inner h2 { font-size: clamp(2rem, 10vw, 3.5rem); }

  /* Sponsor brands */
  #sp-brands h2 { font-size: clamp(2.5rem, 10vw, 4rem); }
  #sp-brands .w { padding-left: 16px !important; padding-right: 16px !important; }

  /* Sponsor btn-full */
  .btn-full { padding: 18px 24px; font-size: 1rem; }
}

/* ── 375px — SMALL MOBILE (emergency overrides) ── */
@media (max-width: 375px) {
  html, body { overflow-x: hidden; max-width: 100%; }

  /* Typography emergency floor */
  .curate-section .dj-photo { height: 55vw; min-height: 180px; max-height: 240px; } /* FIX — keep stacked layout */
  .curate-copy h2 { font-size: clamp(1.7rem, 9vw, 2.2rem); letter-spacing: -0.01em; } /* FIX */
  .ev-title { font-size: 1.8rem; }
  .countdown-num { font-size: 2.5rem; }

  /* Nav */
  .nav-logo img { height: 32px; }

  /* Sponsor hero */
  .sp-hero-h1 { font-size: 2.2rem; letter-spacing: 0.01em; }

  /* Sponsor stats */
  .sp-stat-num { font-size: 3.5rem; }
  .sp-stats-inner,
  .sp-packages-inner,
  .sp-contact-inner { padding-left: 12px; padding-right: 12px; }

  /* Sponsor headings */
  .sp-packages-header h2 { font-size: 2rem; }
  .sp-contact h2,
  .sp-contact-inner h2 { font-size: 2rem; }
  #sp-brands h2 { font-size: 2rem; }
  #sp-brands .w { padding-left: 12px !important; padding-right: 12px !important; }

  /* Sponsor tiers */
  .sp-tier { padding: 16px 12px; }
  .sp-tier.gold { padding: 16px 12px; }

  /* Sponsor form */
  .sp-form input,
  .sp-form select,
  .sp-form textarea { font-size: 16px; padding: 12px; }

  /* Footer */
  .foot-photos { grid-template-columns: repeat(2, 1fr) !important; height: 140px !important; }

  /* Buttons */
  .btn-full { font-size: 0.9rem; padding: 16px 20px; }
  .btn-primary { padding: 14px 24px; font-size: 0.9rem; }
}

/* ── ACCESSIBILITY ── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms;
    animation-iteration-count: 1;
    transition-duration: 0.01ms;
    scroll-behavior: auto;
  }
}
@media (hover: none) {
  .cur, .cur-r { display: none; }
}


/* ================================================ */
/* PROTECTED: Cream section gradient                */
/* This rule has been accidentally removed 4 times. */
/* Do NOT override with background-color.           */
/* If cream sections need a background change,      */
/* EDIT THIS RULE directly — do not add a new one.  */
/* ================================================ */
/* GRADIENT RESTORE — DO NOT OVERRIDE THIS RULE */
/* This gradient has been broken 4 times by subsequent CSS changes. */
/* rgba(100,160,60,0.18) = bright grass green blob top-left         */
/* rgba(60,100,40,0.14)  = deeper green blob bottom-right           */
/* #e2e8d8 / #dde4d4     = cream with visible green undertone       */
body .sp-stats,
body .sp-packages {
  background:
    radial-gradient(ellipse at 20% 15%, rgba(100, 160, 60, 0.18) 0%, transparent 60%),
    radial-gradient(ellipse at 80% 85%, rgba(60, 100, 40, 0.14) 0%, transparent 60%),
    radial-gradient(circle at 50% 50%, rgba(45, 74, 30, 0.02) 0%, transparent 70%),
    linear-gradient(
      155deg,
      #EBE9E2 0%,
      #e2e8d8 20%,
      #E8E6DF 40%,
      #dde4d4 60%,
      #E8E6DF 80%,
      #e0e6d6 100%
    ) !important; /* GRADIENT RESTORE */
}
