/* Layout: one long night-rink scroll; sections are split by real rink markings
   (goal line, blue line, center red line) instead of generic dividers. */
:root {
  --night: #05071a;
  --rink: #0b0f2e;
  --indigo: #23267a;
  --royal: #4a50d6;
  --ice: #c6e4fb;
  --glow: #8fdcff;
  --frost: #f2f8ff;
  --muted: #98a3d3;
  --goal: #e5394f;
  --line: rgba(198, 228, 251, .14);

  --display: "Big Shoulders Display", "Big Shoulders", "Arial Narrow", Impact, sans-serif;
  --script: "Yellowtail", "Brush Script MT", cursive;
  --body: "Barlow", "Helvetica Neue", Arial, sans-serif;
  --led: "Doto", "Courier New", ui-monospace, monospace;

  --pad: clamp(20px, 4vw, 64px);
  color-scheme: dark;
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--night);
  color: var(--frost);
  font: 400 17px/1.55 var(--body);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
body::before {
  content: ""; position: fixed; inset: 0 0 auto; z-index: 60;
  height: env(safe-area-inset-top, 0px); background: var(--night);
}
a { color: inherit; }
img { max-width: 100%; display: block; }
h1, h2, h3 { text-wrap: balance; margin: 0; }
:focus-visible { outline: 2px solid var(--glow); outline-offset: 3px; border-radius: 4px; }

.wrap {
  max-width: 1320px; margin: 0 auto;
  padding-left: max(var(--pad), env(safe-area-inset-left, 0px));
  padding-right: max(var(--pad), env(safe-area-inset-right, 0px));
}
.sec-title {
  font: 900 clamp(56px, 9vw, 132px)/.86 var(--display);
  text-transform: uppercase; letter-spacing: -.01em;
}
.sec-title em.own-line { display: block; margin: .12em 0 0 .3em; font-size: .7em; }
.sec-title em { font: 400 .62em/.8 var(--script); text-transform: none; color: var(--ice); letter-spacing: 0; margin-left: .08em; }
.btn {
  display: inline-flex; align-items: center; gap: 10px; text-decoration: none; cursor: pointer;
  font: 700 14px/1 var(--body); letter-spacing: .14em; text-transform: uppercase;
  padding: 16px 22px; border-radius: 999px; border: 1px solid var(--frost); color: var(--night); background: var(--frost);
  transition: transform .25s, box-shadow .25s, background .25s, color .25s;
}
.btn:hover { transform: translateY(-2px); box-shadow: 0 14px 40px -10px rgba(143,220,255,.7); }
.btn.ghost { background: transparent; color: var(--frost); border-color: rgba(198,228,251,.35); }
.btn.ghost:hover { border-color: var(--frost); }
.btn .arr { transition: transform .25s; }
.btn:hover .arr { transform: translateX(4px); }

/* ---------- Scroll progress: a mini rink with a puck ---------- */
.progress {
  position: fixed; z-index: 70; left: 0; right: 0;
  top: env(safe-area-inset-top, 0px); height: 4px; pointer-events: none;
}
.progress-rink { position: absolute; inset: 0; background: rgba(242, 248, 255, .1); }
.progress-rink i { position: absolute; top: 0; bottom: 0; width: 3px; }
.progress-rink .bl { background: var(--royal); }
.progress-rink .a { left: 33%; } .progress-rink .b { left: 67%; }
.progress-rink .rl { left: 50%; background: var(--goal); }
.progress-fill { position: absolute; inset: 0; transform-origin: 0 50%; transform: scaleX(0); background: linear-gradient(90deg, var(--royal), var(--glow)); opacity: .85; }
.puck {
  position: absolute; top: -3px; left: 0; width: 10px; height: 10px; border-radius: 50%;
  background: #0a0a12; border: 2px solid var(--glow); box-shadow: 0 0 12px var(--glow);
  transform: translateX(calc(var(--p, 0) * (100vw - 10px)));
}

