/* Shuley Cup — "Story" design, Navy & red.
   Charity first, set like a magazine feature. Light and warm paper, LIVE's
   Saira Condensed headlines, red buttons, navy links, gold on the dark. */

:root {
  /* Surfaces */
  --paper: #faf7f1;
  --paper-2: #f3eee4;
  --card: #fffdf9;
  --line: #e6dfd2;
  --line-strong: #d6cdbd;

  /* Text */
  --ink: #1b1d19;        /* 16:1 on paper */
  --ink-2: #3f423b;      /* 10:1 */
  --muted: #62655c;      /* 5.6:1 on paper */

  /* Accent: Navy & red. --accent is the fill (buttons, tags), --accent-ink
     the text on it, --accent-deep the accent as text on paper (links, labels;
     at least 4.5:1), --accent-wash a pale tint, --accent-night the accent on
     the dark hero and closing band. */
  --accent: #a3192f;
  --accent-ink: #ffffff;
  --accent-deep: #1f3a68;
  --accent-wash: #f6e3e6;
  --live-red: #f0505e;
  --accent-night: #f2c879;
  --glow: 163, 25, 47;           /* the accent as r, g, b for soft glows */
  --hero-base: #18212c;          /* the hero's slate tint over the ice photo */
  --hero-a: 12, 18, 26;
  --hero-b: 18, 27, 38;
  --hero-c: 28, 40, 56;

  /* Dark band (LIVE's surfaces, warmed) */
  --night: #141614;
  --night-2: #1d201c;
  --on-night: #f4f1ea;
  --on-night-muted: #b9bcb2; /* 9:1 on night */

  --display: 'Saira Condensed', 'Arial Narrow', system-ui, sans-serif;
  --body: 'Saira', system-ui, -apple-system, 'Segoe UI', sans-serif;

  --radius: 22px;
  --radius-sm: 14px;
  --gutter: clamp(16px, 4vw, 40px);
  --max: 1200px;
  --measure: 65ch;
  --shadow: 0 1px 2px rgba(40, 32, 20, .06), 0 12px 32px -12px rgba(40, 32, 20, .18);
  --focus: 0 0 0 3px var(--paper), 0 0 0 6px var(--accent-deep);
}

/* ───────── Base ───────── */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 88px; }
body.st {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font: 400 1.0625rem/1.7 var(--body); /* 17px */
  overflow-x: hidden;
  text-rendering: optimizeLegibility;
}
@media (min-width: 900px) { body.st { font-size: 1.125rem; } }
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; }
h1, h2, h3 { margin: 0; }
p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }
ul, ol { margin: 0; padding: 0; }

:where(a, button, [tabindex]):focus-visible {
  outline: none;
  box-shadow: var(--focus);
  border-radius: 8px;
}
.st-sr {
  position: absolute !important; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}
.st-skip {
  position: absolute; left: 16px; top: -100px; z-index: 100;
  background: var(--ink); color: var(--paper); padding: 12px 18px; border-radius: 10px;
  font-weight: 600; text-decoration: none;
}
.st-skip:focus { top: 12px; }
.placeholder { background: #fff3b0; color: #5a4500; padding: 0 .3em; border-radius: 4px; }

.st-wrap { width: 100%; max-width: var(--max); margin: 0 auto; padding: 0 var(--gutter); }
.st-ico { flex: none; }

/* Type helpers */
.st-eyebrow {
  margin: 0 0 14px;
  font: 600 .8125rem/1.3 var(--body);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--accent-deep);
}
.st-eyebrow--light { color: var(--accent-night); }
.st-h2 {
  font: 800 clamp(2.4rem, 5.4vw, 4rem)/.95 var(--display);
  text-transform: uppercase;
  letter-spacing: .005em;
  color: var(--ink);
  text-wrap: balance;
}
.st-label {
  font: 600 .8125rem/1.3 var(--body);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 18px;
}
.st-section-head { margin-bottom: clamp(32px, 5vw, 56px); }
.st-section-head--row { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px 24px; }

/* Links and buttons */
.st-link {
  display: inline-flex; align-items: center; gap: 8px;
  min-height: 44px;
  color: var(--accent-deep);
  font-weight: 600;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 5px;
  text-decoration-color: color-mix(in srgb, var(--accent-deep) 40%, transparent);
  transition: text-decoration-color .2s, gap .2s;
}
.st-link:hover { text-decoration-color: currentColor; gap: 12px; }

