/* ==========================================================================
   YOUTH RALLY 2026  ·  youthrallywy.com
   Built against brand/BRAND-GUIDELINES.md v1.0
   Palette, type and devices sampled from the approved poster + postcard.
   ========================================================================== */

:root{
  /* --- colour (sampled from approved artwork, do not add to this list) --- */
  --black:#000000;
  --green:#88ED56;
  --signal:#6BDE49;
  --high:#DDE858;
  --yellow:#EFFE54;
  --citron:#D1E94C;
  --mint:#95E5C2;
  --pin:#09AE05;
  --paper:#ffffff;
  --smoke:rgba(255,255,255,.62);
  --ash:rgba(255,255,255,.34);
  --hair:rgba(136,237,86,.22);

  /* --- type scale --- */
  --fs-mega:clamp(4.25rem, 26vw, 9.5rem);   /* poster lockup, stacked */
  --fs-mega-wide:clamp(3rem, min(18.4vw, 27vh), 15rem);  /* postcard lockup, one line */
  --fs-h1:clamp(3.5rem, 9vw, 8.25rem);
  --fs-h2:clamp(2.5rem, 6.2vw, 5.5rem);
  --fs-h3:clamp(1.625rem, 2.6vw, 2.5rem);
  --fs-lead:clamp(1.125rem, 1.6vw, 1.4375rem);
  --fs-body:clamp(1rem, 1.05vw, 1.09rem);
  --fs-micro:clamp(.6875rem, .85vw, .8125rem);

  --display:"League Gothic","Oswald","Arial Narrow",ui-sans-serif,sans-serif;
  --text:"Space Grotesk",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;

  /* --- rhythm --- */
  --wrap:1360px;
  --gut:clamp(1rem,4vw,1.5rem);
  --sec:clamp(5rem,10vw,9rem);
  --ease:cubic-bezier(.16,1,.3,1);

  /* --- hand cut frames (points deliberately off true) --- */
  --cut-a:polygon(1.5% 2%, 97% 0%, 100% 41%, 98.5% 97%, 41% 100%, 2% 98%, 0% 52%);
  --cut-b:polygon(0% 4%, 58% 0%, 100% 2.5%, 97.5% 58%, 100% 96%, 44% 100%, 2.5% 97%);
}

/* ---------- reset / base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--black);color:var(--paper);
  font-family:var(--text);font-size:var(--fs-body);line-height:1.62;
  font-weight:400;letter-spacing:.004em;
  -webkit-font-smoothing:antialiased;
  padding-bottom:env(safe-area-inset-bottom);
}
img,picture,svg,iframe{display:block;max-width:100%}
img{height:auto}
h1,h2,h3,p,ul,ol,dl,dd,figure,blockquote{margin:0}
ul,ol{list-style:none;padding:0}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
p{text-wrap:pretty;max-width:68ch}

::selection{background:var(--green);color:var(--black)}

:focus-visible{outline:3px solid var(--yellow);outline-offset:3px;border-radius:1px}

.skip{
  position:fixed;left:50%;top:-100px;transform:translateX(-50%);z-index:999;
  background:var(--green);color:var(--black);padding:.85rem 1.5rem;
  font-family:var(--display);font-size:1.2rem;letter-spacing:.06em;text-transform:uppercase;
  transition:top .2s var(--ease);
}
.skip:focus{top:0}

.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;
}

.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut)}

/* ---------- shared type ---------- */
.kicker{
  font-family:var(--text);font-size:var(--fs-micro);font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;color:var(--green);
  margin:0 0 1.1rem;
}
.h2{
  font-family:var(--display);font-weight:400;font-size:var(--fs-h2);
  line-height:.88;letter-spacing:.005em;text-transform:uppercase;
  color:var(--green);text-wrap:balance;margin:0;
}
.h2.center{text-align:center;margin-inline:auto}
.lead{font-size:var(--fs-lead);line-height:1.5;color:var(--paper)}
.sec-head{margin-bottom:clamp(2.75rem,5vw,4.5rem)}
.sec-head .kicker{text-align:center}
.sec-sub{
  text-align:center;margin:1.15rem auto 0;color:var(--smoke);
  max-width:44ch;font-size:var(--fs-lead);line-height:1.5;text-wrap:balance;
}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:56px;padding:0 2.15rem;
  font-family:var(--display);font-size:1.6rem;line-height:1;
  letter-spacing:.045em;text-transform:uppercase;
  border:2px solid var(--green);
  transition:background .28s var(--ease),color .28s var(--ease),
             border-color .28s var(--ease),transform .28s var(--ease);
  will-change:transform;
}
.btn-solid{background:var(--green);color:var(--black)}
.btn-solid:hover,.btn-solid:focus-visible{background:var(--yellow);border-color:var(--yellow)}
.btn-line{color:var(--green);background:transparent}
.btn-line:hover,.btn-line:focus-visible{background:var(--green);color:var(--black)}