/* ---------- Nav ---------- */
.nav {
  position: fixed; z-index: 50; left: 0; right: 0; top: env(safe-area-inset-top, 0px);
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
  padding: 14px max(var(--pad), env(safe-area-inset-right, 0px)) 14px max(var(--pad), env(safe-area-inset-left, 0px));
  transition: background .35s, backdrop-filter .35s, padding .35s;
}
/* soft dark fade behind the nav so it reads over bright photos; hands off to the solid bar on scroll */
.nav::before {
  content: ""; position: absolute; inset: 0 0 -90px 0; z-index: -1; pointer-events: none;
  background: linear-gradient(to bottom, rgba(5,7,26,.8), rgba(5,7,26,.45) 50%, rgba(5,7,26,0));
  transition: opacity .35s;
}
.nav.solid::before { opacity: 0; }
.nav.solid { background: rgba(5, 7, 26, .78); backdrop-filter: blur(14px) saturate(1.3); -webkit-backdrop-filter: blur(14px) saturate(1.3); padding-top: 8px; padding-bottom: 8px; box-shadow: 0 1px 0 var(--line); }
.nav-l, .nav-r { display: flex; align-items: center; gap: clamp(18px, 2.4vw, 36px); }
.nav-r { justify-content: flex-end; }
.nav a.lnk {
  text-decoration: none; font: 700 15px/1 var(--body); letter-spacing: .14em; text-transform: uppercase;
  position: relative; padding: 8px 0;
}
.nav a.lnk::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--glow); transform: scaleX(0); transform-origin: right; transition: transform .35s cubic-bezier(.2,.8,.2,1); }
.nav a.lnk:hover::after, .nav a.lnk[aria-current="page"]::after { transform: scaleX(1); transform-origin: left; }
.crest { position: relative; display: grid; place-items: center; width: 72px; height: 72px; transition: width .35s, height .35s; }
.nav.solid .crest { width: 54px; height: 54px; }
.crest img { width: 100%; height: 100%; filter: drop-shadow(0 6px 18px rgba(0,0,0,.5)); transition: transform .5s cubic-bezier(.2,.8,.2,1); }
.crest:hover img { transform: rotate(-8deg) scale(1.08); }

/* Next-game link: reads like a broadcast lower-third, not a badge */
.gameday {
  display: grid; gap: 4px; justify-items: end; text-decoration: none;
  padding: 2px 0 2px 18px; border-left: 2px solid var(--glow);
}
.gameday .gd-k { font: 700 11px/1 var(--body); letter-spacing: .2em; text-transform: uppercase; color: var(--glow); }
.gameday .gd-v { font: 800 19px/1 var(--display); letter-spacing: .05em; text-transform: uppercase; white-space: nowrap; }
.gameday.live { border-left-color: var(--goal); }
.gameday.live .gd-k { color: var(--goal); }
.gameday:hover .gd-v { color: var(--glow); }

.menu-btn { display: none; background: none; border: 1px solid var(--line); color: var(--frost); border-radius: 999px; padding: 9px 14px; font: 700 13px/1 var(--body); letter-spacing: .12em; text-transform: uppercase; cursor: pointer; }
.drawer {
  position: fixed; z-index: 49; inset: 0; background: rgba(5,7,26,.96); backdrop-filter: blur(10px);
  display: flex; flex-direction: column; justify-content: center; gap: 8px;
  padding: 0 max(16px, env(safe-area-inset-right, 0px)) 0 max(32px, env(safe-area-inset-left, 0px));
}
.drawer a { font: 900 56px/1.05 var(--display); text-transform: uppercase; text-decoration: none; }
.drawer a:hover { color: var(--glow); }