.st-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 52px; padding: 0 28px;
  border-radius: 999px; border: 2px solid transparent;
  font: 600 1rem/1 var(--body); letter-spacing: .02em;
  text-decoration: none; cursor: pointer;
  transition: background-color .2s, color .2s, border-color .2s, transform .2s;
}
.st-btn:hover { transform: translateY(-1px); }
.st-btn--sm { min-height: 44px; padding: 0 20px; font-size: .9375rem; }
.st-btn--lg { min-height: 58px; padding: 0 36px; font-size: 1.0625rem; }
.st-btn--accent { background: var(--accent); color: var(--accent-ink); }
.st-btn--accent:hover { background: color-mix(in srgb, var(--accent) 82%, #fff); }
.st-btn--ink { background: var(--ink); color: var(--paper); }
.st-btn--ink:hover { background: #33362f; }
.st-btn--ghost-light { border-color: rgba(244, 241, 234, .55); color: var(--on-night); }
.st-btn--ghost-light:hover { border-color: var(--on-night); background: rgba(244, 241, 234, .08); }
.st-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.st-actions--center { justify-content: center; }

/* ───────── Header ───────── */
.st-header {
  position: sticky; top: 0; z-index: 50;
  background: color-mix(in srgb, var(--paper) 92%, transparent);
  backdrop-filter: saturate(1.4) blur(10px);
  -webkit-backdrop-filter: saturate(1.4) blur(10px);
  border-bottom: 1px solid var(--line);
}
.st-header__inner {
  max-width: var(--max); margin: 0 auto; padding: 10px var(--gutter);
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  min-height: 72px;
}
.st-wordmark {
  display: inline-flex; align-items: center; gap: 10px;
  min-height: 44px;
  font: 800 1.625rem/1 var(--display); text-transform: uppercase; letter-spacing: .02em;
  color: var(--ink); text-decoration: none;
}
.st-wordmark__crest { width: 48px; height: auto; flex: none; }
@media (max-width: 400px) { .st-wordmark__crest { width: 40px; } }

.st-menu-btn {
  display: none;
  align-items: center; gap: 8px;
  min-height: 44px; min-width: 44px; padding: 0 14px;
  border: 1px solid var(--line-strong); border-radius: 999px;
  background: var(--card); color: var(--ink);
  font: 600 .9375rem/1 var(--body); cursor: pointer;
}

.st-nav { display: flex; align-items: center; gap: 28px; }
.st-nav__list { list-style: none; display: flex; gap: 2px; }
.st-nav__link {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 11px;
  color: var(--ink-2); text-decoration: none; font-size: .9375rem; font-weight: 500;
  border-radius: 999px;
  transition: color .2s, background-color .2s;
}
.st-nav__link:hover { color: var(--ink); background: var(--paper-2); }
.st-nav__link[aria-current="page"] { color: var(--ink); font-weight: 600; box-shadow: inset 0 -2px 0 var(--accent); border-radius: 0; }
.st-nav__actions { display: flex; align-items: center; gap: 10px; }

/* About: a small drop-down on desktop, always open (indented) in the phone menu */
.st-has-sub { position: relative; }
.st-sub-toggle { background: none; border: 0; cursor: pointer; font: inherit; font-size: .9375rem; font-weight: 500; gap: 6px; }
.st-sub-toggle.is-current { color: var(--ink); font-weight: 600; box-shadow: inset 0 -2px 0 var(--accent); border-radius: 0; }
.st-caret { transition: transform .2s; }
.st-sub-toggle[aria-expanded="true"] .st-caret { transform: rotate(180deg); }
.st-sub {
  display: none; list-style: none;
  position: absolute; left: 0; top: calc(100% + 6px); z-index: 30; min-width: 200px;
  padding: 8px; border-radius: var(--radius-sm);
  background: var(--card); border: 1px solid var(--line); box-shadow: var(--shadow);
}
.st-sub .st-nav__link { width: 100%; border-radius: 10px; }
.st-sub .st-nav__link[aria-current="page"] { box-shadow: inset 3px 0 0 var(--accent); border-radius: 0; }
.st-sub-toggle[aria-expanded="true"] + .st-sub { display: block; }
@media (hover: hover) and (min-width: 1100px) {
  .st-has-sub:hover .st-sub, .st-has-sub:focus-within .st-sub { display: block; }
  /* bridge the gap so the pointer can travel from the button to the menu */
  .st-has-sub::after { content: ''; position: absolute; left: 0; right: 0; top: 100%; height: 8px; }
}
.st-live {
  display: inline-flex; align-items: center; gap: 8px;
  min-height: 44px; padding: 0 14px;
  border: 1px solid var(--line-strong); border-radius: 999px;
  font: 800 .9375rem/1 var(--display); letter-spacing: .08em;
  color: var(--ink); text-decoration: none;
  transition: border-color .2s;
}
.st-live:hover { border-color: var(--ink); }
/* Instagram: a round icon button. Desktop: beside LIVE. Below 1100px: in the
   top bar next to Menu, so it is one tap away on a phone. */
.st-ig {
  display: inline-grid; place-items: center; flex: none;
  width: 44px; height: 44px; border-radius: 50%;
  border: 1px solid var(--line-strong); background: var(--card); color: var(--ink);
  transition: border-color .2s, color .2s, background-color .2s;
}
.st-ig:hover { border-color: var(--accent-deep); color: var(--accent-deep); background: var(--accent-wash); }
.st-ig--bar { display: none; }

/* The LIVE / Donate bar under the header, below 1100px only: navy, with two
   full-size buttons, a white LIVE (red dot while the games are on) and a red
   Donate. */
.st-subbar { display: none; }
@media (max-width: 1099px) {
  .st-subbar {
    display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
    padding: 8px var(--gutter);
    background: #1f3a68;
  }
  .st-subbar__btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    min-height: 44px; border-radius: 999px;
    font: 700 .9375rem/1 var(--body); letter-spacing: .02em; text-decoration: none;
  }
  .st-subbar__live { background: #fff; color: #1f3a68; }
  .st-subbar__live:hover { background: #eef1f6; }
  .st-subbar__donate { background: #b01e32; color: #fff; }
  .st-subbar__donate:hover { background: #c4283d; }
  .st-subbar .st-live__dot { background: #e0303f; box-shadow: 0 0 0 3px rgba(224, 48, 63, .2); }
  .st-subbar :focus-visible { box-shadow: 0 0 0 3px #1f3a68, 0 0 0 6px #fff; }
  /* LIVE and Donate are on the bar now, so the open menu does not repeat them. */
  .js .st-nav__actions .st-live, .js .st-nav__actions .st-btn--accent { display: none; }
  html { scroll-padding-top: 150px; }
}
@media (max-width: 1099px) {
  .js .st-ig--bar { display: inline-grid; margin-left: auto; }
  .js .st-ig--nav { display: none; }
}
.st-live__dot {
  width: 8px; height: 8px; border-radius: 50%; background: var(--live-red);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--live-red) 22%, transparent);
}

/* Collapsed menu below 1100px, only when JS is there to open it. */
@media (max-width: 1099px) {
  .js .st-menu-btn { display: inline-flex; }
  .js .st-nav {
    position: absolute; left: 0; right: 0; top: 100%;
    flex-direction: column; align-items: stretch; gap: 16px;
    padding: 16px var(--gutter) 24px;
    background: var(--paper); border-bottom: 1px solid var(--line);
    box-shadow: 0 18px 30px -18px rgba(40, 32, 20, .25);
  }
  .js .st-nav:not(.is-open) { display: none; }
  .js .st-nav__list { flex-direction: column; }
  .js .st-nav__link { width: 100%; padding: 0 12px; font-size: 1.0625rem; }
  .js .st-nav__link[aria-current="page"] { box-shadow: inset 3px 0 0 var(--accent); }
  /* In the phone menu About is a heading over its three links, always shown. */
  .st-sub-toggle { pointer-events: none; color: var(--muted); }
  .st-sub-toggle.is-current { box-shadow: none; }
  .st-caret { display: none; }
  .st-sub { display: block; position: static; min-width: 0; padding: 0 0 0 16px; border: 0; box-shadow: none; background: none; }
  .st-header__inner { position: relative; }
  /* Without JS: the list simply wraps under the wordmark. */
  html:not(.js) .st-header__inner { flex-wrap: wrap; }
  html:not(.js) .st-nav { flex-wrap: wrap; gap: 8px; }
  html:not(.js) .st-nav__list { flex-wrap: wrap; }
}

/* ───────── Hero ───────── */
.st-hero {
  position: relative; isolation: isolate;
  color: var(--on-night);
  background-color: var(--hero-base);
  background-image:
    radial-gradient(120% 90% at 85% 10%, rgba(var(--glow), .16), transparent 55%),
    linear-gradient(100deg, rgba(var(--hero-a), .92) 0%, rgba(var(--hero-b), .84) 45%, rgba(var(--hero-c), .7) 100%),
    url('/assets/img/hero-ice.jpg');
  background-size: cover, cover, cover;
  background-position: center;
  overflow: hidden;
}
.st-hero::after { /* soft warm floor that melts into the page */
  content: ''; position: absolute; inset: auto 0 0 0; height: 90px; z-index: -1;
  background: linear-gradient(to bottom, transparent, rgba(250, 247, 241, .06));
}
.st-hero__inner {
  display: grid; gap: 40px; align-items: center;
  padding-top: clamp(56px, 9vw, 120px);
  padding-bottom: clamp(56px, 9vw, 120px);
}
.st-hero__title {
  font: 800 clamp(3rem, 10.5vw, 6.75rem)/.9 var(--display);
  text-transform: uppercase;
  letter-spacing: -.005em;
  margin: 0 0 24px;
  text-wrap: balance;
}
.st-hero__cause { display: block; color: var(--accent-night); }
.st-hero__meta {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px;
  font-size: 1.0625rem; color: #e3ddd2; /* 11:1 on the overlay */
  margin-bottom: 32px;
}
.st-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--accent-night); }
.st-hero__photo { margin: 0; justify-self: center; max-width: 560px; width: 100%; }
.st-hero__photo img {
  width: 100%; aspect-ratio: 650 / 487; object-fit: cover;
  border-radius: var(--radius);
  box-shadow: 0 30px 60px -24px rgba(0, 0, 0, .6);
  transform: rotate(1.2deg);
  border: 6px solid #fffdf9;
}
.st-hero__photo figcaption {
  margin-top: 16px; text-align: right;
  font-size: .9375rem; font-style: italic; color: #d6d0c4;
}
@media (min-width: 900px) {
  .st-hero__inner { grid-template-columns: 1.15fr .85fr; gap: 56px; }
  .st-hero__photo { justify-self: end; }
}

/* ───────── Total raised ───────── */
.st-total { padding: clamp(48px, 7vw, 88px) 0 clamp(48px, 7vw, 88px); }
.st-total__grid { display: grid; gap: 20px; }
@media (min-width: 900px) { .st-total__grid { grid-template-columns: 1.15fr 1fr; gap: 24px; align-items: stretch; } }
.st-total .st-label { margin-bottom: 12px; }

/* This year: the live campaign */
.st-year {
  display: flex; flex-direction: column; align-items: flex-start; gap: 14px;
  padding: clamp(24px, 4vw, 36px); border-radius: var(--radius);
  background: var(--card); border: 1px solid var(--line); box-shadow: var(--shadow);
}
.st-year .st-label { color: var(--accent-deep); margin-bottom: 0; }
.st-year__num { margin: 0; font: 800 clamp(2.75rem, 7vw, 4.25rem)/.95 var(--display); color: var(--ink); font-variant-numeric: tabular-nums; }
.st-year__num:empty, .st-year__num:has([data-raised]:empty) { display: none; }
.st-year__of { font: 600 1rem/1.3 var(--body); color: var(--muted); letter-spacing: .01em; margin-left: .35em; white-space: nowrap; }
.st-meter { width: 100%; height: 10px; border-radius: 999px; background: var(--accent-wash); overflow: hidden; }
.st-meter span { display: block; height: 100%; width: var(--pct, 0%); background: var(--accent-deep); border-radius: inherit; transition: width .8s cubic-bezier(.2, .7, .2, 1); }
.st-year__note { margin: 0; color: var(--ink-2); max-width: 46ch; }
.st-year .st-btn { margin-top: 6px; }

/* All time: big, but no longer the whole screen */
.st-alltime {
  display: flex; flex-direction: column; justify-content: center;
  padding: clamp(24px, 4vw, 36px); border-radius: var(--radius);
  background: var(--paper-2); border: 1px solid var(--line);
}
.st-alltime__num { margin: 0 0 12px; font: 800 clamp(3.5rem, 9vw, 6rem)/.85 var(--display); letter-spacing: -.01em; color: var(--ink); }
.st-alltime__note { margin: 0; color: var(--ink-2); font-size: 1rem; max-width: 44ch; }

/* Past beneficiaries, one quiet line */
.st-past { margin: 22px 0 0; font-size: .9375rem; line-height: 1.7; color: var(--muted); }
.st-past__label { font-weight: 600; letter-spacing: .12em; text-transform: uppercase; font-size: .75rem; color: var(--ink-2); margin-right: 8px; }
.st-past__more { font-style: italic; }

/* ───────── Pinned update ───────── */
.st-pinned { padding: clamp(28px, 4vw, 44px) 0 0; }
.st-pinned .st-wrap { display: grid; gap: 16px; }
.st-pinned__all { margin: -6px 0 0; display: flex; justify-content: flex-end; }
.st-pinned__all .st-link { font-size: .9375rem; }
.st-pin {
  position: relative;
  display: grid; gap: 6px 28px; align-items: center;
  padding: 22px 26px; border-radius: var(--radius);
  background: var(--card); border: 1px solid var(--line); border-left: 6px solid var(--accent-deep);
  transition: box-shadow .25s;
}
.st-pin:hover, .st-pin:focus-within { box-shadow: var(--shadow); }
.st-pin__label { margin: 0; font: 600 .8125rem/1.3 var(--body); letter-spacing: .12em; text-transform: uppercase; color: var(--accent-deep); display: flex; align-items: center; gap: 8px; }
.st-pin__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--live-red); }
.st-pin__title { margin: 0; font: 800 clamp(1.5rem, 3vw, 2rem)/1.05 var(--display); text-transform: uppercase; text-wrap: balance; }
.st-pin__title a { color: var(--ink); text-decoration: none; }
.st-pin__title a::after { content: ''; position: absolute; inset: 0; border-radius: var(--radius); }
.st-pin__title a:focus-visible { box-shadow: none; }
.st-pin__title a:focus-visible::after { box-shadow: var(--focus); }
.st-pin__text { margin: 0; color: var(--ink-2); }
.st-pin__more { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; color: var(--accent-deep); }
@media (min-width: 900px) {
  .st-pin { grid-template-columns: 1fr auto; }
  .st-pin__label, .st-pin__title, .st-pin__text { grid-column: 1; }
  .st-pin__more { grid-column: 2; grid-row: 1 / span 3; }
}

/* ───────── How the weekend works ───────── */
.st-how { padding: clamp(64px, 9vw, 120px) 0; background: var(--paper-2); }
.st-steps { list-style: none; display: grid; gap: 20px; }
@media (min-width: 700px) and (max-width: 1099px) { .st-steps { grid-template-columns: 1fr 1fr; } .st-step:last-child { grid-column: 1 / -1; } }
.st-step {
  position: relative;
  background: var(--card); border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 32px 28px 34px;
  color: var(--ink-2);
}
.st-step__num {
  display: block; margin-bottom: 18px;
  font: 800 3.5rem/1 var(--display);
  color: transparent; -webkit-text-stroke: 1.5px var(--accent-deep);
}
.st-step__title {
  font: 800 1.875rem/1 var(--display); text-transform: uppercase;
  color: var(--ink); margin-bottom: 14px;
}
.st-step p { margin-bottom: 14px; }
.st-ticks { list-style: none; display: grid; gap: 8px; margin-top: 18px; }
.st-ticks li { position: relative; padding-left: 30px; }
.st-ticks li::before {
  content: ''; position: absolute; left: 0; top: .42em;
  width: 18px; height: 18px; border-radius: 50%;
  background: var(--accent-deep); box-shadow: inset 0 0 0 5px var(--accent-wash);
}
.st-sched { margin: 18px 0 0; display: grid; gap: 0; }
.st-sched__row { display: grid; grid-template-columns: 56px 1fr; gap: 12px; padding: 10px 0; border-top: 1px solid var(--line); }
.st-sched__row:last-child { border-bottom: 1px solid var(--line); }
.st-sched dt { font: 800 1.25rem/1.4 var(--display); text-transform: uppercase; color: var(--ink); }
.st-sched dd { margin: 0; display: grid; }
@media (min-width: 1100px) {
  .st-steps { grid-template-columns: repeat(3, 1fr); gap: 24px; }
}

/* ───────── The story (long read) ───────── */
.st-story { padding: clamp(72px, 10vw, 140px) 0; outline: none; }
.st-story__grid { display: grid; gap: 40px; }
.st-story__aside .st-h2 { margin-bottom: 28px; }
.st-story__img { margin: 0 0 28px; display: none; }
.st-story__img img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: var(--radius); }
.st-story__cta { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; }
@media (min-width: 1000px) {
  .st-story__grid { grid-template-columns: minmax(280px, 380px) minmax(0, 1fr); gap: 80px; align-items: start; }
  .st-story__aside { position: sticky; top: 104px; }
  .st-story__img { display: block; }
}

.st-longread { max-width: var(--measure); color: var(--ink-2); font-size: 1.125rem; line-height: 1.75; }
@media (min-width: 900px) { .st-longread { font-size: 1.1875rem; } }
.st-longread > p:first-child {
  font-size: 1.375em; line-height: 1.5; color: var(--ink); font-weight: 500;
  margin-bottom: 1.4em;
}
.st-longread h3 {
  display: flex; align-items: center; gap: 14px;
  margin: 2.4em 0 1.2em;
  font: 600 .8125rem/1.3 var(--body); letter-spacing: .16em; text-transform: uppercase;
  color: var(--accent-deep);
}
.st-longread h3::after { content: ''; flex: 1; height: 1px; background: var(--line-strong); }
/* The message opens with a drop cap. */
.st-longread h3 + p::first-letter {
  float: left;
  font: 800 4.6em/.8 var(--display);
  margin: .08em .1em 0 0;
  color: var(--ink);
}
.st-longread p { margin-bottom: 1.25em; }
.st-longread a { color: var(--accent-deep); text-underline-offset: 4px; }
.st-longread strong { color: var(--ink); }
/* The sign-off becomes the pull quote. */
.st-longread > p:last-child,
.st-longread blockquote {
  position: relative;
  margin: 2em 0 0; padding: 28px 0 0 0;
  border-top: 3px solid var(--accent);
  font: italic 500 clamp(1.375rem, 2.6vw, 1.75rem)/1.4 var(--body);
  color: var(--ink);
  text-wrap: pretty;
}
.st-longread blockquote p { margin: 0; }

/* ───────── People ───────── */
.st-people { padding: clamp(64px, 9vw, 120px) 0; border-top: 1px solid var(--line); }
.st-people__groups { display: grid; gap: 56px; }
.st-faces {
  list-style: none;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  gap: 28px 16px;
  margin-bottom: 20px;
}
.st-face { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 4px; }
.st-face img, .st-face__initials {
  width: 112px; height: 112px; border-radius: 50%;
  object-fit: cover; margin-bottom: 10px;
  box-shadow: 0 0 0 4px var(--paper), 0 0 0 5px var(--line-strong);
}
.st-face__initials {
  display: grid; place-items: center;
  background: var(--accent-wash); color: var(--accent-deep);
  font: 800 2.25rem/1 var(--display); text-transform: uppercase;
}
.st-face__name { font-weight: 600; color: var(--ink); line-height: 1.3; }
.st-face__role { font-size: .875rem; color: var(--muted); }
@media (min-width: 900px) {
  .st-people__groups { grid-template-columns: 1fr 1fr; gap: 72px; }
}

/* ───────── Champions timeline ───────── */
.st-champs { padding: clamp(64px, 9vw, 120px) 0 clamp(56px, 8vw, 100px); background: var(--paper-2); }
.st-champs__nav { display: flex; gap: 10px; }
.st-champs__nav[hidden] { display: none; }
.st-round {
  display: grid; place-items: center;
  width: 48px; height: 48px; border-radius: 50%;
  border: 1px solid var(--line-strong); background: var(--card); color: var(--ink);
  cursor: pointer; transition: background-color .2s, border-color .2s;
}
.st-round:hover:not(:disabled) { border-color: var(--ink); }
.st-round:disabled { opacity: .4; cursor: default; }
.st-champs__track {
  overflow-x: auto; overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  scrollbar-width: thin; scrollbar-color: var(--line-strong) transparent;
  padding-bottom: 18px;
}
.st-champs__track:focus-visible { box-shadow: 0 0 0 3px var(--paper-2), 0 0 0 6px var(--accent-deep); border-radius: 6px; }
.st-timeline {
  list-style: none;
  display: flex; gap: 20px;
  width: max-content;
  padding: 0;
  position: relative;
}
/* The line the years sit on */
.st-timeline::before {
  content: ''; position: absolute; left: 0; right: 0; top: 52px; height: 2px;
  background: var(--line-strong);
}
.st-champ {
  position: relative;
  /* Four across inside the page margins on desktop; one and a peek on a phone. */
  flex: none; width: clamp(220px, calc((min(100vw, var(--max)) - 2 * var(--gutter) - 60px) / 4), 300px);
  scroll-snap-align: start;
  display: flex; flex-direction: column;
}
.st-champ__year { font: 800 2.25rem/1 var(--display); color: var(--ink); height: 40px; }
.st-champ__pin {
  display: block; width: 14px; height: 14px; border-radius: 50%;
  margin: 5px 0 22px; position: relative; z-index: 1;
  background: var(--paper-2); border: 3px solid var(--accent-deep);
}
.st-champ:first-child .st-champ__pin { background: var(--accent); border-color: var(--accent-ink); }
.st-champ__img {
  width: 100%; aspect-ratio: 650 / 487; object-fit: cover;
  border-radius: var(--radius-sm); margin-bottom: 14px;
  background: var(--line);
}
.st-champ__img--none {
  display: grid; place-items: center;
  background: var(--card); border: 1px dashed var(--line-strong);
  color: var(--line-strong);
}
.st-champ__team {
  font: 800 1.5rem/1.05 var(--display); text-transform: uppercase; color: var(--ink);
  margin-bottom: 4px; text-wrap: balance;
}
.st-champ__link {
  margin-top: auto;
  display: inline-flex; align-items: center; gap: 6px; min-height: 44px; align-self: flex-start;
  color: var(--accent-deep); font-size: .9375rem; font-weight: 600;
  text-decoration: none;
}
.st-champ__link:hover span { text-decoration: underline; text-underline-offset: 4px; }
.st-champ__link .st-ico { width: 16px; height: 16px; }

/* ───────── Updates ───────── */
.st-updates { padding: clamp(64px, 9vw, 120px) 0; }
.st-posts { list-style: none; display: grid; gap: 20px; }
.st-post {
  position: relative;
  padding: 30px 28px; border-radius: var(--radius);
  background: var(--card); border: 1px solid var(--line);
  transition: box-shadow .25s, transform .25s;
}
.st-post:hover { box-shadow: var(--shadow); transform: translateY(-2px); }
.st-post:focus-within { box-shadow: var(--shadow); }
.st-post__date { display: block; margin-bottom: 10px; font-size: .875rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.st-post__title { font: 800 clamp(1.625rem, 3vw, 2rem)/1.05 var(--display); text-transform: uppercase; margin-bottom: 12px; text-wrap: balance; }
.st-post__title a { text-decoration: none; color: var(--ink); }
.st-post__title a::after { content: ''; position: absolute; inset: 0; border-radius: var(--radius); }
.st-post__title a:focus-visible { box-shadow: none; }
.st-post__title a:focus-visible::after { box-shadow: var(--focus); }
.st-post p { color: var(--ink-2); }
@media (min-width: 900px) { .st-posts { grid-template-columns: 1fr 1fr; gap: 24px; } }

/* ───────── Closing band ───────── */
.st-close {
  margin: 0 var(--gutter) clamp(56px, 8vw, 96px);
  border-radius: calc(var(--radius) + 8px);
  background:
    radial-gradient(80% 120% at 50% 0%, rgba(var(--glow), .18), transparent 60%),
    var(--night);
  color: var(--on-night-muted);
  text-align: center;
  padding: clamp(56px, 9vw, 104px) 0;
}
@media (min-width: 1280px) { .st-close { max-width: calc(var(--max) + 80px); margin-left: auto; margin-right: auto; } }
.st-close__inner { max-width: 760px; }
.st-close__title {
  font: 800 clamp(2.4rem, 6vw, 4.25rem)/.95 var(--display); text-transform: uppercase;
  color: var(--on-night); margin-bottom: 22px; text-wrap: balance;
}
.st-close__title span { display: block; color: var(--accent-night); }
.st-close p { margin: 0 auto 32px; max-width: 54ch; font-size: 1.125rem; }
.st-close :focus-visible { box-shadow: 0 0 0 3px var(--night), 0 0 0 6px var(--accent-night); }
.st-hero :focus-visible { box-shadow: 0 0 0 3px var(--hero-base), 0 0 0 6px var(--accent-night); }

/* ───────── Footer ───────── */
.st-footer { border-top: 1px solid var(--line); padding: 48px 0 56px; color: var(--muted); font-size: .9375rem; }
.st-footer__inner { display: grid; gap: 24px 48px; }

.st-footer__name { font: 800 1.5rem/1 var(--display); text-transform: uppercase; color: var(--ink); margin-bottom: 12px; }
.st-footer__brand p { margin-bottom: 4px; }
.st-footer__links { list-style: none; display: flex; flex-wrap: wrap; gap: 0 20px; }
.st-footer__links a { display: inline-flex; align-items: center; min-height: 44px; color: var(--ink-2); text-underline-offset: 4px; }
.st-footer__links a:hover { color: var(--ink); }
.st-footer__copy { font-size: .875rem; }
@media (min-width: 900px) {
  .st-footer__inner { grid-template-columns: 1fr auto; align-items: start; }
  .st-footer__links { justify-content: flex-end; max-width: 520px; }
  .st-footer__copy { grid-column: 1 / -1; padding-top: 20px; border-top: 1px solid var(--line); }
}

/* ───────── Motion ───────── */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
  .st-btn:hover, .st-post:hover { transform: none; }
}
@media print {
  .st-header, .st-close, .st-champs__nav { display: none; }
  .st-hero { color: var(--ink); background: none; }
}

/* ───────── Small-screen and detail refinements ───────── */
.st-champ__img--none {
  background: var(--accent-wash);
  border: 0;
  color: var(--accent-deep);
}
@media (max-width: 599px) {
  .st-longread > p:first-child { font-size: 1.2em; }
  .st-faces { grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 24px 12px; }
  .st-face img, .st-face__initials { width: 88px; height: 88px; }
  .st-face__name { font-size: .9375rem; }
  .st-hero__photo img { transform: none; }
}

/* On a phone the date and the rink sit on their own lines: no dangling dot */
@media (max-width: 520px) { .st-hero__meta .st-dot { display: none; } .st-hero__meta { flex-direction: column; align-items: flex-start; gap: 2px; } }

/* ═════════════════════════ Inner pages ═════════════════════════
   About, Rules, Board, Captains, Updates, Results and Stats keep their markup
   (and what the admin edits); this dresses them in the Story look. */

.st-tba { margin: 18px 0 0; font-weight: 600; color: var(--muted); }

/* The tournament-weekend banner (site.js shows it when liveMode is "auto") */
.live-banner { background: var(--night); color: var(--on-night); }
.live-banner[hidden] { display: none; }
.live-banner .st-wrap { display: flex; flex-wrap: wrap; gap: 6px 18px; justify-content: center; align-items: center; padding-top: 12px; padding-bottom: 12px; text-align: center; font-weight: 500; }
.live-banner .st-live__dot { display: inline-block; margin-right: 10px; vertical-align: 1px; }
.live-banner a { color: var(--accent-night); font-weight: 700; }

/* The page frame: a soft card on the paper */
.page { padding: clamp(28px, 5vw, 64px) var(--gutter) clamp(56px, 8vw, 104px); }
.page-col {
  max-width: 860px; margin: 0 auto;
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: clamp(28px, 5vw, 60px) clamp(20px, 5vw, 64px);
}
.page-col.wide { max-width: var(--max); }
.page-col > h1 {
  margin: 0 0 14px;
  font: 800 clamp(2.75rem, 7vw, 4.75rem)/.92 var(--display); text-transform: uppercase; letter-spacing: .005em;
  color: var(--ink); overflow-wrap: break-word; text-wrap: balance;
}
.page-lede { margin: 0 0 28px; max-width: 62ch; color: var(--ink-2); font-size: 1.125rem; }
.page-lede p { margin: 0; }
.page-lede a, .crumb a { color: var(--accent-deep); }
.crumb { margin-bottom: 18px; font-size: .9375rem; font-weight: 600; }
.crumb a { text-decoration: none; }
.crumb a:hover { text-decoration: underline; }
@media (max-width: 600px) { .page { padding-left: 10px; padding-right: 10px; } .page-col { border-radius: var(--radius-sm); } }

/* Long-form text (About, Rules, update posts, bios) */
.prose { max-width: var(--measure); font-size: 1.0625rem; line-height: 1.75; color: var(--ink-2); }
.page-col.wide .prose { max-width: none; }
.prose > :first-child { margin-top: 0; }
.prose h2 { margin: 2.2em 0 .5em; font: 800 clamp(1.75rem, 3.5vw, 2.25rem)/1.05 var(--display); text-transform: uppercase; color: var(--ink); }
.prose h3 { margin: 1.8em 0 .4em; font: 700 1.1875rem/1.3 var(--body); color: var(--ink); }
.prose p { margin: 0 0 1.05em; }
.prose a { color: var(--accent-deep); text-underline-offset: 4px; }
.prose ul, .prose ol { margin: 0 0 1.2em; padding-left: 1.3em; }
.prose li { margin: .35em 0; }
.prose li::marker { color: var(--accent-deep); }
.prose strong { color: var(--ink); }
.prose img { border-radius: var(--radius-sm); margin: 1.4em 0; }
.prose blockquote { margin: 1.6em 0; padding: 4px 0 4px 22px; border-left: 4px solid var(--accent); color: var(--ink); font-style: italic; }
.prose hr { border: 0; border-top: 1px solid var(--line); margin: 2em 0; }

/* Board and Captains */
.people { display: grid; gap: 0; margin-top: 28px; }
.person {
  display: grid; grid-template-columns: 132px 1fr; grid-template-areas: "photo head" "photo bio";
  grid-template-rows: auto 1fr; column-gap: 28px; align-items: start;
  padding: 28px 0; border-top: 1px solid var(--line);
}
.person:first-child { border-top: 0; padding-top: 4px; }
.person > img, .person > .no-photo { grid-area: photo; }
.person > div:not(.prose):not(.no-photo) { grid-area: head; }
.person > .prose { grid-area: bio; margin-top: 10px; font-size: 1rem; }
.person > .prose p { margin-bottom: .7em; }
.person img, .person .no-photo {
  width: 132px; height: 132px; object-fit: cover; border-radius: 50%;
  background: var(--accent-wash); box-shadow: 0 0 0 4px var(--card), 0 0 0 5px var(--line);
}
.no-photo { display: grid; place-items: center; font: 800 3rem/1 var(--display); color: var(--accent-deep); }
.person h2, .person h3 { margin: 6px 0 0; font: 800 clamp(1.625rem, 3vw, 2rem)/1 var(--display); text-transform: uppercase; color: var(--ink); }
.person-role { margin-top: 8px; font-size: .8125rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--accent-deep); }
@media (max-width: 560px) {
  .person { grid-template-columns: 84px 1fr; grid-template-areas: "photo head" "bio bio"; grid-template-rows: auto; column-gap: 18px; align-items: center; }
  .person img, .person .no-photo { width: 84px; height: 84px; }
  .no-photo { font-size: 2.25rem; }
  .person > .prose { margin-top: 16px; }
}