/* ==========================================================================
   HEADER  ·  centred square wordmark, three links either side
   ========================================================================== */
.site-head{
  position:fixed;inset:0 0 auto 0;z-index:120;
  padding-block:clamp(.65rem,1.4vw,1.05rem);
  transition:background .4s var(--ease),backdrop-filter .4s var(--ease);
}
.site-head::before{
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,rgba(0,0,0,.92),rgba(0,0,0,.62) 55%,transparent);
  transition:opacity .4s var(--ease);
}
.site-head.is-stuck{background:rgba(0,0,0,.92);backdrop-filter:blur(10px)}
.site-head.is-stuck::before{opacity:0}
.head-rule{
  position:absolute;left:0;bottom:0;height:1px;width:100%;
  background:linear-gradient(90deg,transparent,var(--hair) 18%,var(--hair) 82%,transparent);
  opacity:0;transition:opacity .4s var(--ease);
}
.site-head.is-stuck .head-rule{opacity:1}

.nav{
  width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut);
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;
  column-gap:clamp(1rem,3vw,2.75rem);
}
.nav-side{display:flex;align-items:center;gap:clamp(1rem,2.4vw,2.4rem)}
.nav-left{justify-content:flex-end}
.nav-right{justify-content:flex-start}

.nav-side a{
  display:block;padding-block:.8rem;
  font-family:var(--text);font-weight:700;font-size:var(--fs-micro);
  letter-spacing:.15em;text-transform:uppercase;color:var(--paper);
  line-height:1.55;
}
/* .nr is the clip window; its height matches the line box exactly so the
   roll-up lands the hover label perfectly on the resting label. */
.nav-side .nr{
  position:relative;display:block;overflow:hidden;height:1.55em;
}
.nav-side .nr > span{display:block;line-height:1.55;transition:transform .42s var(--ease)}
.nav-side .nr > span::after{
  content:attr(data-hover);position:absolute;left:0;top:100%;
  line-height:1.55;color:var(--green);white-space:nowrap;
}
.nav-side a:hover .nr > span,
.nav-side a:focus-visible .nr > span{transform:translateY(-100%)}

.wordmark{
  display:grid;justify-items:center;line-height:.78;
  font-family:var(--display);text-transform:uppercase;color:var(--green);
  font-size:clamp(1.55rem,2.5vw,2.15rem);letter-spacing:.02em;
  position:relative;padding:.15rem .55rem;
}
.wordmark-yr{
  font-size:.42em;color:var(--black);background:var(--yellow);
  padding:.05em .34em .08em;letter-spacing:.06em;margin-top:.18em;
}
.wordmark::before,.wordmark::after{
  content:"";position:absolute;top:6%;height:88%;width:2px;background:var(--hair);
}
.wordmark::before{left:-.9rem}
.wordmark::after{right:-.9rem}

.burger{display:none;align-items:center;gap:.6rem;justify-self:end;
  font-family:var(--text);font-weight:700;font-size:var(--fs-micro);
  letter-spacing:.15em;text-transform:uppercase;color:var(--green);
  min-height:44px;padding-inline:.35rem;
}
.burger-bars{display:grid;gap:5px;width:26px}
.burger-bars i{display:block;height:2px;background:var(--green);transition:transform .34s var(--ease)}
.burger[aria-expanded="true"] .burger-bars i:first-child{transform:translateY(3.5px) rotate(20deg)}
.burger[aria-expanded="true"] .burger-bars i:last-child{transform:translateY(-3.5px) rotate(-20deg)}

/* ---------- mobile overlay ---------- */
.mnav{
  position:fixed;inset:0;z-index:110;background:var(--black);
  display:grid;place-items:center;
  clip-path:inset(0 0 100% 0);transition:clip-path .55s var(--ease);
}
.mnav[hidden]{display:none}
.mnav.is-open{clip-path:inset(0 0 0 0)}
.mnav-inner{width:100%;padding:6.5rem var(--gut) 7rem;max-width:640px}
.mnav-kicker{color:var(--high)}
.mnav-list{display:grid;gap:.15rem}
.mnav-list a{
  display:flex;align-items:baseline;gap:.85rem;
  font-family:var(--display);font-size:clamp(2.75rem,13vw,4.25rem);
  line-height:1.02;text-transform:uppercase;color:var(--green);
  padding-block:.18rem;
  opacity:0;transform:translateY(26px);
}
.mnav.is-open .mnav-list a{
  opacity:1;transform:none;
  transition:opacity .5s var(--ease),transform .5s var(--ease);
}
.mnav.is-open .mnav-list li:nth-child(1) a{transition-delay:.10s}
.mnav.is-open .mnav-list li:nth-child(2) a{transition-delay:.16s}
.mnav.is-open .mnav-list li:nth-child(3) a{transition-delay:.22s}
.mnav.is-open .mnav-list li:nth-child(4) a{transition-delay:.28s}
.mnav.is-open .mnav-list li:nth-child(5) a{transition-delay:.34s}
.mnav.is-open .mnav-list li:nth-child(6) a{transition-delay:.40s}
.mnav-list b{font-family:var(--text);font-size:.7rem;font-weight:700;color:var(--ash);letter-spacing:.1em}
.mnav-foot{margin-top:2.75rem;font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ash)}
body.is-locked{overflow:hidden}