/* ---------- Hero ---------- */
.hero {
  position: relative; isolation: isolate; overflow: hidden;
  min-height: clamp(620px, 96svh, 1000px);
  display: flex; align-items: flex-end;
  background: var(--rink);
}
.hero-img, .frost, .spray, .hero-shade, .lights { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
/* Hero rotation: slides crossfade; each one drifts (Ken Burns) while it is on screen and while it fades out */
.hero-img { object-fit: cover; object-position: 50% 35%; z-index: -4; transform-origin: 50% 40%; opacity: 0; transform: scale(1.05); transition: opacity 1.8s ease; will-change: opacity, transform; }
.hero-img.on { opacity: 1; }
.hero-img.run { animation: kb 9s ease-out both; }
.hero-img.run:nth-of-type(even) { animation-name: kb2; }
@keyframes kb { from { transform: scale(1.05); } to { transform: scale(1.14) translate(-1.5%, -1%); } }
@keyframes kb2 { from { transform: scale(1.14) translate(1.5%, -1%); } to { transform: scale(1.05); } }
.frost { z-index: -3; }
.spray { z-index: -2; }
.hero-shade {
  z-index: -1;
  background:
    radial-gradient(ellipse 60% 55% at 18% 78%, rgba(5,7,26,.62), rgba(5,7,26,0) 70%),
    linear-gradient(to top, rgba(5,7,26,.92) 0%, rgba(5,7,26,.4) 24%, rgba(5,7,26,0) 48%),
    linear-gradient(to bottom, rgba(5,7,26,.5), rgba(5,7,26,0) 18%);
}
.lights { z-index: 5; background: #000; opacity: 0; }
.hero-inner {
  position: relative; width: 100%; max-width: 1320px; margin: 0 auto;
  padding: 0 max(var(--pad), env(safe-area-inset-right, 0px)) clamp(36px, 6vw, 72px) max(var(--pad), env(safe-area-inset-left, 0px));
  display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 32px;
}
.hero-copy { min-width: 0; }
.title { position: relative; line-height: .8; margin: 0; }
.t-south {
  display: block; font: 900 clamp(96px, 19vw, 300px)/.8 var(--display); letter-spacing: -.015em;
  background: linear-gradient(180deg, #ffffff 10%, var(--ice) 55%, #7fa9d8 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
  filter: drop-shadow(0 4px 24px rgba(5,7,26,.7));
  /* the gradient only paints inside the box, so pad it past the glyph tops */
  padding-block: .16em; margin-block: -.16em;
}
.t-south .ch {
  display: inline-block; will-change: transform; line-height: 1.12; margin-block: -.16em;
  background: inherit; -webkit-background-clip: text; background-clip: text; color: transparent;
}
.t-script {
  display: block; width: max-content; margin: -.38em 0 0 1.1em;
  font: 400 clamp(64px, 11.5vw, 184px)/1 var(--script); color: #fff;
  transform: rotate(-7deg); transform-origin: 0 50%;
  text-shadow: 0 0 28px rgba(143,220,255,.65), 0 6px 0 var(--indigo);
  clip-path: inset(-20% -10% -20% -10%);
}
.lede { margin: 18px 0 0; max-width: 34ch; color: var(--ice); font-size: clamp(16px, 1.4vw, 19px); }

.next {
  width: min(460px, 100%); padding: clamp(22px, 2.4vw, 32px); border-radius: 24px;
  background: linear-gradient(160deg, rgba(35,38,122,.6), rgba(5,7,26,.6));
  border: 1px solid rgba(198,228,251,.22);
  backdrop-filter: blur(18px) saturate(1.4); -webkit-backdrop-filter: blur(18px) saturate(1.4);
  box-shadow: 0 30px 80px -20px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,.12);
}
.next-top { display: flex; justify-content: space-between; align-items: center; gap: 12px; font: 700 14px/1 var(--body); letter-spacing: .16em; text-transform: uppercase; color: var(--glow); }
.next-top .ha { color: var(--muted); }
.next-opp { margin: 16px 0 4px; font: 900 clamp(48px, 5vw, 68px)/.9 var(--display); text-transform: uppercase; }
.next-opp small { font: 500 22px/1 var(--body); text-transform: none; color: var(--muted); margin-right: 8px; }
.next-where { margin: 0; color: var(--muted); font-size: 17px; }
.count { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-top: 22px; }
.count div { text-align: center; padding: 14px 0 10px; border-radius: 12px; background: rgba(5,7,26,.55); border: 1px solid var(--line); }
.count b { display: block; font: 900 clamp(34px, 3.4vw, 46px)/1 var(--led); color: var(--glow); text-shadow: 0 0 14px rgba(143,220,255,.7); font-variant-numeric: tabular-nums; }
.count span { display: block; margin-top: 6px; font: 600 11px/1 var(--body); letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.next-live { margin-top: 20px; display: none; align-items: center; gap: 12px; font: 900 40px/1 var(--display); text-transform: uppercase; color: #fff; }
.next-live i { width: 12px; height: 12px; border-radius: 50%; background: var(--goal); }
.next.is-live .count { display: none; }
.next.is-live .next-live { display: flex; }

/* Rink markings used as section dividers */
.goal-line { height: 4px; background: var(--goal); box-shadow: 0 0 20px rgba(229,57,79,.6); position: relative; z-index: 3; }
.blue-line { height: 14px; background: var(--royal); box-shadow: 0 0 30px rgba(74,80,214,.5); }
.red-line {
  height: 14px; position: relative;
  background: repeating-linear-gradient(90deg, var(--goal) 0 46px, transparent 46px 58px);
}
.red-line::after { content: ""; position: absolute; left: 50%; top: 50%; width: 22px; height: 22px; margin: -11px 0 0 -11px; border-radius: 50%; background: var(--royal); box-shadow: 0 0 0 4px var(--night); }

/* ---------- Ticker ---------- */
.ticker { overflow: hidden; background: var(--frost); color: var(--night); padding: 16px 0; border-bottom: 1px solid var(--line); }
.ticker-track { display: flex; width: max-content; will-change: transform; }
.ticker-set { display: flex; align-items: center; }
.ticker-item { display: flex; align-items: center; gap: 22px; padding-right: 22px; font: 900 clamp(26px, 3vw, 40px)/1 var(--display); text-transform: uppercase; white-space: nowrap; }
.ticker-item .w { color: #fff; background: var(--royal); padding: 2px 10px 4px; border-radius: 6px; }
.ticker-item .l { color: #fff; background: var(--indigo); padding: 2px 10px 4px; border-radius: 6px; }
.ticker-item img { width: 34px; height: 34px; }
.ticker-item .sc { font-family: var(--script); text-transform: none; font-weight: 400; color: var(--royal); font-size: 1.1em; }

/* ---------- Results ---------- */
.board { padding-block: clamp(80px, 11vw, 150px) clamp(64px, 9vw, 120px); position: relative; overflow: hidden; }
.board::before {
  content: ""; position: absolute; width: 760px; height: 760px; right: -260px; top: -200px; border-radius: 50%;
  border: 3px solid rgba(229,57,79,.16); pointer-events: none;
}
.board::after {
  content: ""; position: absolute; width: 22px; height: 22px; right: 110px; top: 170px; border-radius: 50%;
  background: rgba(229,57,79,.35); pointer-events: none;
}
.board .sec-title { margin-bottom: 40px; }
.jumbo {
  position: relative; border-radius: 26px; padding: clamp(20px, 3vw, 36px);
  background:
    radial-gradient(circle at 50% 0%, rgba(74,80,214,.35), transparent 60%),
    radial-gradient(rgba(143,220,255,.09) 1px, transparent 1.4px) 0 0 / 7px 7px,
    #03040f;
  border: 1px solid rgba(198,228,251,.18);
  box-shadow: 0 0 0 8px #0a0d22, 0 0 0 9px rgba(198,228,251,.12), 0 40px 120px -40px rgba(74,80,214,.6);
}
.jumbo-top { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; font: 700 13px/1 var(--body); letter-spacing: .26em; text-transform: uppercase; color: var(--muted); padding-bottom: 18px; border-bottom: 1px dashed rgba(198,228,251,.15); }
.jumbo-top b { color: var(--frost); }
.jumbo-stats { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; padding-top: 22px; }
.stat { text-align: center; min-width: 0; }
.led {
  display: block; font: 900 clamp(48px, 7.4vw, 108px)/1 var(--led); color: var(--glow);
  text-shadow: 0 0 6px rgba(143,220,255,.9), 0 0 30px rgba(143,220,255,.55);
  font-variant-numeric: tabular-nums;
}
.stat.red .led { color: #ff8c9a; text-shadow: 0 0 6px rgba(255,140,154,.8), 0 0 30px rgba(229,57,79,.5); }
.stat .lbl { display: block; margin-top: 8px; font: 700 12px/1 var(--body); letter-spacing: .22em; text-transform: uppercase; color: var(--muted); }
.board-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: clamp(20px, 3vw, 40px); margin-top: clamp(28px, 4vw, 48px); }
.sub-h { font: 800 26px/1 var(--display); text-transform: uppercase; letter-spacing: .04em; margin-bottom: 16px; color: var(--ice); }
.result {
  position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 20px; align-items: center;
  padding: 20px 22px; border-radius: 18px; background: var(--rink); border: 1px solid var(--line); overflow: hidden;
}
.result + .result { margin-top: 12px; }
.result .badge { width: 54px; height: 54px; border-radius: 14px; display: grid; place-items: center; font: 900 30px/1 var(--display); }
.result.win .badge { background: var(--royal); box-shadow: 0 0 30px rgba(74,80,214,.6); }
.result.loss .badge { background: rgba(198,228,251,.08); border: 1px solid var(--line); color: var(--muted); }
.result .score { font: 900 46px/1 var(--display); letter-spacing: .02em; font-variant-numeric: tabular-nums; }
.result .score small { font: 500 17px/1 var(--body); color: var(--muted); margin-left: 8px; }
.result .meta { margin: 6px 0 0; color: var(--muted); font-size: 14px; }
/* Standings: plain rows, one highlight for us, points as the only emphasis */
.table-wrap { overflow-x: auto; overflow-y: hidden; }
table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
th, td { padding: 16px 10px; text-align: center; font-size: 16px; color: var(--ice); }
th { font: 700 11px/1 var(--body); letter-spacing: .18em; text-transform: uppercase; color: var(--muted); padding-top: 4px; }
th:first-child, td:first-child { text-align: left; padding-left: 16px; }
th:last-child, td:last-child { padding-right: 16px; text-align: right; }
tbody td { border-top: 1px solid var(--line); }
td.team { font-weight: 600; color: var(--frost); }
td.team .rk { display: inline-block; width: 24px; color: var(--muted); font-weight: 500; }
td.pts { font: 800 22px/1 var(--display); color: var(--frost); }
tr.us td { background: rgba(74,80,214,.2); border-top-color: transparent; }
tr.us + tr td { border-top-color: transparent; }
tr.us td:first-child { border-radius: 12px 0 0 12px; }
tr.us td:last-child { border-radius: 0 12px 12px 0; }
tr.us td.pts { color: var(--glow); }

/* ---------- Player cards (home deck) ---------- */
.pack { padding-block: clamp(80px, 11vw, 150px) clamp(60px, 8vw, 110px); position: relative; overflow: hidden; }
.pack-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 24px; margin-bottom: 16px; }
.deck {
  display: flex; gap: 18px; overflow-x: auto; scroll-snap-type: x proximity; overscroll-behavior-x: contain;
  scroll-padding-inline: max(var(--pad), env(safe-area-inset-left, 0px));
  padding: 30px max(var(--pad), env(safe-area-inset-right, 0px)) 40px max(var(--pad), env(safe-area-inset-left, 0px));
  scrollbar-width: thin; scrollbar-color: var(--royal) transparent; cursor: grab;
}
.deck.dragging { cursor: grabbing; scroll-snap-type: none; }
.deck.dragging .card { pointer-events: none; }
.card {
  --rx: 0deg; --ry: 0deg; --mx: 50%; --my: 50%;
  flex: 0 0 auto; width: 248px; aspect-ratio: 3 / 4.1; scroll-snap-align: start;
  perspective: 900px; border: 0; padding: 0; background: none; color: inherit; cursor: pointer; text-align: left;
  font: inherit;
}
.card-in {
  display: block; position: relative; width: 100%; height: 100%; border-radius: 22px;
  transform: rotateX(var(--rx)) rotateY(var(--ry)); transform-style: preserve-3d;
  transition: transform .5s cubic-bezier(.2,.8,.2,1);
}
.card:hover .card-in { transition: transform .08s linear; }
.card.flipped .card-in { transform: rotateY(180deg); transition: transform .7s cubic-bezier(.2,.8,.2,1); }
.face {
  position: absolute; inset: 0; border-radius: 22px; overflow: hidden; backface-visibility: hidden; -webkit-backface-visibility: hidden;
  border: 1px solid rgba(198,228,251,.16);
}
.front { background: linear-gradient(165deg, #1b2063 0%, #0d1138 55%, #070a24 100%); }
.front::before { /* sleeve stripes from the jersey */
  content: ""; position: absolute; left: -10%; right: -10%; bottom: 30%; height: 46px; transform: rotate(-8deg);
  background: linear-gradient(var(--ice) 0 10px, transparent 10px 18px, #fff 18px 28px, transparent 28px 36px, var(--ice) 36px 46px);
  opacity: .1;
}
.front::after { /* glare */
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(circle at var(--mx) var(--my), rgba(255,255,255,.28), transparent 45%);
  opacity: 0; transition: opacity .3s; mix-blend-mode: overlay;
}
.card:hover .front::after { opacity: 1; }
.num {
  position: absolute; right: 14px; top: 4px; font: 900 168px/1 var(--display); letter-spacing: -.03em;
  color: transparent; -webkit-text-stroke: 2px rgba(198,228,251,.45);
  background: linear-gradient(180deg, #fff, var(--glow)); -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; background-size: 100% 0%; background-repeat: no-repeat; background-position: 0 100%;
  transition: background-size .5s cubic-bezier(.2,.8,.2,1);
  transform: translateZ(40px);
}
.card:hover .num, .card:focus-visible .num { background-size: 100% 100%; }
.pos { position: absolute; left: 20px; top: 20px; font: 800 18px/1 var(--display); letter-spacing: .06em; color: var(--ice); }
.who { position: absolute; left: 18px; right: 18px; bottom: 18px; }
.who .first { display: block; font: 500 17px/1.1 var(--body); color: var(--ice); }
.who .last { display: block; font: 900 40px/.92 var(--display); text-transform: uppercase; overflow-wrap: anywhere; }
.who .meta { display: block; margin-top: 8px; font: 500 14px/1.2 var(--body); color: var(--muted); }
.back {
  transform: rotateY(180deg); background: var(--frost); color: var(--night);
  padding: 22px; display: flex; flex-direction: column; justify-content: space-between;
}
.back img { width: 64px; height: 64px; }
.back .facts { display: grid; gap: 12px; }
.back .k { display: block; font: 700 10px/1 var(--body); letter-spacing: .18em; text-transform: uppercase; color: var(--royal); }
.back .v { display: block; margin-top: 3px; font: 700 17px/1.2 var(--body); }
.back .big { display: block; font: 900 34px/.95 var(--display); text-transform: uppercase; }

/* ---------- Gallery reel ---------- */
.reel { position: relative; background: #03040f; padding-block: clamp(80px, 10vw, 140px); display: grid; gap: 36px; overflow: hidden; }
.reel > .wrap { width: 100%; }
.reel-head { display: flex; justify-content: space-between; align-items: end; flex-wrap: wrap; gap: 20px; }
.reel-ctrl { display: flex; align-items: center; gap: 12px; }
.reel-count { font: 800 18px/1 var(--display); letter-spacing: .08em; color: var(--muted); margin-right: 8px; font-variant-numeric: tabular-nums; }
.reel-count b { color: var(--frost); }
.arrow {
  width: 56px; height: 56px; border-radius: 50%; display: grid; place-items: center; cursor: pointer;
  background: transparent; color: var(--frost); border: 1px solid rgba(198,228,251,.35);
  transition: background .25s, color .25s, border-color .25s, transform .25s;
}
.arrow svg { width: 22px; height: 22px; }
.arrow:hover { background: var(--frost); color: var(--night); border-color: var(--frost); }
.arrow:active { transform: scale(.94); }
/* native horizontal scroller: swipe on touch, arrows + autoplay elsewhere; never hijacks vertical scroll */
.reel-track {
  position: relative; display: flex; gap: 22px; align-items: center; overflow-x: auto;
  scroll-snap-type: x mandatory; scroll-behavior: smooth; overscroll-behavior-x: contain; scrollbar-width: none;
  scroll-padding-inline: max(var(--pad), env(safe-area-inset-left, 0px));
  padding-left: max(var(--pad), env(safe-area-inset-left, 0px)); padding-right: max(var(--pad), env(safe-area-inset-right, 0px));
}
.reel-track::-webkit-scrollbar { display: none; }
.reel-bar { height: 2px; background: var(--line); border-radius: 2px; overflow: hidden; }
.reel-bar i { display: block; height: 100%; width: 100%; background: var(--glow); transform-origin: 0 50%; transform: scaleX(0); }
.reel-bar i.run { transform: scaleX(1); transition: transform var(--dur, 4.5s) linear; }
.shot { margin: 0; flex: 0 0 auto; position: relative; scroll-snap-align: start; }
.shot .frame { overflow: hidden; border-radius: 18px; position: relative; background: var(--rink); }
.shot img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s cubic-bezier(.2,.8,.2,1); }
.shot:hover img { transform: scale(1.05); }
.shot.l .frame { width: min(58vw, 760px); aspect-ratio: 3 / 2; }
.shot.m .frame { width: min(36vw, 480px); aspect-ratio: 4 / 5; }
.shot.s .frame { width: min(30vw, 400px); aspect-ratio: 1 / 1; }
/* the end card is a snap point too, or mandatory snapping pulls a swipe back to the last photo */
.reel-end { flex: 0 0 auto; width: min(36vw, 440px); padding: 30px; scroll-snap-align: end; }
.reel-end p { margin: 0 0 18px; font: 900 clamp(40px, 4.4vw, 64px)/.9 var(--display); text-transform: uppercase; }
.credit { margin: 0; color: var(--muted); font-size: 14px; }
.credit a { color: var(--ice); }

/* ---------- Schools orbit ---------- */
.schools { padding-block: clamp(80px, 11vw, 150px); position: relative; overflow: hidden; }
.schools-grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 40px; align-items: center; }
.schools-copy p.body { color: var(--muted); max-width: 42ch; margin: 22px 0 0; }
.orbit { position: relative; aspect-ratio: 1 / 1; width: 100%; max-width: 620px; justify-self: center; }
.orbit svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.orbit .ring { fill: none; stroke: rgba(198,228,251,.12); stroke-dasharray: 2 8; }
.orbit .ray { stroke: rgba(143,220,255,.25); stroke-width: 1; }
.orbit .ray.hot { stroke: var(--glow); stroke-width: 2; filter: drop-shadow(0 0 6px var(--glow)); }
.orbit-crest { position: absolute; left: 50%; top: 50%; width: 26%; transform: translate(-50%, -50%); filter: drop-shadow(0 0 40px rgba(74,80,214,.8)); z-index: 2; }
.node {
  position: absolute; left: 0; top: 0; z-index: 3; transform: translate(-50%, -50%);
  display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; cursor: default;
  font: 700 13px/1 var(--body); letter-spacing: .04em; padding: 8px 12px 8px 8px; border-radius: 999px;
  background: rgba(11,15,46,.85); border: 1px solid rgba(198,228,251,.2); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  transition: background .25s, border-color .25s, color .25s;
}
.node b { display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--royal); font: 800 12px/1 var(--display); }
.node:hover, .node.hot { background: var(--frost); color: var(--night); border-color: var(--frost); }

/* ---------- Tickets ---------- */
.tickets { padding-block: clamp(80px, 11vw, 150px) clamp(80px, 10vw, 140px); }
.tickets-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 24px; margin-bottom: 40px; }
.ticket-list { display: grid; gap: 18px; }
.ticket {
  --notch: 18px;
  position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 190px; min-height: 140px;
  filter: drop-shadow(0 24px 40px rgba(0,0,0,.45));
  transition: transform .4s cubic-bezier(.2,.8,.2,1);
}
.ticket:hover { transform: translateY(-4px); }
.t-main, .t-stub { --c: var(--frost); background: var(--c); color: var(--night); }
.t-main {
  border-radius: 18px 0 0 18px; padding: 24px 28px; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 26px; align-items: center;
  -webkit-mask: radial-gradient(circle at 100% 0, transparent var(--notch), #000 calc(var(--notch) + .5px)) top / 100% 51% no-repeat,
                radial-gradient(circle at 100% 100%, transparent var(--notch), #000 calc(var(--notch) + .5px)) bottom / 100% 51% no-repeat;
          mask: radial-gradient(circle at 100% 0, transparent var(--notch), #000 calc(var(--notch) + .5px)) top / 100% 51% no-repeat,
                radial-gradient(circle at 100% 100%, transparent var(--notch), #000 calc(var(--notch) + .5px)) bottom / 100% 51% no-repeat;
}
.t-stub {
  border-radius: 0 18px 18px 0; padding: 22px 24px; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 12px;
  border-left: 2px dashed rgba(5,7,26,.25);
  transform-origin: 0 100%; transition: transform .5s cubic-bezier(.2,.8,.2,1);
  -webkit-mask: radial-gradient(circle at 0 0, transparent var(--notch), #000 calc(var(--notch) + .5px)) top / 100% 51% no-repeat,
                radial-gradient(circle at 0 100%, transparent var(--notch), #000 calc(var(--notch) + .5px)) bottom / 100% 51% no-repeat;
          mask: radial-gradient(circle at 0 0, transparent var(--notch), #000 calc(var(--notch) + .5px)) top / 100% 51% no-repeat,
                radial-gradient(circle at 0 100%, transparent var(--notch), #000 calc(var(--notch) + .5px)) bottom / 100% 51% no-repeat;
}
.ticket:hover .t-stub { transform: rotate(4deg) translate(6px, 2px); }
.ticket.first .t-main, .ticket.first .t-stub { --c: var(--glow); }
.t-date { text-align: center; padding-right: 26px; border-right: 1px solid rgba(5,7,26,.15); }
.t-date .d { font: 900 64px/.85 var(--display); }
.t-date .m { font: 700 13px/1 var(--body); letter-spacing: .2em; text-transform: uppercase; }
.t-date .w { font: 600 12px/1 var(--body); letter-spacing: .2em; text-transform: uppercase; color: var(--indigo); margin-top: 6px; }
.t-info { min-width: 0; }
.t-info .vs { font: 900 clamp(32px, 4vw, 48px)/.95 var(--display); text-transform: uppercase; }
.t-info .vs small { font: 500 .45em/1 var(--body); text-transform: none; color: var(--indigo); margin-right: 6px; }
.t-info .where { margin: 8px 0 0; font-size: 15px; color: #2a2f6b; }
.t-stub .time { font: 900 38px/1 var(--display); }
.t-stub .ha { font: 700 12px/1 var(--body); letter-spacing: .2em; text-transform: uppercase; color: var(--indigo); }

/* ---------- Full roster page ---------- */
.page-head { padding-block: 150px 50px; position: relative; overflow: hidden; }
.page-head::after {
  content: ""; position: absolute; width: 520px; height: 520px; right: -140px; top: 40px; border-radius: 50%;
  border: 3px solid rgba(74,80,214,.25); pointer-events: none;
}
.page-head .sum { margin: 22px 0 0; color: var(--muted); font-size: 18px; display: flex; flex-wrap: wrap; gap: 8px 22px; }
.page-head .sum b { color: var(--frost); font: 800 22px/1 var(--display); letter-spacing: .04em; margin-right: 6px; }
.roster-list { padding-block: 10px clamp(70px, 9vw, 120px); }
.plist { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 16px; }
.player {
  position: relative; overflow: hidden; display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 18px; align-items: center;
  padding: 20px; border-radius: 18px; background: linear-gradient(165deg, #151a52, #0a0d2c); border: 1px solid var(--line);
  transition: transform .35s cubic-bezier(.2,.8,.2,1), border-color .35s;
}
.player:hover { transform: translateY(-3px); border-color: rgba(143,220,255,.45); }
.player .pnum {
  font: 900 92px/.8 var(--display); text-align: center; letter-spacing: -.03em;
  color: transparent; -webkit-text-stroke: 2px rgba(198,228,251,.5);
  background: linear-gradient(180deg, #fff, var(--glow)) no-repeat 0 100% / 100% 0%; -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; transition: background-size .45s cubic-bezier(.2,.8,.2,1);
}
.player:hover .pnum { background-size: 100% 100%; }
.player .pname { min-width: 0; }
.player .first { display: block; color: var(--ice); font-size: 16px; }
.player .last { display: block; font: 900 34px/.95 var(--display); text-transform: uppercase; overflow-wrap: anywhere; }
.player dl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 4px 12px; margin: 12px 0 0; font-size: 14px; }
.player dt { color: var(--muted); font: 700 10px/1.6 var(--body); letter-spacing: .16em; text-transform: uppercase; }
.player dd { margin: 0; }
.player .tbc { color: var(--muted); font-style: italic; }

/* ---------- Footer ---------- */
.foot { position: relative; overflow: hidden; padding-block: 40px; border-top: 1px solid var(--line); }
.go {
  font: 400 clamp(90px, 19vw, 300px)/1.1 var(--script); white-space: nowrap; text-align: center;
  color: transparent; -webkit-text-stroke: 1.5px rgba(198,228,251,.35);
  background: linear-gradient(90deg, var(--ice), var(--glow), #fff) no-repeat 0 0 / 0% 100%;
  -webkit-background-clip: text; background-clip: text;
  /* padded so the fill reaches the G and y descenders */
  padding: .05em .15em .3em; margin: 0 -2vw -.3em;
  transition: background-size 2.2s cubic-bezier(.65, 0, .25, 1);
}
.go.filled { background-size: 100% 100%; }
@media (prefers-reduced-motion: reduce) { .go { background-size: 100% 100%; } }
.foot-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 24px; margin-top: 10px; }
.foot-row img { width: 92px; height: auto; }
.foot-links { display: flex; flex-wrap: wrap; gap: 22px; }
.foot-links a { text-decoration: none; font: 700 13px/1 var(--body); letter-spacing: .16em; text-transform: uppercase; color: var(--ice); }
.foot-links a:hover { color: #fff; }
.foot small { display: block; color: var(--muted); font-size: 13px; }

/* ---------- Responsive ---------- */
@media (max-width: 1080px) {
  .nav-l, .nav-r a.lnk { display: none; }
  .menu-btn { display: inline-block; }
  .nav { grid-template-columns: auto 1fr; }
  .crest { grid-column: 1; grid-row: 1; width: 56px; height: 56px; }
  .nav-r { grid-column: 2; grid-row: 1; gap: 14px; }
  .hero-inner { grid-template-columns: minmax(0, 1fr); }
  .board-grid, .schools-grid { grid-template-columns: minmax(0, 1fr); }
  .jumbo-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 22px; }
}
@media (max-width: 760px) {
  .t-script { margin-left: .5em; }
  .arrow { width: 46px; height: 46px; }
  .shot.l .frame, .shot.m .frame, .shot.s .frame { width: 80vw; aspect-ratio: 4 / 5; }
  .reel-end { width: 80vw; }
  .ticket { grid-template-columns: minmax(0, 1fr); }
  .t-main { border-radius: 18px 18px 0 0; -webkit-mask: none; mask: none; grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .t-date { text-align: left; border-right: 0; padding-right: 0; display: flex; align-items: baseline; gap: 10px; }
  .t-date .d { font-size: 44px; }
  .t-stub { border-radius: 0 0 18px 18px; border-left: 0; border-top: 2px dashed rgba(5,7,26,.25); -webkit-mask: none; mask: none; flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: space-between; }
  .orbit { max-width: 440px; }
  .node { font-size: 11px; padding: 6px 9px 6px 6px; }
  .node b { width: 18px; height: 18px; font-size: 11px; }
  .card { width: 220px; }
  .num { font-size: 140px; }
  .gameday { padding-left: 12px; }
  .gameday .gd-k { font-size: 10px; }
  .gameday .gd-v { font-size: 16px; }
  .page-head { padding-top: 120px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  html { scroll-behavior: auto; }
}

a.player { text-decoration: none; color: inherit; }