/* Updates */
.update-list { list-style: none; margin: 8px 0 0; padding: 0; }
.update-item { padding: 24px 0; border-top: 1px solid var(--line); }
.update-item:first-child { border-top: 0; padding-top: 4px; }
.update-item h2 { margin: 6px 0 8px; font: 800 clamp(1.625rem, 3vw, 2.125rem)/1.02 var(--display); text-transform: uppercase; text-wrap: balance; }
.update-item h2 a { color: var(--ink); text-decoration: none; }
.update-item h2 a:hover { color: var(--accent-deep); }
.update-item p { margin: 0; color: var(--ink-2); max-width: var(--measure); }
.update-date { font-size: .8125rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.tag-pin { display: inline-block; font-size: .6875rem; letter-spacing: .1em; padding: 4px 9px; border-radius: 999px; background: var(--accent); color: var(--accent-ink); }

/* Results: the years */
.year-grid {
  list-style: none; margin: 8px 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(168px, 1fr)); gap: 12px;
}
.year-grid a {
  display: block; height: 100%; padding: 18px 20px; border-radius: var(--radius-sm);
  background: var(--paper); border: 1px solid var(--line); color: var(--ink); text-decoration: none;
  transition: border-color .2s, background-color .2s, transform .2s;
}
.year-grid a:hover { border-color: var(--accent-deep); background: var(--card); transform: translateY(-2px); }
.year-grid .y { font: 800 2.5rem/1 var(--display); color: var(--ink); }
.year-grid .c { margin-top: 6px; font-size: .9375rem; font-weight: 600; color: var(--muted); }
@media (max-width: 600px) { .year-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .year-grid a { padding: 14px 16px; } .year-grid .y { font-size: 2rem; } .year-grid .c { font-size: .875rem; } }