/* ==========================================================================
   HERO
   ========================================================================== */
.hero{
  position:relative;min-height:100svh;display:flex;align-items:flex-end;
  padding:clamp(6rem,13vh,9rem) 0 clamp(3.5rem,7vh,6rem);
  overflow:hidden;isolation:isolate;
}
.hero-tex,.lineup-tex,.getin-tex{position:absolute;inset:-10% 0;z-index:-2;pointer-events:none}
.hero-tex img,.lineup-tex img,.getin-tex img{
  width:100%;height:100%;object-fit:cover;
  mix-blend-mode:screen;opacity:.42;
}
.lineup-tex img{opacity:.34;transform:scaleX(-1)}
.getin-tex img{opacity:.42}
.hero::after{
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(150% 62% at 50% 116%,rgba(0,0,0,.9) 18%,transparent 68%);
}
.hero-glow{
  position:absolute;z-index:-1;width:46rem;height:46rem;left:0;top:0;
  transform:translate(-50%,-50%);opacity:0;pointer-events:none;
  background:radial-gradient(circle,rgba(136,237,86,.16),transparent 62%);
  transition:opacity .6s var(--ease);
}

.hero-grid{
  position:relative;width:100%;max-width:var(--wrap);
  margin-inline:auto;padding-inline:var(--gut);
}

.hero-kick{color:var(--high);text-align:center;margin-bottom:.5rem}

.hero-type{margin:0;text-align:center;position:relative;z-index:3;padding-top:.1em}
.ht-pre{
  display:block;font-family:var(--text);font-weight:700;
  font-size:clamp(.7rem,1.5vw,.95rem);letter-spacing:.2em;text-transform:uppercase;
  color:var(--green);margin-bottom:clamp(.4rem,1vw,.9rem);
}
.ht-l1,.ht-l2{
  display:block;font-family:var(--display);font-weight:400;
  font-size:var(--fs-mega);line-height:.79;letter-spacing:.012em;
  text-transform:uppercase;white-space:nowrap;color:var(--green);
}
.ht-l2{margin-top:-.045em}

/* wide viewports take the postcard's single line lockup */
@media (min-width:760px){
  .hero-type{display:flex;flex-wrap:nowrap;align-items:baseline;justify-content:center;
    line-height:0}
  .ht-pre{position:absolute;left:50%;transform:translateX(-50%);top:-1.9em;width:max-content}
  .ht-l1,.ht-l2{font-size:var(--fs-mega-wide);margin-top:0}
  .ht-l2{margin-left:.085em}
}
.ht-l1 i,.ht-l2 i{
  display:inline-block;font-style:normal;
  transform:translateY(.4em) rotate(2deg);opacity:0;
}
.js-on .ht-l1 i,.js-on .ht-l2 i{
  animation:letterIn .78s var(--ease) forwards;
}
.ht-l1 i:nth-child(1){animation-delay:.08s}
.ht-l1 i:nth-child(2){animation-delay:.13s}
.ht-l1 i:nth-child(3){animation-delay:.18s}
.ht-l1 i:nth-child(4){animation-delay:.23s}
.ht-l1 i:nth-child(5){animation-delay:.28s}
.ht-l2 i:nth-child(1){animation-delay:.20s}
.ht-l2 i:nth-child(2){animation-delay:.25s}
.ht-l2 i:nth-child(3){animation-delay:.30s}
.ht-l2 i:nth-child(4){animation-delay:.35s}
.ht-l2 i:nth-child(5){animation-delay:.40s}
@keyframes letterIn{to{transform:none;opacity:1}}

.hero-sub{
  position:relative;z-index:3;text-align:center;margin:clamp(.9rem,2.2vh,1.7rem) auto 0;
  max-width:36ch;font-size:var(--fs-lead);line-height:1.42;color:var(--paper);
  text-wrap:balance;
}

/* rotated date stamp */
.hero-stamp{
  position:absolute;z-index:4;right:calc(var(--gut) - .4rem);top:-1.5rem;
  display:grid;justify-items:center;line-height:.82;
  font-family:var(--display);text-transform:uppercase;
  background:var(--yellow);color:var(--black);
  padding:.7rem 1rem .55rem;transform:rotate(7deg);
  box-shadow:0 0 0 3px var(--black);
}
.stamp-d{font-size:clamp(2.4rem,4.4vw,3.6rem)}
.stamp-m{font-size:clamp(1.1rem,1.9vw,1.55rem);color:var(--black)}
.stamp-y{
  font-family:var(--text);font-weight:700;font-size:.62rem;
  letter-spacing:.22em;margin-top:.3rem;
}

