/* ============================================================
   WWSU 106.9 FM — PUBLIC SPORTS SITE PAGE STYLES
   ------------------------------------------------------------
   Loaded by views/website/sportslayout.ejs AFTER site.css so it
   cascades last. Everything is scoped under .wwsu-sports so no
   other page on the site is touched.

   Uses the same light, cream-surfaced, ink-ruled visual language
   as /calendar (guide.css) and the rest of wwsu1069.org: cream
   page, 2px ink rules, squared cards, green for accents.

   COLOR RULE (site.css:4-25): --wwsu-green (#019645) is 3.8:1 on
   cream and MUST NOT carry body-size text on a light surface.
   Body-size green text here always uses --wwsu-green-deep.

   No bare hex literals: every literal below is the last fallback
   in a var() chain, which is the approved form in
   docs/CSS-EXCEPTIONS.md. No !important anywhere in this file.

   STATE IS NEVER COLOR ALONE. The .wwsu-sp-status--* modifiers
   only tint a chip whose text already names the state, and the
   two score components (.wwsu-sp-score--official and
   .wwsu-sp-score--unofficial) differ in border, weight, layout
   and wording, not merely in hue.
   ============================================================ */

/* ---- page field --------------------------------------------- */
body.wwsu-sports {
  background-color: var(--bg, var(--wwsu-cream, #F2F1F0));
  color: var(--fg, var(--wwsu-ink, #101820));
  font-family: var(--font-body, "futura-pt", "Century Gothic", Arial, sans-serif);
}

.wwsu-sports .wwsu-sp-page {
  display: block;
  padding: var(--space-6, 24px) 0 var(--space-16, 64px);
  min-height: 50vh;
}

.wwsu-sports .wwsu-sp-page__inner {
  display: flex;
  flex-direction: column;
  gap: var(--space-8, 32px);
}

/* ---- header -------------------------------------------------- */
.wwsu-sports .wwsu-sp-header {
  border-bottom: var(--rule-w-2, 2px) solid var(--rule, #1F2733);
  background-color: var(--bg, var(--wwsu-cream, #F2F1F0));
}

.wwsu-sports .wwsu-sp-header__inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3, 12px) var(--space-5, 20px);
  padding-top: var(--space-4, 16px);
  padding-bottom: var(--space-4, 16px);
}

.wwsu-sports .wwsu-sp-header__logo {
  height: 44px;
  width: auto;
  display: block;
}

.wwsu-sports .wwsu-sp-header__wordmark {
  margin: 0;
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-14, 0.875rem);
  font-weight: 800;
  letter-spacing: var(--track-marquee, 0.08em);
  text-transform: uppercase;
}

.wwsu-sports .wwsu-sp-header__wordmark-link {
  color: var(--wwsu-green-deep, #016B32);
  text-decoration: none;
}

.wwsu-sports .wwsu-sp-header__wordmark-link:hover,
.wwsu-sports .wwsu-sp-header__wordmark-link:focus-visible {
  text-decoration: underline;
}

.wwsu-sports .wwsu-sp-header__actions {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: var(--space-3, 12px);
}

.wwsu-sports .wwsu-sp-listen {
  white-space: nowrap;
}

/* ---- breadcrumb ---------------------------------------------- */
.wwsu-sports .wwsu-sp-breadcrumb {
  border-top: var(--rule-w-1, 1px) solid var(--rule-soft, #C9CCD0);
  padding: var(--space-2, 8px) 0;
  font-size: var(--fs-13, 0.8125rem);
}

.wwsu-sports .wwsu-sp-breadcrumb__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2, 8px);
}

.wwsu-sports .wwsu-sp-breadcrumb__item {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2, 8px);
}

.wwsu-sports .wwsu-sp-breadcrumb__link {
  color: var(--wwsu-green-deep, #016B32);
}

.wwsu-sports .wwsu-sp-breadcrumb__current {
  color: var(--fg-muted, #4A5260);
}

.wwsu-sports .wwsu-sp-breadcrumb__sep {
  color: var(--fg-subtle, #6B7280);
}

/* ---- hero ---------------------------------------------------- */
.wwsu-sports .wwsu-sp-hero {
  display: flex;
  flex-direction: column;
  gap: var(--space-2, 8px);
}

.wwsu-sports .wwsu-sp-hero--profile {
  flex-direction: row;
  align-items: center;
  gap: var(--space-5, 20px);
  flex-wrap: wrap;
}

.wwsu-sports .wwsu-sp-hero__headshot {
  width: 96px;
  height: 96px;
  object-fit: cover;
  border: var(--rule-w-2, 2px) solid var(--rule, #1F2733);
  border-radius: var(--radius-0, 0);
}

.wwsu-sports .wwsu-sp-hero__eyebrow {
  margin: 0;
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-12, 0.75rem);
  font-weight: 800;
  letter-spacing: var(--track-marquee, 0.08em);
  text-transform: uppercase;
  color: var(--fg-muted, #4A5260);
}

.wwsu-sports .wwsu-sp-hero__eyebrow-link {
  color: var(--wwsu-green-deep, #016B32);
}

.wwsu-sports .wwsu-sp-hero__eyebrow-sep {
  margin: 0 var(--space-2, 8px);
}

.wwsu-sports .wwsu-sp-hero__title {
  margin: 0;
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: clamp(1.5rem, 5vw, 2.25rem);
  font-weight: 800;
  line-height: var(--leading-tight, 1.04);
  letter-spacing: var(--track-tight, -0.01em);
  color: var(--fg, var(--wwsu-ink, #101820));
}

.wwsu-sports .wwsu-sp-hero__sub {
  margin: 0;
  color: var(--fg-muted, #4A5260);
}

.wwsu-sports .wwsu-sp-hero__status {
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2, 8px);
}

.wwsu-sports .wwsu-sp-hero__meta {
  font-size: var(--fs-13, 0.8125rem);
  color: var(--fg-muted, #4A5260);
}

/* Club / intramural label. Load-bearing, not decorative: Wright
   State has no varsity football, hockey, softball or tennis, and a
   page that does not say "club" implies NCAA varsity status. */
.wwsu-sports .wwsu-sp-sanction {
  margin: 0;
  display: inline-block;
  align-self: flex-start;
  padding: var(--space-1, 4px) var(--space-3, 12px);
  border: var(--rule-w-2, 2px) solid var(--rule, #1F2733);
  background-color: var(--bg-banded, var(--wwsu-cream-2, #E5E4E2));
  font-size: var(--fs-13, 0.8125rem);
  font-weight: 700;
  color: var(--fg, var(--wwsu-ink, #101820));
}

/* ---- sections ------------------------------------------------- */
.wwsu-sports .wwsu-sp-section {
  display: flex;
  flex-direction: column;
  gap: var(--space-4, 16px);
}

.wwsu-sports .wwsu-sp-section--tight {
  gap: var(--space-2, 8px);
}

.wwsu-sports .wwsu-sp-section--hidden {
  display: none;
}

.wwsu-sports .wwsu-sp-section__title {
  margin: 0;
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-20, 1.25rem);
  font-weight: 800;
  letter-spacing: var(--track-loose, 0.04em);
  text-transform: uppercase;
  padding-bottom: var(--space-2, 8px);
  border-bottom: var(--rule-w-2, 2px) solid var(--rule, #1F2733);
}

.wwsu-sports .wwsu-sp-section__note {
  margin: 0;
  font-size: var(--fs-13, 0.8125rem);
  color: var(--fg-muted, #4A5260);
}

.wwsu-sports .wwsu-sp-prose {
  margin: 0;
  max-width: 70ch;
  line-height: var(--leading-body, 1.5);
}

.wwsu-sports .wwsu-sp-note {
  margin: 0;
}

/* ---- status chips ---------------------------------------------
   The chip's TEXT always names the state. These modifiers add a
   second, redundant cue; they never carry the meaning alone. */
.wwsu-sports .wwsu-sp-status {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2, 8px);
  padding: var(--space-1, 4px) var(--space-3, 12px);
  border: var(--rule-w-2, 2px) solid var(--rule, #1F2733);
  background-color: var(--bg-elevated, var(--wwsu-paper, #FAFAF8));
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-12, 0.75rem);
  font-weight: 800;
  letter-spacing: var(--track-loose, 0.04em);
  text-transform: uppercase;
  color: var(--fg, var(--wwsu-ink, #101820));
  white-space: nowrap;
}

.wwsu-sports .wwsu-sp-status--on-air,
.wwsu-sports .wwsu-sp-status--in-progress {
  background-color: var(--on-air, var(--signal-red, #C8362B));
  border-color: var(--on-air, var(--signal-red, #C8362B));
  color: var(--fg-on-dark, var(--wwsu-cream, #F2F1F0));
}

.wwsu-sports .wwsu-sp-status--final,
.wwsu-sports .wwsu-sp-status--forfeited,
.wwsu-sports .wwsu-sp-status--completed {
  background-color: var(--bg-inverse, var(--wwsu-black, #101820));
  border-color: var(--bg-inverse, var(--wwsu-black, #101820));
  color: var(--fg-on-dark, var(--wwsu-cream, #F2F1F0));
}

.wwsu-sports .wwsu-sp-status--canceled,
.wwsu-sports .wwsu-sp-status--missed,
.wwsu-sports .wwsu-sp-status--postponed {
  border-color: var(--danger, var(--signal-red, #C8362B));
  color: var(--danger, var(--signal-red, #C8362B));
}

/* ---- score components ------------------------------------------
   TWO COMPONENTS THAT CAN NEVER BE CONFUSED. The official result
   is an inverted ink slab; the unofficial operator board is a
   dashed, paper-surfaced card whose text always carries the word
   "Unofficial". Different border, different ground, different
   weight, different words. */
.wwsu-sports .wwsu-sp-score {
  padding: var(--space-5, 20px);
  display: flex;
  flex-direction: column;
  gap: var(--space-3, 12px);
}

.wwsu-sports .wwsu-sp-score__stamp {
  margin: 0;
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-12, 0.75rem);
  font-weight: 800;
  letter-spacing: var(--track-marquee, 0.08em);
  text-transform: uppercase;
}

.wwsu-sports .wwsu-sp-score__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-2, 8px);
}

.wwsu-sports .wwsu-sp-score__side {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-4, 16px);
}

.wwsu-sports .wwsu-sp-score__team {
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-16, 1rem);
  font-weight: 700;
}

.wwsu-sports .wwsu-sp-score__value {
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: clamp(2rem, 9vw, 3rem);
  font-weight: 800;
  line-height: var(--leading-tight, 1.04);
  font-variant-numeric: tabular-nums;
}

.wwsu-sports .wwsu-sp-score__state {
  margin: 0;
  font-weight: 700;
}

.wwsu-sports .wwsu-sp-score__updated,
.wwsu-sports .wwsu-sp-score__disclaimer {
  margin: 0;
  font-size: var(--fs-13, 0.8125rem);
  line-height: var(--leading-body, 1.5);
}

/* Official: inverted ink slab. */
.wwsu-sports .wwsu-sp-score--official {
  background-color: var(--bg-inverse, var(--wwsu-black, #101820));
  color: var(--fg-on-dark, var(--wwsu-cream, #F2F1F0));
  border: var(--rule-w-2, 2px) solid var(--bg-inverse, var(--wwsu-black, #101820));
}

.wwsu-sports .wwsu-sp-score--official .wwsu-sp-score__stamp,
.wwsu-sports .wwsu-sp-score--official .wwsu-sp-score__updated {
  color: var(--fg-on-dark-muted, #B5BCC6);
}

/* Unofficial: dashed paper card. */
.wwsu-sports .wwsu-sp-score--unofficial {
  background-color: var(--bg-elevated, var(--wwsu-paper, #FAFAF8));
  color: var(--fg, var(--wwsu-ink, #101820));
  border: var(--rule-w-3, 3px) dashed var(--rule, #1F2733);
}

.wwsu-sports .wwsu-sp-score--unofficial .wwsu-sp-score__stamp {
  color: var(--wwsu-green-deep, #016B32);
}

.wwsu-sports .wwsu-sp-score--unofficial .wwsu-sp-score__updated,
.wwsu-sports .wwsu-sp-score--unofficial .wwsu-sp-score__disclaimer {
  color: var(--fg-muted, #4A5260);
}

/* ---- live status ----------------------------------------------- */
.wwsu-sports .wwsu-sp-live {
  margin: 0;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2, 8px);
  align-self: flex-start;
  padding: var(--space-2, 8px) var(--space-4, 16px);
  border: var(--rule-w-2, 2px) solid var(--rule, #1F2733);
  background-color: var(--bg-elevated, var(--wwsu-paper, #FAFAF8));
}

.wwsu-sports .wwsu-sp-live__label {
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-14, 0.875rem);
  font-weight: 800;
  letter-spacing: var(--track-loose, 0.04em);
  text-transform: uppercase;
}

.wwsu-sports .wwsu-sp-live__dot {
  width: 9px;
  height: 9px;
  border-radius: var(--radius-pill, 999px);
  background-color: var(--fg-subtle, #6B7280);
}

.wwsu-sports .wwsu-sp-live[data-state="on-air"] {
  background-color: var(--on-air, var(--signal-red, #C8362B));
  border-color: var(--on-air, var(--signal-red, #C8362B));
  color: var(--fg-on-dark, var(--wwsu-cream, #F2F1F0));
}

.wwsu-sports .wwsu-sp-live[data-state="on-air"] .wwsu-sp-live__dot {
  background-color: var(--fg-on-dark, var(--wwsu-cream, #F2F1F0));
  animation: wwsu-sp-pulse var(--dur-pulse, 1.4s) ease-in-out infinite;
}

@keyframes wwsu-sp-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.25; }
}

.wwsu-sports .wwsu-sp-live__detail {
  margin: 0;
  color: var(--fg-muted, #4A5260);
}

.wwsu-sports .wwsu-sp-stale {
  margin: 0;
  padding: var(--space-3, 12px) var(--space-4, 16px);
  border-left: var(--rule-w-4, 4px) solid var(--warning, var(--signal-amber, #E0A82E));
  background-color: var(--bg-banded, var(--wwsu-cream-2, #E5E4E2));
  color: var(--fg, var(--wwsu-ink, #101820));
}

/* ---- times ------------------------------------------------------
   Contest start and WWSU airtime are separate, visibly distinct
   fields. Crew call time is internal and never appears here. */
.wwsu-sports .wwsu-sp-times {
  margin: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4, 16px);
}

.wwsu-sports .wwsu-sp-times__item {
  border-left: var(--rule-w-3, 3px) solid var(--rule-soft, #C9CCD0);
  padding-left: var(--space-3, 12px);
}

.wwsu-sports .wwsu-sp-times__label {
  margin: 0;
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-12, 0.75rem);
  font-weight: 800;
  letter-spacing: var(--track-marquee, 0.08em);
  text-transform: uppercase;
  color: var(--fg-muted, #4A5260);
}

.wwsu-sports .wwsu-sp-times__value {
  margin: 0;
  font-weight: 700;
}

.wwsu-sports .wwsu-sp-times__alt {
  display: block;
  font-weight: 400;
  font-size: var(--fs-13, 0.8125rem);
  color: var(--fg-muted, #4A5260);
}

/* ---- records ----------------------------------------------------
   Athletic record and WWSU coverage record are two labeled figures
   side by side. They count different things and are never summed. */
.wwsu-sports .wwsu-sp-record {
  margin: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4, 16px);
}

.wwsu-sports .wwsu-sp-record__fig {
  border: var(--rule-w-2, 2px) solid var(--rule, #1F2733);
  background-color: var(--bg-elevated, var(--wwsu-paper, #FAFAF8));
  padding: var(--space-4, 16px);
}

.wwsu-sports .wwsu-sp-record__label {
  margin: 0;
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-12, 0.75rem);
  font-weight: 800;
  letter-spacing: var(--track-marquee, 0.08em);
  text-transform: uppercase;
  color: var(--fg-muted, #4A5260);
}

.wwsu-sports .wwsu-sp-record__value {
  margin: 0;
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-36, 2.25rem);
  font-weight: 800;
  line-height: var(--leading-tight, 1.04);
  font-variant-numeric: tabular-nums;
}

.wwsu-sports .wwsu-sp-record__caption {
  margin: 0;
  font-size: var(--fs-13, 0.8125rem);
  color: var(--fg-muted, #4A5260);
}

/* ---- cards ------------------------------------------------------ */
.wwsu-sports .wwsu-sp-cards {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4, 16px);
}

.wwsu-sports .wwsu-sp-card {
  border: var(--rule-w-2, 2px) solid var(--rule, #1F2733);
  background-color: var(--bg-elevated, var(--wwsu-paper, #FAFAF8));
  padding: var(--space-4, 16px);
  display: flex;
  flex-direction: column;
  gap: var(--space-3, 12px);
}

.wwsu-sports .wwsu-sp-card__state {
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2, 8px);
}

.wwsu-sports .wwsu-sp-card__meta {
  font-size: var(--fs-13, 0.8125rem);
  color: var(--fg-muted, #4A5260);
}

.wwsu-sports .wwsu-sp-card__title {
  margin: 0;
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-18, 1.125rem);
  font-weight: 800;
}

.wwsu-sports .wwsu-sp-card__link {
  color: var(--fg, var(--wwsu-ink, #101820));
  text-decoration: none;
}

.wwsu-sports .wwsu-sp-card__link:hover,
.wwsu-sports .wwsu-sp-card__link:focus-visible {
  text-decoration: underline;
  color: var(--wwsu-green-deep, #016B32);
}

.wwsu-sports .wwsu-sp-card__body,
.wwsu-sports .wwsu-sp-card__note,
.wwsu-sports .wwsu-sp-card__crew,
.wwsu-sports .wwsu-sp-card__foot {
  margin: 0;
  font-size: var(--fs-14, 0.875rem);
  line-height: var(--leading-body, 1.5);
}

.wwsu-sports .wwsu-sp-card__note {
  color: var(--fg-muted, #4A5260);
}

.wwsu-sports .wwsu-sp-card__crew-label {
  font-weight: 700;
}

/* ---- tables + their responsive alternative -----------------------
   MOBILE FIRST: the card list is the default and the table is
   hidden. From 768px up the table takes over and the cards are
   hidden. The table can still scroll inside its own wrapper so the
   page body never scrolls horizontally. */
.wwsu-sports .wwsu-sp-tablewrap {
  display: none;
  overflow-x: auto;
  border: var(--rule-w-2, 2px) solid var(--rule, #1F2733);
  background-color: var(--bg-elevated, var(--wwsu-paper, #FAFAF8));
}

.wwsu-sports .wwsu-sp-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--fs-14, 0.875rem);
}

.wwsu-sports .wwsu-sp-table__caption {
  caption-side: top;
  text-align: left;
  padding: var(--space-3, 12px) var(--space-4, 16px);
  font-size: var(--fs-13, 0.8125rem);
  color: var(--fg-muted, #4A5260);
  border-bottom: var(--rule-w-1, 1px) solid var(--rule-soft, #C9CCD0);
}

.wwsu-sports .wwsu-sp-table th,
.wwsu-sports .wwsu-sp-table td {
  padding: var(--space-3, 12px) var(--space-4, 16px);
  text-align: left;
  vertical-align: top;
  border-bottom: var(--rule-w-1, 1px) solid var(--rule-soft, #C9CCD0);
}

.wwsu-sports .wwsu-sp-table thead th {
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-12, 0.75rem);
  font-weight: 800;
  letter-spacing: var(--track-loose, 0.04em);
  text-transform: uppercase;
  border-bottom: var(--rule-w-2, 2px) solid var(--rule, #1F2733);
}

.wwsu-sports .wwsu-sp-table tbody th {
  font-weight: 700;
  white-space: nowrap;
}

.wwsu-sports .wwsu-sp-resultcards {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-3, 12px);
}

.wwsu-sports .wwsu-sp-resultcard {
  border: var(--rule-w-2, 2px) solid var(--rule, #1F2733);
  background-color: var(--bg-elevated, var(--wwsu-paper, #FAFAF8));
  padding: var(--space-4, 16px);
  display: flex;
  flex-direction: column;
  gap: var(--space-2, 8px);
}

.wwsu-sports .wwsu-sp-resultcard__date {
  margin: 0;
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-12, 0.75rem);
  font-weight: 800;
  letter-spacing: var(--track-marquee, 0.08em);
  text-transform: uppercase;
  color: var(--fg-muted, #4A5260);
}

.wwsu-sports .wwsu-sp-resultcard__title {
  margin: 0;
  font-weight: 800;
}

.wwsu-sports .wwsu-sp-resultcard__line {
  margin: 0;
  font-size: var(--fs-14, 0.875rem);
}

/* ---- crew ------------------------------------------------------- */
.wwsu-sports .wwsu-sp-crew {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-2, 8px);
}

.wwsu-sports .wwsu-sp-crew__item {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2, 8px);
  border-bottom: var(--rule-w-1, 1px) solid var(--rule-soft, #C9CCD0);
  padding-bottom: var(--space-2, 8px);
}

.wwsu-sports .wwsu-sp-crew__name {
  font-weight: 700;
}

.wwsu-sports .wwsu-sp-crew__role {
  font-size: var(--fs-13, 0.8125rem);
  color: var(--fg-muted, #4A5260);
  text-transform: uppercase;
  letter-spacing: var(--track-loose, 0.04em);
}

/* ---- key events -------------------------------------------------- */
.wwsu-sports .wwsu-sp-events {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3, 12px);
}

.wwsu-sports .wwsu-sp-event {
  border-left: var(--rule-w-3, 3px) solid var(--rule-soft, #C9CCD0);
  padding-left: var(--space-3, 12px);
}

.wwsu-sports .wwsu-sp-event__clock {
  margin: 0;
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-12, 0.75rem);
  font-weight: 800;
  letter-spacing: var(--track-marquee, 0.08em);
  text-transform: uppercase;
  color: var(--fg-muted, #4A5260);
}

.wwsu-sports .wwsu-sp-event__text {
  margin: 0;
  font-weight: 700;
}

.wwsu-sports .wwsu-sp-event__score {
  margin: 0;
  font-size: var(--fs-13, 0.8125rem);
  color: var(--fg-muted, #4A5260);
  font-variant-numeric: tabular-nums;
}

/* ---- stories ------------------------------------------------------ */
.wwsu-sports .wwsu-sp-stories {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4, 16px);
}

.wwsu-sports .wwsu-sp-story {
  display: flex;
  gap: var(--space-4, 16px);
  border: var(--rule-w-2, 2px) solid var(--rule, #1F2733);
  background-color: var(--bg-elevated, var(--wwsu-paper, #FAFAF8));
  padding: var(--space-4, 16px);
}

.wwsu-sports .wwsu-sp-story__img {
  flex: 0 0 88px;
  width: 88px;
  height: 88px;
  object-fit: cover;
  max-width: 100%;
}

.wwsu-sports .wwsu-sp-story__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-1, 4px);
  min-width: 0;
}

.wwsu-sports .wwsu-sp-story__tag {
  margin: 0;
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-12, 0.75rem);
  font-weight: 800;
  letter-spacing: var(--track-marquee, 0.08em);
  text-transform: uppercase;
  color: var(--wwsu-green-deep, #016B32);
}

.wwsu-sports .wwsu-sp-story__title {
  margin: 0;
  font-size: var(--fs-16, 1rem);
  font-weight: 800;
}

.wwsu-sports .wwsu-sp-story__title a {
  color: var(--fg, var(--wwsu-ink, #101820));
  text-decoration: none;
}

.wwsu-sports .wwsu-sp-story__title a:hover,
.wwsu-sports .wwsu-sp-story__title a:focus-visible {
  text-decoration: underline;
  color: var(--wwsu-green-deep, #016B32);
}

.wwsu-sports .wwsu-sp-story__summary {
  margin: 0;
  font-size: var(--fs-14, 0.875rem);
  line-height: var(--leading-body, 1.5);
  color: var(--fg-muted, #4A5260);
}

.wwsu-sports .wwsu-sp-story__date {
  margin: 0;
  font-size: var(--fs-13, 0.8125rem);
  color: var(--fg-subtle, #6B7280);
}

/* ---- filters + pager ----------------------------------------------- */
.wwsu-sports .wwsu-sp-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: var(--space-3, 12px);
}

.wwsu-sports .wwsu-sp-filters__field {
  display: flex;
  flex-direction: column;
  gap: var(--space-1, 4px);
}

.wwsu-sports .wwsu-sp-filters__label {
  margin: 0;
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-12, 0.75rem);
  font-weight: 800;
  letter-spacing: var(--track-marquee, 0.08em);
  text-transform: uppercase;
  color: var(--fg-muted, #4A5260);
}

.wwsu-sports .wwsu-sp-filters__select {
  min-height: 44px;
  padding: var(--space-2, 8px) var(--space-3, 12px);
  border: var(--rule-w-2, 2px) solid var(--rule, #1F2733);
  border-radius: var(--radius-0, 0);
  background-color: var(--bg-elevated, var(--wwsu-paper, #FAFAF8));
  color: var(--fg, var(--wwsu-ink, #101820));
  font-family: inherit;
  font-size: var(--fs-16, 1rem);
}

.wwsu-sports .wwsu-sp-pager {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3, 12px);
}

/* ---- related links -------------------------------------------------- */
.wwsu-sports .wwsu-sp-links {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3, 12px);
  padding-top: var(--space-4, 16px);
  border-top: var(--rule-w-2, 2px) solid var(--rule, #1F2733);
}

.wwsu-sports .wwsu-sp-links__link {
  color: var(--wwsu-green-deep, #016B32);
  font-weight: 700;
}

/* ---- empty states ---------------------------------------------------- */
.wwsu-sports .wwsu-sp-empty {
  border: var(--rule-w-2, 2px) dashed var(--rule-soft, #C9CCD0);
  padding: var(--space-6, 24px);
}

/* ---- footer ------------------------------------------------------------ */
.wwsu-sports .wwsu-sp-footer {
  background-color: var(--bg-inverse, var(--wwsu-black, #101820));
  color: var(--fg-on-dark, var(--wwsu-cream, #F2F1F0));
  border-top: var(--rule-w-4, 4px) solid var(--wwsu-green, #019645);
  padding: var(--space-10, 40px) 0 0;
}

.wwsu-sports .wwsu-sp-footer__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6, 24px);
  padding-bottom: var(--space-8, 32px);
}

.wwsu-sports .wwsu-sp-footer__mark {
  margin: 0;
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-20, 1.25rem);
  font-weight: 800;
  letter-spacing: var(--track-loose, 0.04em);
}

.wwsu-sports .wwsu-sp-footer__tagline {
  margin: 0;
  font-size: var(--fs-12, 0.75rem);
  letter-spacing: var(--track-marquee, 0.08em);
  text-transform: uppercase;
  /* Large-enough and bold on a DARK ground, where --wwsu-green-glow
     is the readable green (7.8:1 per site.css's matrix). */
  color: var(--wwsu-green-glow, #2BD174);
}

.wwsu-sports .wwsu-sp-footer__desc,
.wwsu-sports .wwsu-sp-footer__contact p {
  margin: var(--space-2, 8px) 0 0;
  font-size: var(--fs-14, 0.875rem);
  color: var(--fg-on-dark-muted, #B5BCC6);
}

.wwsu-sports .wwsu-sp-footer__nav-head {
  margin: 0 0 var(--space-2, 8px);
  font-family: var(--font-display, "futura-pt", "Century Gothic", Arial, sans-serif);
  font-size: var(--fs-12, 0.75rem);
  font-weight: 800;
  letter-spacing: var(--track-marquee, 0.08em);
  text-transform: uppercase;
}

.wwsu-sports .wwsu-sp-footer__nav-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2, 8px);
}

.wwsu-sports .wwsu-sp-footer__link {
  color: var(--fg-on-dark, var(--wwsu-cream, #F2F1F0));
  text-decoration: underline;
}

.wwsu-sports .wwsu-sp-footer__link:hover,
.wwsu-sports .wwsu-sp-footer__link:focus-visible {
  color: var(--wwsu-green-glow, #2BD174);
}

.wwsu-sports .wwsu-sp-footer__legal {
  border-top: var(--rule-w-1, 1px) solid var(--rule-on-dark, #3A4250);
  padding: var(--space-4, 16px) 0;
  font-size: var(--fs-13, 0.8125rem);
  color: var(--fg-on-dark-muted, #B5BCC6);
}

/* ---- remaining seam hooks -----------------------------------------------
   Class names emitted by the views/JS that need a rule of their own. The
   only emitted .wwsu-sp-* names deliberately left unstyled are pure
   scripting/semantic hooks: .wwsu-sp-listen__icon and .wwsu-sp-listen__label
   (rewritten by wwsu-sports-site.js), .wwsu-sp-footer__brand and
   .wwsu-sp-footer__nav (bare grid children), and .wwsu-sp-announce, which
   takes all of its presentation from the shared .sr-only in site.css. */
.wwsu-sports .wwsu-sp-header__brand {
  display: inline-flex;
  align-items: center;
}

.wwsu-sports .wwsu-sp-hero__profilebody {
  display: flex;
  flex-direction: column;
  gap: var(--space-2, 8px);
  min-width: 0;
}

.wwsu-sports .wwsu-sp-times--inline {
  gap: var(--space-3, 12px);
}

.wwsu-sports .wwsu-sp-filters__submit {
  align-self: flex-end;
}

/* ---- focus ------------------------------------------------------------- */
.wwsu-sports :focus-visible {
  outline: var(--rule-w-3, 3px) solid var(--wwsu-green, #019645);
  outline-offset: 2px;
}

.wwsu-sports .wwsu-sp-footer :focus-visible {
  outline-color: var(--wwsu-green-glow, #2BD174);
}

/* ---- wider screens ------------------------------------------------------ */
@media (min-width: 48em) {
  .wwsu-sports .wwsu-sp-times {
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  }

  .wwsu-sports .wwsu-sp-record {
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  }

  .wwsu-sports .wwsu-sp-score__grid {
    grid-template-columns: 1fr 1fr;
  }

  .wwsu-sports .wwsu-sp-score__side {
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    gap: var(--space-1, 4px);
  }

  .wwsu-sports .wwsu-sp-cards,
  .wwsu-sports .wwsu-sp-stories {
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  }

  .wwsu-sports .wwsu-sp-crew {
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  }

  /* Table takes over from the card list. */
  .wwsu-sports .wwsu-sp-tablewrap {
    display: block;
  }

  .wwsu-sports .wwsu-sp-resultcards {
    display: none;
  }

  /* ...except where a card list is the only presentation and has no
     table sibling to defer to. */
  .wwsu-sports .wwsu-sp-resultcards--always {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  }

  .wwsu-sports .wwsu-sp-footer__grid {
    grid-template-columns: 2fr 1fr 1fr 1.2fr;
  }
}

/* ---- reduced motion ------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
  .wwsu-sports .wwsu-sp-live[data-state="on-air"] .wwsu-sp-live__dot {
    animation: none;
  }
}

/* ---- print --------------------------------------------------------------- */
@media print {
  .wwsu-sports .wwsu-sp-header__actions,
  .wwsu-sports .wwsu-sp-filters,
  .wwsu-sports .wwsu-sp-pager,
  .wwsu-sports .wwsu-sp-footer {
    display: none;
  }
}