.year-nav { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 28px; padding: 0; }
.year-nav a {
  display: inline-flex; align-items: center; min-height: 36px; padding: 0 12px; border-radius: 999px;
  font-weight: 600; font-size: .9375rem; text-decoration: none; color: var(--ink-2);
  background: var(--paper-2); border: 1px solid var(--line);
}
.year-nav a:hover { border-color: var(--accent-deep); color: var(--ink); }
.year-nav a[aria-current="page"] { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }

/* Results: the champion banner */
.champ {
  display: grid; grid-template-columns: auto 1fr; gap: 26px; align-items: center;
  margin: 8px 0 36px; padding: clamp(20px, 3vw, 28px); border-radius: var(--radius);
  color: var(--on-night);
  background:
    radial-gradient(120% 140% at 100% 0%, rgba(var(--glow), .2), transparent 60%),
    linear-gradient(100deg, rgba(var(--hero-a), .97), rgba(var(--hero-c), .92));
  background-color: var(--hero-base);
}
.champ img { width: 260px; border-radius: var(--radius-sm); box-shadow: 0 0 0 4px rgba(255, 255, 255, .9); }
.champ-label { font-size: .8125rem; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: var(--accent-night); }
.champ-name { margin-top: 8px; font: 800 clamp(2.25rem, 6vw, 3.5rem)/.95 var(--display); text-transform: uppercase; color: var(--on-night); }
.champ-sub { margin-top: 10px; color: var(--on-night-muted); }
@media (max-width: 640px) { .champ { grid-template-columns: 1fr; } .champ img { width: 100%; } }