/* artists in hero */
.hero-jul{
  position:absolute;z-index:2;left:calc(var(--gut) * -.5);bottom:calc(var(--sec) * -.34);
  width:clamp(13rem,23vw,22rem);pointer-events:none;
  filter:drop-shadow(0 0 40px rgba(0,0,0,.9));
}
.hero-jul img{width:100%}
figure.hero-aq{
  position:absolute;z-index:2;right:calc(var(--gut) * .2);bottom:26%;
  width:clamp(9rem,14vw,13.5rem);
}
.hero-aq img{aspect-ratio:5/6;object-fit:cover;object-position:62% 30%;width:100%}
.hero-aq figcaption{
  position:absolute;right:.6rem;bottom:.5rem;z-index:2;
  font-family:var(--text);font-weight:700;font-size:.62rem;
  letter-spacing:.14em;text-transform:uppercase;color:var(--paper);
  text-shadow:0 1px 6px #000;
}

/* countdown */
.hero-count{
  position:relative;z-index:3;display:flex;justify-content:center;
  gap:clamp(.6rem,1.6vw,1.4rem);margin-top:clamp(1.25rem,3vh,2.4rem);
}
.cd-cell{
  display:grid;justify-items:center;min-width:clamp(3.6rem,6vw,5rem);
  padding:.5rem .35rem .45rem;border:1px solid var(--hair);background:rgba(0,0,0,.5);
}
.cd-n{
  font-family:var(--display);font-size:clamp(1.9rem,3.4vw,2.9rem);line-height:.9;
  color:var(--yellow);font-variant-numeric:tabular-nums;
}
.cd-n.tick{animation:flip .3s var(--ease)}
@keyframes flip{0%{transform:translateY(-38%);opacity:0}100%{transform:none;opacity:1}}
.cd-l{
  font-family:var(--text);font-weight:700;font-size:.58rem;letter-spacing:.18em;
  text-transform:uppercase;color:var(--ash);margin-top:.32rem;
}

.hero-cue{
  position:absolute;right:calc(var(--gut) * -.1);bottom:-1.25rem;z-index:3;
  display:none;flex-direction:column;align-items:center;gap:.7rem;
  writing-mode:vertical-rl;
  font-family:var(--text);font-weight:700;font-size:.62rem;
  letter-spacing:.2em;text-transform:uppercase;color:var(--ash);
}
.hero-cue i{display:block;width:1px;height:3.2rem;background:var(--hair);position:relative;overflow:hidden}
.hero-cue i::after{
  content:"";position:absolute;inset:0;background:var(--green);
  animation:cue 2.1s var(--ease) infinite;
}
@keyframes cue{0%{transform:translateY(-100%)}55%,100%{transform:translateY(100%)}}

/* ---------- hand cut frame device ---------- */
.cut-frame{position:relative}
.cut-frame picture{
  display:block;position:relative;background:var(--black);
  clip-path:var(--cut-a);
}
.frame-green{--fc:var(--green)}
.frame-yellow{--fc:var(--high)}
.cut-frame::before{
  content:"";position:absolute;inset:-4px;background:var(--fc);
  clip-path:var(--cut-a);transition:inset .4s var(--ease);
}
.cut-frame.alt picture,.cut-frame.alt::before{clip-path:var(--cut-b)}

/* ==========================================================================
   TICKER
   ========================================================================== */
.ticker-clip{
  overflow:hidden;padding-block:clamp(14px,2.2vw,30px);
  margin-block:clamp(2rem,5vw,3.75rem) 0;
}
.ticker{
  position:relative;z-index:5;background:var(--green);color:var(--black);
  overflow:hidden;transform:rotate(-1.6deg) scaleX(1.06);
  border-block:3px solid var(--black);
}
.ticker-run{display:flex;width:max-content;animation:run 34s linear infinite}
.ticker:hover .ticker-run,.ticker:focus-within .ticker-run{animation-play-state:paused}
.tk{
  display:flex;align-items:center;flex:none;
  font-family:var(--display);font-size:clamp(1.6rem,3.4vw,2.6rem);
  line-height:1;text-transform:uppercase;letter-spacing:.02em;
  padding-block:.42em;white-space:nowrap;
}
.tk b{padding-inline:.55em;font-size:.6em;color:var(--black);opacity:.65}
@keyframes run{to{transform:translateX(-50%)}}

/* ==========================================================================
   PITCH
   ========================================================================== */
