@font-face{font-family:'Big Shoulders Display';src:url('fonts/big-shoulders-display-latin-wght-normal.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:'Libre Franklin';src:url('fonts/libre-franklin-latin-wght-normal.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:'Libre Franklin';src:url('fonts/libre-franklin-latin-wght-italic.woff2') format('woff2');font-weight:100 900;font-style:italic;font-display:swap}
@font-face{font-family:'DM Mono';src:url('fonts/dm-mono-latin-400-normal.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'DM Mono';src:url('fonts/dm-mono-latin-500-normal.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'DM Mono';src:url('fonts/dm-mono-latin-400-italic.woff2') format('woff2');font-weight:400;font-style:italic;font-display:swap}

/* dna1: night-game scoreboard palette */
:root{
  --night:#0a1633;
  --night-2:#13224a;
  --tower:#f6efdc;
  --amber:#ffb21a;
  --field:#2a63d4;
  --miss:#ff4b36;
  --tower-dim:rgba(246,239,220,.72);
  --rule:rgba(246,239,220,.18);

  /* dna2: scoreboard capitals, sports-page grotesque, stat mono */
  --display:'Big Shoulders Display', 'Arial Narrow', sans-serif;
  --body:'Libre Franklin', 'Helvetica Neue', Arial, sans-serif;
  --mono:'DM Mono', ui-monospace, Menlo, monospace;

  --ease:cubic-bezier(.2,.7,.2,1);
  --wrap:1200px;
}

*,*::before,*::after{box-sizing:border-box}
section[id]{scroll-margin-top:96px}
body{
  margin:0;
  background:var(--night);
  color:var(--tower);
  font-family:var(--body);
  font-size:1.0625rem;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
img,svg{max-width:100%;display:block}
a{color:inherit}
p{margin:0 0 1em}
h1,h2,h3{margin:0}

.skip{position:absolute;left:-9999px;top:0;background:var(--amber);color:var(--night);padding:.6em 1em;z-index:100;font-weight:700}
.skip:focus{left:1rem;top:1rem}

:focus-visible{outline:3px solid var(--amber);outline-offset:3px}

.wrap{max-width:var(--wrap);margin:0 auto;padding:0 clamp(1.25rem,4vw,3rem)}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.amber{color:var(--amber)}
.dim{color:var(--tower-dim)}

.kicker{
  font-family:var(--mono);
  font-size:.8rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--amber);
  margin-bottom:1rem;
}
.kicker::before{content:"";display:inline-block;width:.6em;height:.6em;background:var(--miss);border-radius:50%;margin-right:.7em;vertical-align:.05em}

.h2,.hero__title,.bit__title,.panel__tag,.ticket h3,.act h3,.data-note h3,.brand,.footer__brand{
  font-family:var(--display);
  text-transform:uppercase;
  font-weight:800;
  letter-spacing:.01em;
  line-height:.92;
}
.h2{font-size:clamp(2.6rem,6vw,5rem);margin-bottom:1.5rem;max-width:16ch}
.intro{font-size:1.2rem;color:var(--tower-dim);max-width:46ch;margin-bottom:2.5rem}

/* top bar + marquee */
.topbar{position:sticky;top:0;z-index:50;background:rgba(10,22,51,.94);backdrop-filter:blur(6px);border-bottom:1px solid var(--rule)}
.topbar__row{display:flex;align-items:center;gap:1.5rem;max-width:var(--wrap);margin:0 auto;padding:.7rem clamp(1.25rem,4vw,3rem)}
.brand{font-size:1.9rem;text-decoration:none;color:var(--tower)}
.nav{display:flex;gap:1.4rem;margin-left:auto;font-family:var(--mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.08em}
.nav a{text-decoration:none;color:var(--tower-dim);transition:color .18s ease-out}
.nav a:hover{color:var(--amber)}
.motion-toggle{
  display:inline-flex;align-items:center;gap:.5em;
  font:500 .75rem/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;
  color:var(--tower);background:transparent;border:1px solid var(--rule);border-radius:99px;padding:.5em .9em;cursor:pointer;
  transition:transform .18s ease-out, background-color .18s ease-out;
}
.motion-toggle:hover{background-color:var(--night-2)}
.motion-toggle__dot{width:.6em;height:.6em;border-radius:50%;background:var(--amber)}
.motion-toggle[aria-pressed="true"] .motion-toggle__dot{background:var(--miss)}

.marquee{overflow:hidden;border-top:1px solid var(--rule);background:var(--night-2)}
.marquee__track{
  display:flex;width:max-content;
  animation:marquee-run 28s linear infinite;
}
.marquee__track span{
  font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:1rem;letter-spacing:.06em;
  padding:.35rem 1.6rem;color:var(--amber);white-space:nowrap;
}
.marquee__track span::after{content:"\2022";color:var(--miss);margin-left:3.2rem}
@keyframes marquee-run{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* buttons */
.btn{
  display:inline-block;text-decoration:none;
  font:800 1.15rem/1 var(--display);text-transform:uppercase;letter-spacing:.06em;
  padding:.95em 1.5em;border-radius:3px;
  transition:transform .18s ease-out, background-color .18s ease-out;
}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(1px)}
.btn--amber{background:var(--amber);color:var(--night)}
.btn--amber:hover{background-color:var(--tower)}
.btn--line{border:2px solid var(--tower);color:var(--tower)}
.btn--line:hover{background-color:var(--night-2)}

/* hero */
.hero{
  display:grid;grid-template-columns:1fr 1.05fr;align-items:center;gap:clamp(1.5rem,4vw,4rem);
  max-width:var(--wrap);margin:0 auto;padding:clamp(2.5rem,6vw,5rem) clamp(1.25rem,4vw,3rem) clamp(3rem,6vw,5rem);
  min-height:calc(100vh - 110px);
}
.hero__title{font-size:clamp(3.4rem,6.4vw,6.2rem);margin-bottom:1.6rem;color:var(--tower)}
.hero__line{font-size:clamp(1.25rem,2vw,1.6rem);line-height:1.35;max-width:26ch}
.hero__line strong{color:var(--amber);font-weight:800}
.hero__lede{color:var(--tower-dim);max-width:42ch}
.hero__ctas{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:1.8rem}
.hero__art{margin:0}
#light-towers{width:100%;height:auto;border-radius:6px;box-shadow:0 30px 80px rgba(0,0,0,.45), 0 0 0 1px var(--rule)}
.hero__art figcaption{font-family:var(--mono);font-size:.78rem;color:var(--tower-dim);margin-top:.8rem;letter-spacing:.04em}
.board__num{font-family:var(--display);font-weight:800;font-size:30px;fill:var(--amber)}
.board__cap{font-family:var(--mono);font-size:12px;letter-spacing:.12em;fill:var(--tower)}

/* dna5: beams sweep */
.beam{transform-box:fill-box;animation:beam-sweep 9s ease-in-out infinite alternate}
.beam--l{transform-origin:30% 0%}
.beam--r{transform-origin:70% 0%;animation-delay:-4.5s}
@keyframes beam-sweep{
  0%{transform:rotate(-6deg);opacity:.75}
  50%{opacity:1}
  100%{transform:rotate(6deg);opacity:.8}
}
.glow{animation:bulb-flicker 3.2s ease-in-out infinite alternate}
@keyframes bulb-flicker{from{opacity:.55}to{opacity:1}}

[data-motion="paused"] *{animation-play-state:paused !important}

/* sections */
.section{padding:clamp(4rem,9vw,7.5rem) 0;border-top:1px solid var(--rule)}

/* problem */
.problem__grid{display:grid;grid-template-columns:1fr 1.3fr;gap:clamp(1.5rem,4vw,4rem);align-items:start}
.problem__text{font-size:clamp(1.25rem,2vw,1.55rem);line-height:1.45}
.problem__bench{margin-top:2.5rem;color:var(--tower-dim);max-width:70ch;font-size:1rem}
.scoreline{background:var(--night-2);border:2px solid var(--field);border-radius:6px;padding:1.4rem}
.scoreline__head{font-family:var(--display);text-transform:uppercase;font-weight:800;font-size:clamp(1.5rem,2.6vw,2.1rem);line-height:1;margin-bottom:1.1rem}
.scoreline__row{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:var(--night);padding:4px;border-radius:4px}
.scoreline__cell{background:#0d1b3d;padding:.8rem .6rem;text-align:center;display:flex;flex-direction:column;gap:.3rem}
.label{font-family:var(--mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:var(--tower-dim)}
.num{font-family:var(--mono);font-weight:500;font-variant-numeric:tabular-nums;font-size:clamp(1.4rem,3vw,2.3rem);color:var(--amber);line-height:1}
.scoreline__cell--miss .num{color:var(--miss)}
.scoreline__note{font-size:.92rem;color:var(--tower-dim);margin:1.1rem 0 0}

/* dna6: the tight five set list */
.setlist{list-style:none;margin:0;padding:0;counter-reset:none;border-top:2px solid var(--tower)}
.bit{
  display:grid;grid-template-columns:minmax(5rem,11rem) 1fr;gap:clamp(1rem,3vw,3rem);align-items:start;
  padding:clamp(1.4rem,3vw,2.2rem) 0;border-bottom:1px solid var(--rule);
}
.bit__num{
  font-family:var(--display);font-weight:900;font-size:clamp(4.2rem,10vw,8.5rem);line-height:.8;
  color:transparent;-webkit-text-stroke:2px var(--amber);font-variant-numeric:tabular-nums;
}
.bit:nth-child(2) .bit__num,.bit:nth-child(4) .bit__num{-webkit-text-stroke-color:var(--field)}
.bit__title{font-size:clamp(1.9rem,3.6vw,3rem);margin-bottom:.6rem}
.bit__body p{max-width:62ch;color:var(--tower-dim);margin:0}
.bit:nth-child(2) .bit__title{color:var(--amber)}

/* dna3: the box score */
.box__grid{display:grid;grid-template-columns:repeat(12, 1fr);gap:4px;background:var(--rule);border:4px solid var(--night-2);border-radius:6px;overflow:hidden}
.panel{background:var(--night-2);padding:clamp(1.3rem,2.4vw,2rem);display:flex;flex-direction:column}
.panel p{font-size:.98rem}
.panel--lead{grid-column:span 12;background:#0d1b3d}
.panel--lead > p:not(.panel__big){max-width:60ch;font-size:1.15rem}
.panel--bench{grid-column:span 7}
.panel--mech{grid-column:span 5}
.panel--var{grid-column:span 7}
.panel--vote{grid-column:span 5}
.panel__head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;border-bottom:1px solid var(--rule);padding-bottom:.7rem;margin-bottom:1.1rem}
.panel__tag{font-size:1.6rem}
.panel__inning{font-family:var(--mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--amber);white-space:nowrap}
.panel .panel__big{
  font-family:var(--display);font-weight:900;line-height:.8;margin:.2rem 0 1.4rem;
  font-size:clamp(4.4rem,16vw,14rem);font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:.15em;
}
.panel__big .of{font-family:var(--mono);font-weight:400;font-size:.16em;letter-spacing:.1em;text-transform:uppercase;color:var(--tower-dim)}
.panel__limit{margin-top:auto;padding-top:1rem;border-top:1px dashed var(--rule);font-size:.92rem !important;color:var(--tower)}
.panel__limit span{display:block;font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--miss);margin-bottom:.25rem}

.bars{display:grid;gap:.55rem;margin:.4rem 0 1.2rem}
.bar{display:grid;grid-template-columns:6.5rem 1fr 3.6rem;align-items:center;gap:.8rem;font-family:var(--mono);font-size:.82rem}
.bar__track{height:14px;background:var(--night);border-radius:2px;overflow:hidden}
.bar__fill{display:block;height:100%;width:var(--v);background:var(--amber);transform-origin:left;transition:transform .9s var(--ease)}
.bar__val{text-align:right;color:var(--amber);font-variant-numeric:tabular-nums}
.js .box:not(.is-in) .bar__fill{transform:scaleX(0)}

.scale{margin:.4rem 0 1.2rem}
.scale__track{position:relative;height:28px;border-left:2px solid var(--tower-dim);border-right:2px solid var(--tower-dim)}
.scale__track::before{content:"";position:absolute;left:0;right:0;top:50%;height:2px;background:var(--rule)}
.scale__dot{position:absolute;top:50%;left:var(--x);width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:var(--amber);box-shadow:0 0 0 3px var(--night-2)}
.scale__ends{display:flex;justify-content:space-between;font-family:var(--mono);font-size:.72rem;color:var(--tower-dim);margin-top:.4rem;text-transform:uppercase;letter-spacing:.08em}

/* dna8: the lineup, ticket stubs */
.tickets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.4rem}
.ticket{min-width:0}
.ticket{
  position:relative;background:var(--tower);color:var(--night);border-radius:8px;padding:1.5rem 1.4rem 1.3rem;
  border-top:10px solid var(--amber);
}
.ticket:nth-child(2){border-top-color:var(--field)}
.ticket:nth-child(3){border-top-color:var(--miss)}
.ticket::before,.ticket::after{content:"";position:absolute;top:58px;width:22px;height:22px;border-radius:50%;background:var(--night)}
.ticket::before{left:-11px}
.ticket::after{right:-11px}
.ticket__head{border-bottom:2px dashed rgba(10,22,51,.35);padding-bottom:1rem;margin-bottom:1.1rem}
.ticket__seat{font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:#4a5677}
.ticket h3{font-size:2.4rem;margin-top:.2rem}
.cmd{display:flex;align-items:stretch;background:var(--night);border-radius:4px;overflow:hidden}
.cmd code{flex:1;min-width:0;font-family:var(--mono);font-size:.8rem;color:var(--tower);padding:.75rem .8rem;white-space:normal;overflow-wrap:anywhere;line-height:1.45}
.copy{
  font:500 .72rem/1 var(--mono);text-transform:uppercase;letter-spacing:.1em;
  background:var(--amber);color:var(--night);border:0;padding:0 .9rem;cursor:pointer;
  transition:transform .18s ease-out, background-color .18s ease-out;
}
.copy:hover{background-color:var(--tower)}
.copy:active{transform:scale(.94)}
.copy.is-copied{background-color:var(--field);color:var(--tower)}
.ticket__then{font-family:var(--mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;margin:.5rem 0;color:#4a5677}
.ticket__note{margin:1rem 0 0;font-size:.95rem}
.lineup__key{margin-top:2rem;color:var(--tower-dim);font-family:var(--mono);font-size:.9rem}
.sr-status{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* try */
.try__grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr);gap:1.4rem}
.act{border:1px solid var(--rule);border-radius:6px;padding:1.6rem;background:var(--night-2)}
.act--main{border:2px solid var(--amber);background:#0d1b3d}
.act h3{font-size:2rem;margin-bottom:.8rem;color:var(--amber)}
.act__steps{list-style:none;padding:0;margin:0 0 1rem;display:grid;gap:.6rem}
.act__steps li{border-left:3px solid var(--field);padding-left:.8rem}
.act__steps .mono{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--amber)}
.act__fine{font-size:.9rem;color:var(--tower-dim)}

/* built */
.statline{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,1fr);border-top:2px solid var(--tower)}
.statline li{padding:1.4rem 1.4rem 1.4rem 0;border-bottom:1px solid var(--rule)}
.statline__n{display:block;font-family:var(--display);font-weight:900;font-size:clamp(2.2rem,4vw,3.4rem);line-height:1;color:var(--amber);margin-bottom:.5rem;font-variant-numeric:tabular-nums}
.statline p{margin:0;color:var(--tower-dim);font-size:.98rem;max-width:34ch}
.data-note{margin-top:3rem;padding:1.6rem;border-left:4px solid var(--field);background:var(--night-2);max-width:60ch}
.data-note h3{font-size:1.8rem;margin-bottom:.6rem}
.data-note p:last-child{margin:0}

.page-note p{max-width:64ch;font-size:1.1rem}
.page-note p:last-child{color:var(--tower-dim)}

.footer{border-top:4px solid var(--amber);padding:2.5rem 0}
.footer__row{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}
.footer__brand{font-size:2.6rem;margin:0}
.footer__links{list-style:none;margin:0;padding:0;display:flex;gap:2rem;flex-wrap:wrap;font-family:var(--mono);font-size:.9rem}
.footer__links a{color:var(--amber)}

/* entrance: punchy cuts */
.js [data-enter] .wrap > *{opacity:0;transform:translateY(18px);transition:opacity .22s ease-out, transform .22s ease-out}
.js [data-enter].is-in .wrap > *{opacity:1;transform:none}
.js [data-enter].is-in .wrap > *:nth-child(2){transition-delay:.04s}
.js [data-enter].is-in .wrap > *:nth-child(3){transition-delay:.08s}
.js [data-enter].is-in .wrap > *:nth-child(n+4){transition-delay:.12s}

/* responsive */
@media (max-width: 960px){
  .hero{grid-template-columns:1fr;min-height:0}
  .problem__grid{grid-template-columns:1fr}
  .panel--bench,.panel--mech,.panel--var,.panel--vote{grid-column:span 12}
  .panel--lead{grid-template-columns:1fr}
  .panel--lead .panel__big{grid-row:auto;margin-bottom:1rem}
  .tickets,.try__grid{grid-template-columns:1fr}
  .statline{grid-template-columns:1fr 1fr}
  .nav{display:none}
  .motion-toggle{margin-left:auto}
}
@media (max-width: 560px){
  .hero__title{font-size:clamp(3rem,15vw,4.4rem)}
  .scoreline__row{grid-template-columns:repeat(2,1fr)}
  .bit{grid-template-columns:4.6rem 1fr}
  .statline{grid-template-columns:1fr}
  .bar{grid-template-columns:5.6rem 1fr 3rem}
}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation:none !important;transition:none !important}
  .js [data-enter] .wrap > *{opacity:1;transform:none}
  .js .box:not(.is-in) .bar__fill{transform:none}
}