/* Results and Stats: section heads and tables */
.results h2 { margin: 52px 0 16px; font: 800 clamp(1.875rem, 4vw, 2.5rem)/1 var(--display); text-transform: uppercase; color: var(--ink); }
.results h2:first-of-type { margin-top: 8px; }
.table-scroll { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--card); }
table.stats { width: 100%; border-collapse: collapse; font-size: .9375rem; font-variant-numeric: tabular-nums; }
.stats th, .stats td { padding: 11px 14px; text-align: right; white-space: nowrap; border-bottom: 1px solid var(--line); }
.stats th {
  background: var(--paper-2); color: var(--ink-2);
  font-size: .75rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
}
.stats .l { text-align: left; }
.stats tbody tr:last-child td { border-bottom: 0; }
.stats tbody tr:hover { background: color-mix(in srgb, var(--accent-wash) 55%, transparent); }
.stats td.strong { font-weight: 700; color: var(--ink); }
.stats td.wrap-ok { white-space: normal; min-width: 160px; }
.stats td a { color: var(--accent-deep); }
.stats th .sort {
  all: unset; cursor: pointer; display: inline-flex; align-items: center; gap: 4px;
  font: inherit; letter-spacing: inherit; text-transform: inherit; color: inherit;
}
.stats th .sort:focus-visible { box-shadow: var(--focus); border-radius: 4px; }
.stats th .sort::after { content: '↕'; opacity: .4; font-size: .6875rem; }
.stats th[aria-sort="descending"] .sort::after { content: '↓'; opacity: 1; color: var(--accent-deep); }
.stats th[aria-sort="ascending"] .sort::after { content: '↑'; opacity: 1; color: var(--accent-deep); }
.place { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--paper-2); font-weight: 700; font-size: .8125rem; }
.place-1 { background: var(--accent); color: var(--accent-ink); }
.muted { color: var(--muted); }
.small { font-size: .9375rem; }
.more-toggle { margin-top: 12px; }