.pitch{padding-block:clamp(4.5rem,9vw,7.5rem) var(--sec);position:relative}
.pitch-grid{
  display:grid;gap:clamp(2rem,4vw,3.5rem);
  grid-template-columns:1fr;
}
.pitch-head .h2{max-width:11ch}
.pitch-body{display:grid;gap:1.1rem;color:var(--smoke)}
.pitch-body .lead{color:var(--paper)}
.pitch-body p:nth-child(3){
  color:var(--black);background:var(--green);display:inline-block;
  padding:.35em .7em;font-weight:700;max-width:max-content;
  font-family:var(--display);font-size:clamp(1.5rem,3vw,2.2rem);
  line-height:1.05;text-transform:uppercase;letter-spacing:.02em;
}
.pitch-facts{
  display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:var(--hair);border:1px solid var(--hair);
}
.pitch-facts li{
  display:grid;align-content:space-between;gap:.9rem;
  background:var(--black);padding:1.15rem 1.15rem 1rem;min-height:118px;
}
.pf-k{font-size:.62rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--ash)}
.pf-v{
  font-family:var(--display);font-size:clamp(1.55rem,2.6vw,2.05rem);
  line-height:.95;text-transform:uppercase;color:var(--green);
}

/* ==========================================================================
   LINEUP
   ========================================================================== */
.lineup{position:relative;padding-block:var(--sec);overflow:hidden;isolation:isolate}
.lineup::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,#000 0%,transparent 30%,transparent 70%,#000 100%);
}
.stage{display:grid;gap:clamp(2rem,4vw,3rem);align-items:center}

.stage-names{display:grid;gap:1px;background:var(--hair)}
.sn{
  position:relative;display:grid;grid-template-columns:auto 1fr auto;
  align-items:center;gap:clamp(.9rem,2vw,1.6rem);width:100%;
  background:var(--black);padding:clamp(1.1rem,2.4vw,1.6rem) clamp(1rem,2vw,1.4rem);
  text-align:left;min-height:104px;overflow:hidden;
}
.sn::before{
  content:"";position:absolute;inset:0;background:var(--green);z-index:0;
  transform:translateY(101%);transition:transform .46s var(--ease);
}
.sn[aria-pressed="true"]::before,.sn:hover::before,.sn:focus-visible::before{transform:none}
.sn > *{position:relative;z-index:1;transition:color .34s var(--ease)}
.sn-num{
  font-family:var(--text);font-weight:700;font-size:.68rem;
  letter-spacing:.16em;color:var(--ash);
}
.sn-name{
  font-family:var(--display);font-size:clamp(2rem,5.2vw,3.9rem);line-height:.9;
  text-transform:uppercase;color:var(--paper);letter-spacing:.01em;
}
.sn-tag{
  font-family:var(--text);font-weight:700;font-size:.62rem;letter-spacing:.18em;
  text-transform:uppercase;color:var(--green);white-space:nowrap;
}
.sn[aria-pressed="true"] .sn-num,.sn:hover .sn-num,.sn:focus-visible .sn-num,
.sn[aria-pressed="true"] .sn-name,.sn:hover .sn-name,.sn:focus-visible .sn-name,
.sn[aria-pressed="true"] .sn-tag,.sn:hover .sn-tag,.sn:focus-visible .sn-tag{color:var(--black)}

.stage-vis{position:relative;aspect-ratio:4/5;max-width:31rem;width:100%;justify-self:center;isolation:isolate}
.sv{
  position:absolute;inset:0;opacity:0;
  transform:scale(.94) rotate(-1.4deg);
  transition:opacity .5s var(--ease),transform .6s var(--ease);
  pointer-events:none;
}
.sv.is-on{opacity:1;transform:none;pointer-events:auto}
.sv picture{height:100%}
.sv img{width:100%;height:100%;object-fit:cover;object-position:58% 26%}
.sv[data-slot="0"] img{object-position:50% 12%}
.sv-echo{
  position:absolute;left:50%;bottom:-1.02em;transform:translateX(-50%);z-index:-1;
  font-family:var(--display);font-size:clamp(2.4rem,6vw,4.4rem);line-height:1;
  text-transform:uppercase;white-space:nowrap;pointer-events:none;
  color:transparent;-webkit-text-stroke:1.5px var(--hair);
}
.lineup-note{
  margin:clamp(2.25rem,4vw,3.25rem) auto 0;text-align:center;color:var(--ash);
  font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;
}

/* ==========================================================================
   TRACKS
   ========================================================================== */
.tracks{padding-block:var(--sec);position:relative}
.tracks::before{
  content:"";position:absolute;left:0;right:0;top:0;height:1px;
  background:var(--hair);transform:rotate(-.7deg);
}
.tr-switch{
  position:relative;display:grid;grid-template-columns:1fr 1fr;
  width:min(430px,100%);margin:0 auto clamp(2.5rem,5vw,3.75rem);
  border:2px solid var(--green);
}
.tr-thumb{
  position:absolute;inset:0 50% 0 0;background:var(--green);
  transition:transform .44s var(--ease);
}
.tr-switch.to-parent .tr-thumb{transform:translateX(100%)}
.tr-btn{
  position:relative;z-index:1;min-height:54px;
  font-family:var(--display);font-size:1.45rem;letter-spacing:.05em;
  text-transform:uppercase;color:var(--green);transition:color .3s var(--ease);
}
.tr-btn.is-on{color:var(--black)}

.tr-panel[hidden]{display:none}
.tr-list{
  display:grid;gap:1px;background:var(--hair);
  grid-template-columns:1fr;border:1px solid var(--hair);
}
.tr-list li{
  background:var(--black);padding:clamp(1.4rem,2.6vw,2rem);
  display:grid;align-content:start;gap:.55rem;
  opacity:0;transform:translateY(18px);
}
.tr-panel.is-on .tr-list li{
  opacity:1;transform:none;
  transition:opacity .5s var(--ease),transform .5s var(--ease);
}
.tr-panel.is-on .tr-list li:nth-child(1){transition-delay:.04s}
.tr-panel.is-on .tr-list li:nth-child(2){transition-delay:.1s}
.tr-panel.is-on .tr-list li:nth-child(3){transition-delay:.16s}
.tr-panel.is-on .tr-list li:nth-child(4){transition-delay:.22s}
.tl-k{font-size:.6rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--high)}
.tl-h{
  font-family:var(--display);font-weight:400;font-size:var(--fs-h3);
  line-height:.96;text-transform:uppercase;color:var(--green);
  margin:0;text-wrap:balance;
}
.tr-list p{color:var(--smoke);font-size:.94rem;line-height:1.5}

/* ==========================================================================
   PARENTS
   ========================================================================== */
.parents{padding-block:var(--sec);background:var(--black);position:relative}
.parents-grid{display:grid;gap:clamp(2.5rem,5vw,4rem);align-items:start}
.parents-more{display:grid;gap:1rem;color:var(--smoke)}
.parents-more .p-h3{margin-top:.6rem}
.parents-copy{display:grid;gap:1.05rem;color:var(--smoke)}
.parents-copy .h2{color:var(--high);max-width:9ch}
.parents-copy .lead{color:var(--paper)}

.parents-card{
  position:relative;background:var(--green);color:var(--black);
  padding:clamp(1.75rem,3.4vw,2.5rem);
  transform:rotate(-1.1deg);
}
.pc-k{
  font-size:.62rem;font-weight:700;letter-spacing:.22em;
  text-transform:uppercase;color:rgba(0,0,0,.62);margin-bottom:1rem;
}
.pc-k2{margin-top:1.9rem}
.pc-list{display:grid;gap:1.15rem}
.pc-list li{display:grid;gap:.15rem;padding-bottom:1.15rem;border-bottom:2px solid rgba(0,0,0,.16)}
.pc-list li:last-child{border-bottom:0;padding-bottom:0}
.pc-name{
  font-family:var(--display);font-size:clamp(1.9rem,3.4vw,2.55rem);
  line-height:.95;text-transform:uppercase;
}
.pc-org{font-size:.8rem;font-weight:500;line-height:1.4;color:rgba(0,0,0,.72)}
.pc-note{font-size:.88rem;line-height:1.5;color:rgba(0,0,0,.78);max-width:30ch}
.pc-tape{
  position:absolute;top:-13px;left:50%;width:104px;height:26px;
  transform:translateX(-50%) rotate(2.4deg);
  background:rgba(255,255,255,.16);
  border-left:1px dashed rgba(0,0,0,.2);border-right:1px dashed rgba(0,0,0,.2);
}

/* ==========================================================================
   VENUE
   ========================================================================== */
.venue{padding-block:var(--sec);position:relative}
.venue-grid{display:grid;gap:clamp(2rem,4vw,3rem);align-items:stretch}
.venue-map{position:relative;border:2px solid var(--green);min-height:320px}
.venue-map iframe{
  width:100%;height:100%;min-height:320px;border:0;
  filter:grayscale(1) invert(.92) contrast(.86) hue-rotate(180deg);
}
.venue-info{display:grid;align-content:start;gap:1.5rem}
.v-dl{display:grid;gap:1px;background:var(--hair);border:1px solid var(--hair)}
.v-dl > div{background:var(--black);padding:1.05rem 1.15rem;display:grid;gap:.3rem}
.v-dl dt{font-size:.6rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--ash)}
.v-dl dd{
  margin:0;font-family:var(--display);font-size:clamp(1.35rem,2.2vw,1.75rem);
  line-height:1.05;text-transform:uppercase;color:var(--green);
}
.venue-info .btn{justify-self:start}