/* Results: games, opening into box scores */
.games { display: grid; gap: 12px; }
.game { border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--card); overflow: hidden; transition: box-shadow .2s; }
.game[open] { box-shadow: var(--shadow); }
.game > summary {
  list-style: none; cursor: pointer; padding: 16px 20px;
  display: grid; grid-template-columns: 150px 1fr auto; gap: 14px; align-items: center;
}
.game > summary::-webkit-details-marker { display: none; }
.game > summary:hover { background: var(--paper); }
.game > summary:focus-visible { box-shadow: inset 0 0 0 3px var(--accent-deep); }
.game-when { font-size: .8125rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.game-when .stage { display: block; color: var(--accent-deep); }
.game-score { display: grid; grid-template-columns: 1fr auto; gap: 2px 18px; font-weight: 600; color: var(--ink-2); }
.game-score .win { font-weight: 700; color: var(--ink); }
.game-score .n { text-align: right; font: 800 1.375rem/1.15 var(--display); color: var(--ink); }
.game-open { font-size: .875rem; font-weight: 600; color: var(--accent-deep); white-space: nowrap; }
.game-open::after { content: ' +'; }
.game[open] .game-open::after { content: ' –'; }
.box { padding: 6px 20px 22px; border-top: 1px solid var(--line); background: var(--paper); }
.box h3 { margin: 20px 0 8px; font-size: .8125rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--accent-deep); }
.box .stats { font-size: .875rem; }
.box .stats th { font-size: .6875rem; padding: 8px 10px; }
.box .stats td { padding: 8px 10px; }
.pill { display: inline-block; margin-left: 6px; padding: 2px 7px; border-radius: 999px; font-size: .6875rem; font-weight: 700; letter-spacing: .06em; background: var(--accent-wash); color: var(--accent-deep); }
@media (max-width: 640px) {
  .game > summary { grid-template-columns: 1fr auto; padding: 14px 16px; }
  .game-when { grid-column: 1 / -1; }
  .box { padding: 4px 14px 18px; }
}