/* ==========================================================================
   FAQ
   ========================================================================== */
.faq{padding-block:var(--sec)}
.faq-list{max-width:900px;margin-inline:auto;border-top:1px solid var(--hair)}
.q{border-bottom:1px solid var(--hair)}
.q summary{
  display:flex;align-items:center;justify-content:space-between;gap:1.5rem;
  padding:clamp(1.15rem,2.2vw,1.6rem) .25rem;cursor:pointer;list-style:none;
  font-family:var(--display);font-size:clamp(1.45rem,2.7vw,2.05rem);
  line-height:1.06;text-transform:uppercase;color:var(--paper);
  transition:color .28s var(--ease);min-height:56px;
}
.q summary::-webkit-details-marker{display:none}
.q summary:hover,.q[open] summary{color:var(--green)}
.q summary i{
  flex:none;position:relative;width:20px;height:20px;
}
.q summary i::before,.q summary i::after{
  content:"";position:absolute;left:0;top:9px;width:20px;height:2px;
  background:var(--green);transition:transform .34s var(--ease);
}
.q summary i::after{transform:rotate(90deg)}
.q[open] summary i::after{transform:rotate(0)}
.q-body{padding:0 .25rem clamp(1.25rem,2.4vw,1.8rem)}
.q-body p{color:var(--smoke);max-width:64ch}
.q[open] .q-body{animation:qOpen .42s var(--ease)}
@keyframes qOpen{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}

/* ==========================================================================
   GET IN
   ========================================================================== */
.getin{position:relative;padding-block:clamp(5rem,11vw,9rem);overflow:hidden;isolation:isolate;text-align:center}
.getin::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,#000,rgba(0,0,0,.55) 45%,#000);
}
.getin-in{display:grid;justify-items:center}
.getin-in .kicker{color:var(--high)}
.getin-h{
  display:grid;font-family:var(--display);font-weight:400;
  font-size:clamp(3.75rem,15vw,11rem);line-height:.82;
  text-transform:uppercase;color:var(--green);margin:0;letter-spacing:.012em;
}
.getin-h span:last-child{color:var(--yellow)}
.getin-sub{
  margin-top:clamp(1.25rem,2.6vw,1.9rem);max-width:34ch;
  font-size:var(--fs-lead);line-height:1.45;color:var(--paper);text-wrap:balance;
}
.getin-btns{display:flex;flex-wrap:wrap;gap:.9rem;justify-content:center;margin-top:clamp(1.9rem,3.6vw,2.6rem)}
.getin-fine{
  margin-top:clamp(1.75rem,3vw,2.4rem);font-size:.68rem;font-weight:700;
  letter-spacing:.2em;text-transform:uppercase;color:var(--ash);
}

/* ==========================================================================
   FOOTER
   ========================================================================== */
.site-foot{border-top:1px solid var(--hair);padding-top:clamp(2.75rem,5vw,4rem)}
.foot-grid{display:grid;gap:clamp(2rem,4vw,3rem)}
.foot-mark{
  display:grid;font-family:var(--display);font-size:clamp(2.4rem,5vw,3.4rem);
  line-height:.8;text-transform:uppercase;color:var(--green);margin-bottom:.9rem;
}
.foot-brand p{color:var(--ash);font-size:.88rem}
.foot-nav{display:flex;flex-wrap:wrap;gap:.7rem 1.6rem;align-content:start}
.foot-nav a{
  font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  color:var(--smoke);transition:color .25s var(--ease);
}
.foot-nav a:hover,.foot-nav a:focus-visible{color:var(--green)}
.foot-meta{display:grid;gap:.7rem;color:var(--ash);font-size:.82rem;line-height:1.5}
.foot-base{
  display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;
  margin-top:clamp(2.5rem,5vw,3.5rem);padding-block:1.4rem;
  border-top:1px solid var(--hair);
  font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ash);
}
.foot-base a:hover,.foot-base a:focus-visible{color:var(--green)}
.foot-credit{text-align:center}
.foot-credit a{color:var(--smoke);transition:color .25s var(--ease)}

/* ==========================================================================
   MOBILE DOCK
   ========================================================================== */
.dock{
  position:fixed;left:0;right:0;bottom:0;z-index:100;display:none;
  grid-template-columns:repeat(4,1fr);
  background:rgba(0,0,0,.94);backdrop-filter:blur(12px);
  border-top:1px solid var(--hair);
  padding-bottom:env(safe-area-inset-bottom);
}
.dock a{
  display:grid;justify-items:center;gap:.3rem;padding:.6rem .25rem .55rem;
  min-height:58px;color:var(--smoke);
}
.dock a span{font-size:.58rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.dock svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.dock .dock-cta{color:var(--black);background:var(--green)}

/* ==========================================================================
   SCROLL REVEAL
   ========================================================================== */
[data-rise]{opacity:0;transform:translateY(24px)}
.js-on [data-rise].is-in{
  opacity:1;transform:none;
  transition:opacity .62s var(--ease),transform .62s var(--ease);
}
html:not(.js-on) [data-rise]{opacity:1;transform:none}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
@media (min-width:640px){
  .pitch-facts{grid-template-columns:repeat(4,1fr)}
  .tr-list{grid-template-columns:repeat(2,1fr)}
}

@media (min-width:900px){
  .hero-cue{display:flex}
  .stage{grid-template-columns:1fr .92fr;gap:clamp(2.5rem,5vw,4rem);align-items:stretch}
  .stage-names{align-self:stretch;grid-template-rows:1fr 1fr}
  .stage-names li{display:grid}
  .sn{height:100%}
  .stage-vis{align-self:start}
  .pitch-grid{
    grid-template-columns:1fr 1.15fr;
    grid-template-areas:"head body" "facts body";
    align-items:start;column-gap:clamp(2.5rem,6vw,5rem);
  }
  .pitch-head{grid-area:head}
  .pitch-body{grid-area:body}
  .pitch-facts{grid-area:facts;align-self:end}
  .parents-grid{grid-template-columns:1.08fr .92fr;column-gap:clamp(2.5rem,5vw,4.5rem)}
  .parents-copy{grid-column:1;grid-row:1 / span 2}
  .parents-card{grid-column:2;grid-row:1}
  .parents-more{grid-column:2;grid-row:2}
  .venue-grid{grid-template-columns:1.1fr .9fr}
  .foot-grid{grid-template-columns:1.2fr .8fr 1fr}
  .tr-list{grid-template-columns:repeat(4,1fr)}
}

@media (min-width:1180px){
  .hero{align-items:center}
}

/* --- tablet and below : swap to burger + dock --- */
@media (max-width:1023px){
  .nav{grid-template-columns:1fr auto 1fr}
  .nav-side{display:none}
  .nav-left{display:block;visibility:hidden}
  .burger{display:flex}
  .dock{display:grid}
  body{padding-bottom:calc(58px + env(safe-area-inset-bottom))}
  .wordmark::before,.wordmark::after{display:none}
}

@media (max-width:759px){
  .hero{align-items:flex-start;padding-top:clamp(6.5rem,20vh,9rem);min-height:auto;padding-bottom:0}
  .hero-grid{padding-bottom:0}
  .hero-stamp{position:static;transform:rotate(-2.4deg);justify-self:center;
    width:max-content;margin:1.6rem auto 0}
  .hero-aq{display:none}
  .hero-jul{
    position:relative;left:auto;bottom:auto;width:min(84vw,22rem);
    margin:-1rem auto -1px;
  }
  .hero-count{margin-top:1.4rem}
  .hero-sub{max-width:26ch}
  .ticker-clip{margin-top:0}
  .ticker{transform:rotate(-2.4deg) scaleX(1.12)}
  .stage-vis{max-width:23rem}
  .sn{grid-template-columns:auto 1fr;min-height:88px}
  .sn-tag{grid-column:2;margin-top:.2rem}
  .parents-card{transform:none}
  .q summary{gap:1rem}
}

@media (max-width:400px){
  .cd-cell{min-width:0;flex:1}
  .hero-count{gap:.4rem}
}

/* ==========================================================================
   REDUCED MOTION
   ========================================================================== */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
  .ticker-run{animation:none;transform:none}
  .hero-glow{display:none}
  [data-rise]{opacity:1 !important;transform:none !important}
  .js-on .ht-l1 i,.js-on .ht-l2 i{opacity:1;transform:none}
  .tr-panel .tr-list li{opacity:1;transform:none}
  .mnav .mnav-list a{opacity:1;transform:none}
}

/* ==========================================================================
   PRINT
   ========================================================================== */
@media print{
  .site-head,.dock,.mnav,.hero-tex,.lineup-tex,.getin-tex,.hero-glow,.ticker{display:none !important}
  body{background:#fff;color:#000}
  .h2,.tl-h,.getin-h{color:#000}
}

/* ---------- anchor offset for the fixed header ---------- */
section[id],main[id]{scroll-margin-top:clamp(78px,11vh,104px)}

/* ---------- countdown, after doors open ---------- */
.cd-live{
  font-family:var(--display);font-size:clamp(1.8rem,4vw,2.8rem);
  line-height:1;text-transform:uppercase;color:var(--yellow);
  text-align:center;margin-inline:auto;
}

/* ---------- sub headings inside long-form copy ---------- */
.p-h3{
  font-family:var(--display);font-weight:400;font-size:var(--fs-h3);
  line-height:.98;text-transform:uppercase;color:var(--green);
  margin:1.4rem 0 -.15rem;text-wrap:balance;
}