/* Results: awards */
.awards-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; list-style: none; padding: 0; margin: 0; }
.award { padding: 18px 20px; border-radius: var(--radius-sm); border: 1px solid var(--line); background: var(--paper); }
.award-name { font: 800 1.75rem/1 var(--display); text-transform: uppercase; color: var(--ink); }
.award-for { margin-top: 4px; font-size: .8125rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--accent-deep); }
.award-winner { margin-top: 12px; font-weight: 700; font-size: 1.0625rem; color: var(--ink); }
.award-history { margin-top: 48px; padding-top: 8px; border-top: 1px solid var(--line); }
.award-history h3 { margin: 32px 0 4px; font: 800 1.875rem/1 var(--display); text-transform: uppercase; color: var(--ink); }
.award-history .prose { margin-top: 10px; }

/* Placeholders: dev builds highlight anything still in [BRACKETS] */
.placeholder { background: #fff3c4; color: var(--ink); outline: 1px dashed #b4462e; border-radius: 3px; padding: 0 3px; }

@media print { .st-header, .st-footer, .live-banner { display: none; } body.st { background: #fff; } .page-col { box-shadow: none; border: 0; } }

/* The LIVE dot only while the games are on (base.njk adds .is-live). */
html:not(.is-live) .st-live__dot { display: none; }
