:root {
    --terracotta: #C4622D;
    --terracotta-light: #D97B47;
    --terracotta-dark: #9A4520;
    --canyon: #7A2E0A;
    --sandstone: #E8C9A0;
    --sandstone-light: #F5ECD7;
    --sandstone-dark: #C9A87A;
    --ochre: #E8A820;
    --ochre-light: #F5C030;
    --turquoise: #1DADA0;
    --turquoise-light: #2ABCAA;
    --turquoise-dark: #15867C;
    --periwinkle: #8A9BC8;
    --sage: #6B7A5A;
    --sage-light: #8A9B72;
    --sky: #8A9BC8;
    --dusk: #6e4553;
    --night: #1C0E06;
    --night-mid: #2C1A10;
    --ink: #1A0A02;
    --warm-white: #FBF0D8;
    --rule: #C4622D;
    --shadow: rgba(28, 14, 6, 0.18);
    --sport-green: #2A7A3A;
    --sport-gold: #D4A017;
    --field-green: #1A5A28;
  }

  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
  html { scroll-behavior: smooth; }

  body {
    background: var(--warm-white);
    color: var(--ink);
    font-family: 'Libre Baskerville', Georgia, serif;
    font-size:var(--text-body);
    line-height: 1.6;
    overflow-x: clip;
  }

  /* ── BREAKING TICKER ── */
  .ticker-bar {
    background: #2A1108;
    color: var(--sandstone-light);
    padding: 0;
    height: 36px;
    display: flex;
    align-items: center;
    overflow: hidden;
    position: sticky;
    top: 0;
    z-index: 1000;
    border-bottom: 2px solid var(--terracotta);
  }
  .ticker-label {
    background: var(--terracotta);
    color: #fff;
    font-family: var(--font-accent, 'Libre Franklin', sans-serif); font-weight: 600; text-transform: uppercase;
    font-size: 13px;
    letter-spacing: 2px;
    padding: 0 16px;
    height: 100%;
    display: flex;
    align-items: center;
    white-space: nowrap;
    flex-shrink: 0;
    border-right: 2px solid var(--terracotta-dark);
    position: relative;
    z-index: 2;
  }
  .ticker-label::after {
    content: '';
    position: absolute;
    right: -10px;
    top: 0; bottom: 0;
    width: 10px;
    background: var(--terracotta);
    clip-path: polygon(0 0, 100% 50%, 0 100%);
  }
  .ticker-track {
    overflow: hidden;
    flex: 1;
    padding-left: 20px;
  }
  .ticker-inner {
    display: flex;
    gap: 60px;
    white-space: nowrap;
    animation: ticker 50s linear infinite;
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-sm);
    font-weight: 500;
    letter-spacing: 0.3px;
  }
  .ticker-inner span { color: var(--sandstone-dark); }
  .ticker-inner a { color: var(--sandstone); text-decoration: none; transition: color var(--dur-base); }
  .ticker-inner a:hover { color: var(--ochre-light); }
  .ticker-dot { color: var(--terracotta-light); margin: 0 6px; }
  @keyframes ticker {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); }
  }

  /* ── MASTHEAD ── */
  .masthead {
    background: #2A1218;
    background-image:
      radial-gradient(ellipse at 15% 100%, rgba(196,98,45,0.22) 0%, transparent 55%),
      radial-gradient(ellipse at 85% 100%, rgba(196,98,45,0.18) 0%, transparent 55%),
      radial-gradient(ellipse at 50% 0%, rgba(232,168,32,0.08) 0%, transparent 65%);
    padding: 0;
    position: relative;
    overflow: hidden;
  }
  .masthead::before {
    content: '';
    position: absolute;
    bottom: 0; left: 0; right: 0;
    height: 5px;
    background: repeating-linear-gradient(
      to right,
      var(--terracotta)      0px,
      var(--terracotta)      55px,
      var(--ochre)           55px,
      var(--ochre)           95px,
      var(--sandstone-dark)  95px,
      var(--sandstone-dark) 140px,
      var(--periwinkle)     140px,
      var(--periwinkle)     185px,
      var(--terracotta-dark) 185px,
      var(--terracotta-dark) 235px,
      var(--ochre-light)    235px,
      var(--ochre-light)    270px,
      var(--sandstone-dark) 270px,
      var(--sandstone-dark) 310px
    );
    opacity: 0.85;
    pointer-events: none;
  }
  .masthead-top {
    border-bottom: 1px solid rgba(196,98,45,0.2);
    padding: 8px 40px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-family: 'Libre Franklin', sans-serif;
    font-size: 11.5px;
    color: rgba(232,201,160,0.5);
    letter-spacing: 0.5px;
  }
  .masthead-date { text-transform: uppercase; letter-spacing: 1px; }
  .masthead-util { display: flex; gap: 20px; }
  .masthead-util a {
    color: rgba(232,201,160,0.5);
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: color var(--dur-base);
  }
  .masthead-util a:hover { color: var(--ochre-light); }
  .masthead-center {
    padding: 20px 40px 28px;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    position: relative;
  }
  .masthead-rule-top, .masthead-rule-bottom {
    width: 100%;
    height: 1px;
    background: linear-gradient(to right, transparent, rgba(154,69,32,0.4), var(--ochre), var(--terracotta), var(--sandstone-dark), var(--terracotta), var(--ochre), rgba(154,69,32,0.4), transparent);
    opacity: 0.85;
  }
  .masthead-rule-top { margin-bottom: 18px; }
  .masthead-rule-bottom { margin-top: 18px; }
  .masthead-logo-row {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 24px;
  }
  .site-title {
    font-family: 'Noto Serif', Georgia, serif;
    font-size: clamp(40px, 5.5vw, 74px);
    font-weight: 700;
    color: var(--sandstone-light);
    letter-spacing: -1px;
    line-height: 1;
    text-shadow: 0 2px 24px rgba(196,98,45,0.3), 0 0 60px rgba(232,168,32,0.12);
  }
  .site-title em { font-style: italic; color: var(--ochre-light); }
  .site-tagline {
    font-family: 'Libre Baskerville', Georgia, serif;
    font-style: italic;
    font-size:var(--text-md);
    color: rgba(232,201,160,0.5);
    letter-spacing: 2.5px;
    margin-top: 6px;
  }

  /* ── MAIN NAV ── */
  .main-nav {
    background: #3A1C24;
    border-bottom: 3px solid var(--terracotta);
    position: sticky;
    top: 36px;
    z-index: 900;
  }
  .nav-inner {
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 40px;
    display: flex;
    align-items: center;
    gap: 0;
  }
  .nav-inner > a,
  .nav-item > a {
    font-family: 'Libre Franklin', sans-serif;
    font-size: 12px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    color: var(--sandstone);
    text-decoration: none;
    padding: 14px 18px;
    display: block;
    transition: all var(--dur-base);
    position: relative;
    flex-shrink: 0;
  }
  .nav-inner > a::after,
  .nav-item > a::after {
    content: '';
    position: absolute;
    bottom: 0; left: 50%; right: 50%;
    height: 2px;
    background: var(--ochre-light);
    transition: all 0.25s;
  }
  .nav-inner > a:hover,
  .nav-item > a:hover { color: var(--sandstone-light); }
  .nav-inner > a:hover::after,
  .nav-item > a:hover::after { left: 0; right: 0; }
  .nav-inner > a.active,
  .nav-item > a.active { color: var(--ochre-light); }
  .nav-inner > a.active::after,
  .nav-item > a.active::after { left: 0; right: 0; background: var(--ochre); }
  .nav-item {
    position: relative;
    display: flex;
    align-items: stretch;
    flex-shrink: 0;
  }
  .nav-dropdown > a {
    padding-right: 34px;
  }
  .nav-dropdown > a::before {
    content: '▾';
    position: absolute;
    right: 14px;
    top: 50%;
    transform: translateY(-52%);
    font-size:var(--text-2xs);
    color: rgba(232,201,160,0.75);
    transition: transform var(--dur-base), color var(--dur-base);
  }
  .nav-dropdown:hover > a::before,
  .nav-dropdown:focus-within > a::before {
    color: var(--ochre-light);
    transform: translateY(-52%) rotate(180deg);
  }
  .nav-submenu {
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 220px;
    padding: 8px 0;
    background: #2F1720;
    border: 1px solid rgba(196,98,45,0.4);
    border-top: none;
    box-shadow: 0 14px 28px rgba(28,14,6,0.28);
    opacity: 0;
    visibility: hidden;
    transform: translateY(8px);
    transition: opacity var(--dur-base), transform var(--dur-base), visibility var(--dur-base);
    z-index: 950;
  }
  .nav-submenu a {
    display: block;
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-xs);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.2px;
    color: var(--sandstone);
    text-decoration: none;
    padding: 10px 16px;
    white-space: nowrap;
    transition: background var(--dur-base), color var(--dur-base);
  }
  .nav-submenu a::after {
    display: none;
  }
  .nav-submenu a:hover,
  .nav-submenu a:focus-visible {
    background: rgba(232,168,32,0.12);
    color: var(--sandstone-light);
    outline: none;
  }
  .nav-dropdown:hover .nav-submenu,
  .nav-dropdown:focus-within .nav-submenu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
  }

  /* ── LAYOUT ── */
  .page-wrap { max-width: 1400px; margin: 0 auto; padding: 0 var(--pw-pad); }

  /* ── SPORT SECTION BANNER ── */
  .sports-banner {
    background: #2A1218;
    margin: 0 calc(var(--pw-pad) * -1);
    padding: 28px var(--pw-pad) 24px;
    position: relative;
    overflow: hidden;
    border-bottom: 4px solid var(--sport-green);
  }
  .sports-banner::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
      repeating-linear-gradient(90deg, rgba(42,122,58,0.04) 0px, rgba(42,122,58,0.04) 2px, transparent 2px, transparent 40px),
      repeating-linear-gradient(0deg, rgba(42,122,58,0.03) 0px, rgba(42,122,58,0.03) 1px, transparent 1px, transparent 40px);
    pointer-events: none;
  }
  .sports-banner::after {
    content: '';
    position: absolute;
    right: -30px; top: -30px;
    width: 200px; height: 200px;
    border-radius: 50%;
    background: rgba(42,122,58,0.08);
    pointer-events: none;
  }
  .sports-banner-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    position: relative;
    z-index: 1;
  }
  .sports-banner-left {
    display: flex;
    align-items: baseline;
    gap: 16px;
  }
  .sports-banner h1 {
    font-family: var(--font-accent, 'Libre Franklin', sans-serif); font-weight: 600; text-transform: uppercase;
    font-size: 34px;
    letter-spacing: 6px;
    color: var(--sandstone-light);
    line-height: 1;
  }
  .sports-banner .banner-sub {
    font-family: 'Libre Baskerville', serif;
    font-style: italic;
    font-size: 15px;
    color: rgba(232,201,160,0.5);
  }
  .sports-banner-teams {
    display: flex;
    gap: 10px;
  }
  .team-pill {
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-2xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    color: var(--sandstone-light);
    padding: 5px 14px;
    border-radius: 20px;
    border: 1px solid rgba(232,201,160,0.2);
    background: rgba(255,255,255,0.04);
    cursor: pointer;
    transition: all var(--dur-base);
    text-decoration: none;
  }
  .team-pill:hover, .team-pill.active {
    background: var(--sport-green);
    border-color: var(--sport-green);
    color: #fff;
  }
  .team-pill.winslow { --team-color: #1B4D8F; }
  .team-pill.jcity  { --team-color: #8B2323; }
  .team-pill.holbrook { --team-color: #5C2D91; }
  .team-pill.snowflake { --team-color: #B8860B; }
  .team-pill.winslow:hover, .team-pill.winslow.active { background: #1B4D8F; border-color: #1B4D8F; }
  .team-pill.jcity:hover, .team-pill.jcity.active { background: #8B2323; border-color: #8B2323; }
  .team-pill.holbrook:hover, .team-pill.holbrook.active { background: #5C2D91; border-color: #5C2D91; }
  .team-pill.snowflake:hover, .team-pill.snowflake.active { background: #B8860B; border-color: #B8860B; }

  /* ── SCOREBOARD STRIP ── */
  .scoreboard-strip {
    background: linear-gradient(180deg, #1A120A 0%, var(--night-mid) 100%);
    margin: 0 calc(var(--pw-pad) * -1);
    padding: 0 var(--pw-pad);
    border-bottom: 1px solid rgba(42,122,58,0.25);
    overflow-x: auto;
  }
  .scoreboard-strip::-webkit-scrollbar { height: 4px; }
  .scoreboard-strip::-webkit-scrollbar-thumb { background: var(--terracotta-dark); border-radius: 2px; }
  .scoreboard-inner {
    display: flex;
    gap: 0;
    min-width: max-content;
    padding: 14px 0;
  }
  .score-card {
    padding: 10px 22px;
    border-right: 1px solid rgba(196,98,45,0.15);
    min-width: 200px;
    cursor: pointer;
    transition: background var(--dur-base);
    position: relative;
  }
  .score-card:last-child { border-right: none; }
  .score-card:hover { background: rgba(255,255,255,0.03); }
  .score-card-sport {
    font-family: 'Libre Franklin', sans-serif;
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    color: var(--turquoise);
    margin-bottom: 8px;
  }
  .score-card-status {
    font-family: 'Libre Franklin', sans-serif;
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
    float: right;
    margin-top: 1px;
  }
  .score-card-status.final { color: var(--sandstone-dark); }
  .score-card-status.live { color: #E03030; }
  .score-card-status.upcoming { color: var(--ochre); }
  .score-team {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 3px 0;
  }
  .score-team-name {
    font-family: 'Libre Franklin', sans-serif;
    font-size: 12px;
    font-weight: 500;
    color: var(--sandstone);
    display: flex;
    align-items: center;
    gap: 6px;
  }
  .score-team-name .team-dot {
    width: 8px; height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
  }
  .score-team-pts {
    font-family: var(--font-accent, 'Libre Franklin', sans-serif); font-weight: 700;
    font-size: 20px;
    color: var(--sandstone-light);
    line-height: 1;
  }
  .score-team.winner .score-team-name { color: var(--sandstone-light); font-weight: 600; }
  .score-team.winner .score-team-pts { color: var(--ochre-light); }

  /* ── SECTION HEADERS ── */
  .section-header {
    display: flex;
    align-items: baseline;
    gap: 16px;
    margin: 36px 0 20px;
    padding-bottom: 10px;
    border-bottom: 3px solid var(--turquoise);
  }
  .section-title {
    font-family: var(--font-accent, 'Libre Franklin', sans-serif); font-weight: 600; text-transform: uppercase;
    font-size: 20px;
    letter-spacing: 3px;
    color: var(--canyon);
  }
  .section-subtitle {
    font-family: 'Libre Baskerville', serif;
    font-size:var(--text-md);
    font-style: italic;
    color: #9A7A5A;
  }
  .section-more {
    margin-left: auto;
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-xs);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    color: var(--turquoise);
    text-decoration: none;
    border-bottom: 1px solid var(--turquoise);
    transition: all var(--dur-base);
  }
  .section-more:hover { color: var(--turquoise-dark); border-color: var(--turquoise-dark); }

  /* ── HERO LAYOUT ── */
  .sports-hero {
    padding: 32px 0 0;
    display: grid;
    grid-template-columns: 1fr 360px;
    gap: 32px;
  }

  /* ── FEATURE STORY ── */
  .feature-hero {
    position: relative;
    overflow: hidden;
    background: #2A1218;
    cursor: pointer;
  }
  .feature-hero::before {
    content: '';
    display: block;
    padding-top: 58%;
  }
  .feature-hero-bg {
    position: absolute;
    inset: 0;
    overflow: hidden;
  }
  .feature-hero-bg svg { width: 100%; height: 100%; }
  .feature-hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom, rgba(28,14,6,0) 20%, rgba(28,14,6,0.88) 100%);
  }
  .feature-hero-content {
    position: absolute;
    bottom: 0; left: 0; right: 0;
    padding: 32px 36px;
  }
  .hero-kicker {
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-xs);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 2.5px;
    color: var(--turquoise-light);
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .hero-kicker::before {
    content: '';
    display: inline-block;
    width: 28px;
    height: 2px;
    background: var(--ochre-light);
  }
  .hero-headline {
    font-family: 'Noto Serif', Georgia, serif;
    font-size: clamp(24px, 3vw, 40px);
    font-weight: 700;
    color: var(--sandstone-light);
    line-height: 1.15;
    margin-bottom: 14px;
    text-shadow: 0 2px 8px rgba(0,0,0,0.5);
  }
  .hero-headline em { font-style: italic; color: var(--ochre-light); }
  .hero-deck {
    font-family: 'Libre Baskerville', Georgia, serif;
    font-size:var(--text-base);
    color: rgba(232,201,160,0.8);
    line-height: 1.5;
    max-width: 560px;
    margin-bottom: 18px;
  }
  .hero-meta {
    display: flex;
    align-items: center;
    gap: 16px;
    font-family: 'Libre Franklin', sans-serif;
    font-size: 11.5px;
    color: rgba(232,201,160,0.5);
  }
  .hero-meta .byline { color: var(--sandstone); }
  .hero-meta .read-time {
    background: rgba(42,122,58,0.4);
    border: 1px solid rgba(42,122,58,0.5);
    padding: 2px 10px;
    border-radius: 20px;
    color: var(--sandstone);
  }

  /* ── SPORTS SIDEBAR ── */
  .sports-sidebar {
    display: flex;
    flex-direction: column;
    gap: 0;
    border-left: 3px solid var(--sport-green);
    padding-left: 28px;
  }
  .sidebar-widget {
    border-bottom: 1px solid rgba(196,98,45,0.2);
    padding-bottom: 22px;
    margin-bottom: 22px;
  }
  .sidebar-widget:last-child { border-bottom: none; }
  .widget-label {
    font-family: var(--font-accent, 'Libre Franklin', sans-serif); font-weight: 600;
    font-size: 13px;
    letter-spacing: 3px;
    color: var(--sport-green);
    text-transform: uppercase;
    margin-bottom: 14px;
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .widget-label::after {
    content: '';
    flex: 1;
    height: 1px;
    background: rgba(42,122,58,0.25);
  }

  /* Athlete of the Week */
  .aotw-card {
    background: linear-gradient(135deg, var(--night-mid), #281408);
    border: 1px solid rgba(42,122,58,0.3);
    border-top: 3px solid var(--sport-gold);
    padding: 18px;
    text-align: center;
  }
  .aotw-avatar {
    width: 80px; height: 80px;
    border-radius: 50%;
    margin: 0 auto 12px;
    overflow: hidden;
    border: 3px solid var(--sport-gold);
    box-shadow: 0 0 20px rgba(212,160,23,0.2);
  }
  .aotw-avatar svg { width: 100%; height: 100%; }
  .aotw-name {
    font-family: 'Noto Serif', serif;
    font-size: 18px;
    font-weight: 700;
    color: var(--sandstone-light);
    margin-bottom: 2px;
  }
  .aotw-school {
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-2xs);
    text-transform: uppercase;
    letter-spacing: 1.5px;
    color: var(--sport-gold);
    margin-bottom: 8px;
  }
  .aotw-sport {
    font-family: 'Libre Baskerville', serif;
    font-style: italic;
    font-size: 13px;
    color: rgba(232,201,160,0.5);
    margin-bottom: 10px;
  }
  .aotw-stat-row {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 6px;
    border-top: 1px solid rgba(196,98,45,0.15);
    padding-top: 10px;
  }
  .aotw-stat {
    text-align: center;
  }
  .aotw-stat-num {
    font-family: var(--font-accent, 'Libre Franklin', sans-serif); font-weight: 700;
    font-size:var(--text-xl);
    color: var(--ochre-light);
    line-height: 1;
  }
  .aotw-stat-label {
    font-family: 'Libre Franklin', sans-serif;
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: rgba(232,201,160,0.4);
  }

  /* Schedule widget */
  .schedule-list { list-style: none; }
  .schedule-item {
    display: grid;
    grid-template-columns: 44px 1fr auto;
    gap: 10px;
    align-items: center;
    padding: 10px 0;
    border-bottom: 1px solid rgba(196,98,45,0.12);
    cursor: pointer;
    transition: background 0.15s;
  }
  .schedule-item:last-child { border-bottom: none; }
  .schedule-date {
    text-align: center;
  }
  .schedule-month {
    font-family: 'Libre Franklin', sans-serif;
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--terracotta);
    display: block;
  }
  .schedule-day {
    font-family: var(--font-accent, 'Libre Franklin', sans-serif); font-weight: 700;
    font-size: 20px;
    line-height: 1;
    color: var(--ink);
    display: block;
  }
  .schedule-matchup h5 {
    font-family: 'Noto Serif', serif;
    font-size:var(--text-md);
    font-weight: 700;
    color: var(--ink);
    line-height: 1.25;
    margin-bottom: 2px;
  }
  .schedule-matchup p {
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-2xs);
    color: #9A7A5A;
  }
  .schedule-sport-tag {
    font-family: 'Libre Franklin', sans-serif;
    font-size: 8px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    padding: 2px 8px;
    border-radius: 10px;
    color: #fff;
    white-space: nowrap;
  }
  .schedule-sport-tag.baseball { background: var(--sport-green); }
  .schedule-sport-tag.track { background: var(--terracotta); }
  .schedule-sport-tag.softball { background: var(--dusk); }
  .schedule-sport-tag.tennis { background: var(--terracotta); }
  .schedule-sport-tag.golf { background: var(--sage); }

  /* ── STORY CARDS ── */
  .story-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
  .story-grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; }
  .story-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
  .story-card { cursor: pointer; transition: transform var(--dur-base); }
  .story-card:hover { transform: translateY(-2px); }
  .card-img {
    width: 100%;
    aspect-ratio: 16/9;
    overflow: hidden;
    background: linear-gradient(135deg, var(--terracotta-dark) 0%, var(--sandstone-dark) 100%);
    position: relative;
    margin-bottom: 12px;
  }
  .card-img svg { width: 100%; height: 100%; }
  .card-img-label {
    position: absolute;
    top: 10px; left: 10px;
    background: var(--sport-green);
    color: #fff;
    font-family: 'Libre Franklin', sans-serif;
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    padding: 3px 8px;
    border-radius: 2px;
  }
  .card-kicker {
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-2xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 2px;
    color: var(--terracotta);
    margin-bottom: 5px;
  }
  .card-headline {
    font-family: 'Noto Serif', serif;
    font-size: 18px;
    font-weight: 700;
    line-height: 1.25;
    color: var(--ink);
    margin-bottom: 7px;
    transition: color var(--dur-base);
  }
  .story-card:hover .card-headline { color: var(--canyon); }
  .card-deck {
    font-family: 'Libre Baskerville', serif;
    font-size: 14.5px;
    line-height: 1.5;
    color: #5A3E2B;
    margin-bottom: 8px;
  }
  .card-meta {
    display: flex;
    align-items: center;
    gap: 10px;
    font-family: 'Libre Franklin', sans-serif;
    font-size: 10.5px;
    color: #9A7A5A;
  }
  .card-meta .dot { color: rgba(196,98,45,0.4); }

  /* ── STANDINGS TABLE ── */
  .standings-section {
    background: #2A1218;
    margin: 40px calc(var(--pw-pad) * -1);
    padding: 36px var(--pw-pad);
    position: relative;
    overflow: hidden;
  }
  .standings-section::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
      repeating-linear-gradient(90deg, rgba(42,122,58,0.03) 0px, rgba(42,122,58,0.03) 1px, transparent 1px, transparent 60px),
      repeating-linear-gradient(0deg, rgba(42,122,58,0.02) 0px, rgba(42,122,58,0.02) 1px, transparent 1px, transparent 60px);
    pointer-events: none;
  }
  .standings-section .section-header {
    border-color: rgba(42,122,58,0.4);
    margin-top: 0;
    margin-bottom: 24px;
  }
  .standings-section .section-title { color: var(--sandstone-light); }
  .standings-section .section-subtitle { color: rgba(232,201,160,0.45); }

  .standings-grid {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 24px;
  }
  .standings-card {
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(42,122,58,0.2);
    border-top: 3px solid var(--sport-green);
    overflow: hidden;
  }
  .standings-card-header {
    padding: 14px 18px 10px;
    border-bottom: 1px solid rgba(42,122,58,0.15);
    display: flex;
    align-items: center;
    justify-content: space-between;
  }
  .standings-card-title {
    font-family: var(--font-accent, 'Libre Franklin', sans-serif); font-weight: 600; text-transform: uppercase;
    font-size:var(--text-base);
    letter-spacing: 2px;
    color: var(--sandstone-light);
  }
  .standings-card-season {
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-2xs);
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--sport-green);
  }
  .standings-table {
    width: 100%;
    border-collapse: collapse;
  }
  .standings-table th {
    font-family: 'Libre Franklin', sans-serif;
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: rgba(232,201,160,0.4);
    padding: 8px 12px;
    text-align: left;
    border-bottom: 1px solid rgba(255,255,255,0.05);
  }
  .standings-table th:not(:first-child) { text-align: center; }
  .standings-table td {
    font-family: 'Libre Franklin', sans-serif;
    font-size: 12px;
    color: var(--sandstone);
    padding: 9px 12px;
    border-bottom: 1px solid rgba(255,255,255,0.03);
  }
  .standings-table td:not(:first-child) { text-align: center; }
  .standings-table tr:last-child td { border-bottom: none; }
  .standings-table tr:hover td { background: rgba(42,122,58,0.08); }
  .standings-team-cell {
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .standings-dot {
    width: 8px; height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
  }
  .standings-team-name { font-weight: 500; color: var(--sandstone-light); }
  .standings-table .highlight td { background: rgba(42,122,58,0.06); }
  .standings-table .highlight .standings-team-name { color: var(--ochre-light); }

  /* ── FEATURE LAYOUT ── */
  .feature-layout {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 32px;
  }
  .lead-story {
    border-right: 1px solid rgba(196,98,45,0.2);
    padding-right: 32px;
  }
  .lead-story .card-img { aspect-ratio: 3/2; }
  .lead-story .card-headline { font-size:var(--text-2xl); line-height: 1.2; }
  .lead-story .card-deck { font-size:var(--text-base); }
  .side-stack { display: flex; flex-direction: column; gap: 20px; }
  .side-item {
    display: grid;
    grid-template-columns: 80px 1fr;
    gap: 12px;
    padding-bottom: 18px;
    border-bottom: 1px solid rgba(196,98,45,0.12);
    cursor: pointer;
  }
  .side-item:last-child { border-bottom: none; }
  .side-thumb {
    width: 80px; height: 60px;
    overflow: hidden;
    background: linear-gradient(135deg, var(--terracotta-dark), var(--sandstone-dark));
    flex-shrink: 0;
  }
  .side-thumb svg { width: 100%; height: 100%; }
  .side-item h4 {
    font-family: 'Noto Serif', serif;
    font-size: 15px;
    font-weight: 700;
    line-height: 1.25;
    color: var(--ink);
    transition: color var(--dur-base);
  }
  .side-item:hover h4 { color: var(--canyon); }
  .side-item .card-meta { margin-top: 5px; }

  /* ── TEAM SPOTLIGHT BAND ── */
  .team-spotlight {
    background: linear-gradient(to bottom, var(--sandstone-light), #F0E8CC);
    margin: 40px calc(var(--pw-pad) * -1);
    padding: 36px var(--pw-pad);
    position: relative;
    overflow: hidden;
    border-top: 4px solid var(--ochre);
    border-bottom: 1px solid rgba(196,98,45,0.2);
  }
  .team-spotlight::before {
    content: '⚾';
    position: absolute;
    right: 40px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 100px;
    opacity: 0.06;
    pointer-events: none;
  }
  .team-spotlight .section-title { color: var(--canyon); }
  .team-cards {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
    margin-top: 20px;
  }
  .team-card {
    background: #fff;
    border: 1px solid rgba(196,98,45,0.15);
    overflow: hidden;
    cursor: pointer;
    transition: transform var(--dur-base), box-shadow var(--dur-base);
  }
  .team-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 24px var(--shadow);
  }
  .team-card-banner {
    height: 8px;
  }
  .team-card-banner.winslow { background: linear-gradient(90deg, #1B4D8F, #2A6DCF); }
  .team-card-banner.jcity { background: linear-gradient(90deg, #8B2323, #C03030); }
  .team-card-banner.holbrook { background: linear-gradient(90deg, #5C2D91, #8040C0); }
  .team-card-banner.snowflake { background: linear-gradient(90deg, #B8860B, #D4A017); }
  .team-card-body { padding: 18px; }
  .team-card-school {
    font-family: var(--font-accent, 'Libre Franklin', sans-serif); font-weight: 600; text-transform: uppercase;
    font-size: 18px;
    letter-spacing: 2px;
    color: var(--ink);
    margin-bottom: 2px;
  }
  .team-card-mascot {
    font-family: 'Libre Baskerville', serif;
    font-style: italic;
    font-size: 13px;
    color: #9A7A5A;
    margin-bottom: 10px;
  }
  .team-card-record {
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-xs);
    color: var(--terracotta);
    font-weight: 600;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
  }
  .team-card-headline {
    font-family: 'Noto Serif', serif;
    font-size: 15px;
    font-weight: 700;
    line-height: 1.3;
    color: var(--ink);
    margin-bottom: 6px;
    transition: color var(--dur-base);
  }
  .team-card:hover .team-card-headline { color: var(--canyon); }
  .team-card-deck {
    font-family: 'Libre Baskerville', serif;
    font-size: 13.5px;
    line-height: 1.45;
    color: #5A3E2B;
  }

  /* ── NEWSLETTER ── */
  .newsletter-band {
    background: linear-gradient(135deg, var(--sport-green) 0%, var(--field-green) 100%);
    margin: 40px calc(var(--pw-pad) * -1);
    padding: 40px var(--pw-pad);
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    align-items: center;
    position: relative;
    overflow: hidden;
  }
  .newsletter-band::before {
    content: '';
    position: absolute;
    inset: 0;
    background: repeating-linear-gradient(0deg, rgba(255,255,255,0.02) 0px, rgba(255,255,255,0.02) 1px, transparent 1px, transparent 20px);
    pointer-events: none;
  }
  .newsletter-band::after {
    content: '';
    position: absolute;
    right: -60px; top: -60px;
    width: 300px; height: 300px;
    border-radius: 50%;
    background: rgba(255,255,255,0.04);
    pointer-events: none;
  }
  .newsletter-text h3 {
    font-family: 'Noto Serif', serif;
    font-size: 30px;
    font-weight: 700;
    color: var(--sandstone-light);
    line-height: 1.15;
    margin-bottom: 8px;
  }
  .newsletter-text p {
    font-family: 'Libre Baskerville', serif;
    font-size:var(--text-base);
    color: rgba(245,236,215,0.75);
    font-style: italic;
  }
  .newsletter-form { display: flex; gap: 0; position: relative; z-index: 1; }
  .newsletter-form input {
    flex: 1;
    background: rgba(255,255,255,0.1);
    border: 1px solid rgba(255,255,255,0.25);
    border-right: none;
    color: var(--sandstone-light);
    padding: 14px 20px;
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-md);
    outline: none;
    transition: background var(--dur-base);
  }
  .newsletter-form input::placeholder { color: rgba(245,236,215,0.45); }
  .newsletter-form input:focus { background: rgba(255,255,255,0.15); }
  .newsletter-form button {
    background: var(--ochre);
    color: var(--night);
    border: none;
    padding: 14px 26px;
    font-family: 'Libre Franklin', sans-serif;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    cursor: pointer;
    transition: all var(--dur-base);
  }
  .newsletter-form button:hover { background: var(--ochre-light); letter-spacing: 2px; }

  /* ── POLL WIDGET ── */
  .poll-widget {
    background: linear-gradient(135deg, var(--night-mid), #201008);
    border: 1px solid rgba(42,122,58,0.2);
    border-top: 3px solid var(--ochre);
    padding: 18px;
  }
  .poll-question {
    font-family: 'Noto Serif', serif;
    font-size: 15px;
    font-weight: 700;
    color: var(--sandstone-light);
    line-height: 1.35;
    margin-bottom: 14px;
  }
  .poll-option {
    margin-bottom: 8px;
    cursor: pointer;
    transition: all var(--dur-base);
  }
  .poll-option:hover .poll-bar-fill { opacity: 1; }
  .poll-option-label {
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-xs);
    color: var(--sandstone);
    margin-bottom: 4px;
    display: flex;
    justify-content: space-between;
  }
  .poll-pct {
    color: var(--ochre);
    font-weight: 600;
  }
  .poll-bar {
    height: 5px;
    background: rgba(255,255,255,0.06);
    border-radius: 3px;
    overflow: hidden;
  }
  .poll-bar-fill {
    height: 100%;
    border-radius: 3px;
    background: linear-gradient(90deg, var(--sport-green), var(--turquoise));
    opacity: 0.8;
    transition: width 0.6s ease, opacity var(--dur-base);
  }
  .poll-total {
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-2xs);
    color: rgba(232,201,160,0.35);
    margin-top: 10px;
    text-align: center;
  }

  /* ── LIVE BADGE ── */
  .live-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #C02020;
    color: #fff;
    font-family: 'Libre Franklin', sans-serif;
    font-size: 9px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 2px;
    padding: 3px 9px;
    border-radius: 3px;
    vertical-align: middle;
  }
  .live-dot {
    width: 6px; height: 5px;
    background: #fff;
    border-radius: 50%;
    animation: pulse 1.4s infinite;
  }
  @keyframes pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.4; transform: scale(0.8); }
  }

  /* ── AD PLACEHOLDER ── */
  .ad-unit {
    background: repeating-linear-gradient(45deg, rgba(196,98,45,0.03), rgba(196,98,45,0.03) 10px, transparent 10px, transparent 20px);
    border: 1px dashed rgba(196,98,45,0.2);
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-xs);
    color: rgba(196,98,45,0.3);
    letter-spacing: 1px;
    text-transform: uppercase;
    height: 100px;
    margin: 24px 0;
    border-radius: 2px;
  }

  /* ── DIVIDER ── */
  .divider {
    height: 1px;
    background: linear-gradient(to right, transparent, rgba(196,98,45,0.25), transparent);
    margin: 36px 0;
  }

  /* ── SCROLL ANIMATIONS ── */
  .fade-up {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.6s ease, transform 0.6s ease;
  }
  .fade-up.visible { opacity: 1; transform: translateY(0); }

  /* ── FOOTER ── */
  .site-footer {
    background: #2A1218;
    border-top: 4px solid var(--turquoise);
    margin-top: 48px;
    padding: 48px 40px 28px;
    color: var(--sandstone);
  }
  .footer-top {
    display: grid;
    grid-template-columns: 280px 1fr 1fr 1fr;
    gap: 40px;
    padding-bottom: 40px;
    border-bottom: 1px solid rgba(196,98,45,0.2);
    margin-bottom: 28px;
  }
  .footer-brand p {
    font-family: 'Libre Baskerville', serif;
    font-style: italic;
    font-size:var(--text-md);
    color: rgba(232,201,160,0.5);
    line-height: 1.5;
    margin-bottom: 16px;
  }
  .footer-social { display: flex; gap: 10px; }
  .social-btn {
    width: 34px; height: 34px;
    background: rgba(196,98,45,0.2);
    border: 1px solid rgba(196,98,45,0.35);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size:var(--text-md);
    cursor: pointer;
    transition: all var(--dur-base);
    text-decoration: none;
  }
  .social-btn:hover { background: var(--ochre); border-color: var(--ochre); transform: translateY(-2px); }
  .footer-col h5 {
    font-family: var(--font-accent, 'Libre Franklin', sans-serif); font-weight: 600;
    font-size:var(--text-md);
    letter-spacing: 2.5px;
    color: var(--turquoise-light);
    margin-bottom: 16px;
    text-transform: uppercase;
  }
  .footer-col ul { list-style: none; }
  .footer-col ul li { padding: 5px 0; border-bottom: 1px solid rgba(196,98,45,0.08); }
  .footer-col ul li a {
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-sm);
    color: rgba(232,201,160,0.6);
    text-decoration: none;
    transition: color var(--dur-base);
    display: flex;
    justify-content: space-between;
  }
  .footer-col ul li a:hover { color: var(--sandstone-light); }
  .footer-col ul li a span { color: rgba(196,98,45,0.4); font-size:var(--text-2xs); }
  .footer-bottom {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-family: 'Libre Franklin', sans-serif;
    font-size:var(--text-xs);
    color: rgba(232,201,160,0.3);
  }
  .footer-bottom a {
    color: rgba(232,201,160,0.3);
    text-decoration: none;
    margin-left: 16px;
    transition: color var(--dur-base);
  }
  .footer-bottom a:hover { color: var(--turquoise-light); }

/* ══════════════════════════════════════════════════════════════════════
   THE 2026 SECTION FRONT
   Journalism first, then the numbers, then the towns. Everything below
   names a role — var(--tone) is the section's gold from the masthead
   ribbon, var(--school) is whichever school the element belongs to —
   so nothing here has to be re-found when a colour changes.
   ══════════════════════════════════════════════════════════════════ */

/* ── The section colour is gold, not green ──
   This sheet was written when Sports was green, and --sport-green still
   drives a dozen borders, labels and fills. Rather than chase each one, the
   variable is repointed at the section's own token: the masthead ribbon's
   gold, in its ink variant so it still clears 4.5:1 as type on paper. The
   two hard-coded rgba(42,122,58,…) greens it never used the variable for are
   caught underneath. */
:root {
  --sport-green: var(--color-section-sports-ink, #966A0C);
  --sport-gold: var(--color-section-sports, #E8A820);
}
.widget-label::after { background: color-mix(in srgb, var(--color-section-sports, #E8A820) 40%, transparent); }
.aotw-card { border-color: color-mix(in srgb, var(--color-section-sports, #E8A820) 35%, transparent); }
.hero-meta .read-time {
  background: transparent;
  border-color: var(--color-border, rgba(196,98,45,.3));
  color: var(--color-text-secondary, #5b5148);
}

/* These two are anchors. The markup used to carry display:block as an inline
   style; moving it into the sheet is what this rule is. Without it the <a>
   stays inline, its ::before aspect box collapses to nothing, and the
   absolutely-positioned headline shrink-wraps into a one-word column running
   up the page. */
.feature-hero,
a.aotw-card {
  display: block;
  text-decoration: none;
  color: inherit;
}

.screen-reader-text {
  position: absolute !important;
  width: 1px; height: 1px;
  overflow: hidden; clip: rect(1px, 1px, 1px, 1px);
  white-space: nowrap;
}

/* ── Breadcrumb ── */
.sp-breadcrumb {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-xs);
  font-weight: var(--flag-weight, 600);
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: var(--color-text-secondary, #5b5148);
  padding: 16px 0 4px;
}
.sp-breadcrumb a { color: inherit; text-decoration: none; }
.sp-breadcrumb a:hover { color: var(--tone-ink, var(--terracotta)); }
.sp-breadcrumb span[aria-hidden] { margin: 0 8px; opacity: .45; }

/* Team pills carry their school's colour rather than a hand-kept class, and
   wear the lifted version of it so all four rings read equally on the banner's
   near-black. Sized up from 10px/5px: these are the only navigation on the
   page and they were set at caption size. */
.sports-banner-teams .team-pill {
  font-size: 12.5px;
  letter-spacing: 1.3px;
  padding: 9px 18px;
  border: 2px solid var(--school-lit, rgba(232, 201, 160, .35));
  background: color-mix(in srgb, var(--school-lit, #fff) 14%, transparent);
  line-height: 1;
}
.sports-banner-teams .team-pill:hover,
.sports-banner-teams .team-pill:focus-visible {
  background: var(--school-lit);
  border-color: var(--school-lit);
  color: var(--school-lit-ink, #17110d);
}
.sports-banner-teams .team-pill:focus-visible {
  outline: 2px solid var(--sandstone-light);
  outline-offset: 2px;
}

/* ── The lead ──
   The headline sits ON the photograph. Below 1000px the sidebar drops
   under the story instead of squeezing the poster into a stamp — which
   is what used to happen, because this sheet had no breakpoints at all. */
.sports-hero { align-items: start; }
.sports-hero-main { min-width: 0; }

/* The lead story reads as a newspaper page, not a movie poster: the
   photograph sits on top and the headline sits under it on the paper. Nothing
   is printed over the picture, so the aspect spacer, the scrim and the
   absolute positioning all come out and the block simply stacks. */
.feature-hero { display: block; background: none; overflow: visible; }
.feature-hero::before { content: none; }
.feature-hero-bg {
  position: relative;
  inset: auto;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--color-surface-sunken, #f5e4c4);
}
.feature-hero-overlay { display: none; }
.feature-hero-content {
  position: relative;
  inset: auto;
  padding: 16px 0 0;
}
.feature-hero-bg img,
.feature-hero-bg svg {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
}

/* Type that was set to sit on a dark photograph, moved onto cream. */
.hero-kicker { color: var(--tone-ink, var(--terracotta)); }
.hero-kicker::before { background: var(--tone, var(--ochre)); }
.hero-headline { color: var(--ink); text-shadow: none; }
.hero-headline em { color: var(--tone-ink, var(--terracotta)); }
.hero-deck { color: var(--color-text-secondary, #5A3E2B); max-width: 62ch; }
.hero-meta { color: var(--color-text-secondary, #5b5148); }
.hero-meta .byline { color: var(--ink); font-weight: 600; }

.sports-hero-subs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-top: 3px solid var(--tone, var(--ochre));
}
.sports-hero-sub {
  display: block;
  padding: 20px 22px;
  text-decoration: none;
  color: inherit;
  transition: background var(--dur-base, .2s);
}
.sports-hero-sub + .sports-hero-sub { border-left: 1px solid var(--color-border, rgba(196,98,45,.2)); }
.sports-hero-sub:hover { background: rgba(196, 98, 45, .05); }
.sports-hero-sub .sub-kicker {
  display: block;
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-2xs, 10px);
  font-weight: var(--flag-weight, 600);
  text-transform: uppercase;
  letter-spacing: 2px;
  color: var(--tone-ink, var(--terracotta));
  margin-bottom: 6px;
}
.sports-hero-sub .sub-headline {
  font-family: 'Noto Serif', Georgia, serif;
  font-size: 18px; font-weight: 700; line-height: 1.25;
  color: var(--ink); margin-bottom: 6px;
}
.sports-hero-sub .sub-deck {
  font-size: 14px; line-height: 1.45;
  color: var(--color-text-secondary, #5A3E2B); margin: 0;
}
.sports-hero-sub .card-meta { margin-top: 8px; display: flex; gap: 6px; }

/* ── Athlete of the Week ── */
.aotw-avatar img, .aotw-avatar svg { width: 100%; height: 100%; object-fit: cover; display: block; }
.aotw-excerpt {
  font-family: 'Libre Baskerville', Georgia, serif;
  font-size: 14.5px; line-height: 1.5;
  color: var(--color-text-secondary, #5A3E2B);
  margin: 14px 0 4px;
}
.aotw-cta, .aotw-foot a {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-xs);
  font-weight: 700; letter-spacing: 1.6px; text-transform: uppercase;
  color: var(--tone-ink, var(--terracotta));
  text-decoration: none;
}
.aotw-cta { display: block; margin-top: 10px; }
.aotw-card.is-empty { text-align: center; padding: 24px 18px; }
.aotw-empty-mark { font-size: 36px; margin-bottom: 8px; }
.aotw-empty-title {
  font-family: 'Noto Serif', Georgia, serif;
  font-size: 16px; font-weight: 700; color: var(--ink); margin-bottom: 6px;
}
.aotw-empty-note {
  font-family: 'Libre Baskerville', Georgia, serif;
  font-size: 13.5px; font-style: italic; line-height: 1.5;
  color: var(--color-text-secondary, #7A5A3A); margin: 0;
}
.aotw-foot { margin-top: 14px; text-align: center; }
.aotw-foot a { border-bottom: 1px solid color-mix(in srgb, var(--tone-ink, #C4622D) 40%, transparent); padding-bottom: 1px; }

/* ── Send it in ── */
.sp-pitch {
  background: var(--color-surface, #fff);
  border: 1px solid var(--color-border, rgba(196,98,45,.15));
  border-top: 3px solid var(--tone, var(--ochre));
  padding: 18px;
}
.sp-pitch p {
  font-family: 'Libre Baskerville', Georgia, serif;
  font-size: 14.5px; line-height: 1.5;
  color: var(--ink); margin: 0 0 12px;
}
.sp-pitch-btn {
  display: inline-block;
  background: var(--tone-ink, var(--terracotta));
  color: var(--sandstone-light, #fff);
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-xs); font-weight: 700;
  letter-spacing: 1.6px; text-transform: uppercase;
  padding: 9px 16px; text-decoration: none;
}
.sp-pitch-btn:hover { background: var(--ink); }

/* ══ The numbers deck: standings that turn, beside the schedule ══ */
.sp-deck {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
  gap: 24px;
  margin: 36px 0 32px;
  /* Each card keeps its own height. Stretching them to match left the
     standings card with a third of a screen of empty paper under a
     four-row table. */
  align-items: start;
}

.sp-card {
  background: var(--color-surface, #fff9ea);
  border: 1px solid var(--color-border, rgba(196,98,45,.2));
  border-top: 3px solid var(--tone, var(--ochre));
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.sp-card-bar {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px;
  padding: 14px 18px 12px;
  border-bottom: 1px solid var(--color-border, rgba(196,98,45,.18));
}
.sp-card-title {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-sm, 12.5px);
  font-weight: var(--flag-weight, 600);
  letter-spacing: 2.2px; text-transform: uppercase;
  color: var(--ink); margin: 0;
}
.sp-empty {
  font-family: 'Libre Baskerville', Georgia, serif;
  font-style: italic; font-size: 14px;
  color: var(--color-text-secondary, #7A5A3A);
  padding: 20px 18px; margin: 0;
}

/* ── The rotator ── */
.sp-rot-nav { display: flex; align-items: center; gap: 8px; }
.sp-rot-sport {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-xs); font-weight: 700;
  letter-spacing: 1.6px; text-transform: uppercase;
  color: var(--tone-ink, var(--terracotta));
  min-width: 8.5em; text-align: center;
}
.sp-rot-arrow {
  width: 26px; height: 26px;
  display: grid; place-items: center;
  background: none; cursor: pointer;
  border: 1px solid var(--color-border, rgba(196,98,45,.35));
  color: var(--tone-ink, var(--terracotta));
  font-size: 17px; line-height: 1;
  transition: background var(--dur-base, .2s), color var(--dur-base, .2s);
}
.sp-rot-arrow:hover { background: var(--tone-ink, var(--terracotta)); color: var(--sandstone-light, #fff); }
.sp-rot-arrow:focus-visible { outline: 2px solid var(--tone-ink, var(--terracotta)); outline-offset: 2px; }

.sp-rot-view { overflow: hidden; flex: 1; }
.sp-rot-track {
  display: flex;
  align-items: stretch;
  transition: transform .45s var(--ease-out, cubic-bezier(.22,.61,.36,1));
}
.sp-rot-panel { flex: 0 0 100%; min-width: 0; }

/* Standings table — numerals do the talking, so they get the tabular face
   and the names get out of the way. */
.sp-stat { width: 100%; border-collapse: collapse; }
.sp-stat thead th {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-2xs, 10px);
  font-weight: var(--flag-weight, 600);
  letter-spacing: 1.4px; text-transform: uppercase;
  color: var(--color-text-secondary, #5b5148);
  text-align: left;
  padding: 10px 18px 8px;
  border-bottom: 1px solid var(--color-border, rgba(196,98,45,.18));
}
.sp-stat thead th.sp-stat-n { text-align: right; }
.sp-stat tbody tr + tr th,
.sp-stat tbody tr + tr td { border-top: 1px solid rgba(196, 98, 45, .12); }
.sp-stat tbody tr:hover th, .sp-stat tbody tr:hover td { background: rgba(196, 98, 45, .04); }

.sp-stat-team { padding: 11px 8px 11px 18px; text-align: left; font-weight: 400; }
.sp-stat-team a { text-decoration: none; color: inherit; display: inline-block; vertical-align: middle; }
/* Snowflake's colour is white, which on cream paper is nothing at all. Every
   block of a school's colour therefore carries a hairline mixed from that
   same colour — invisible against a dark crest, and the thing that makes the
   white one readable. */
.sp-stat .sp-chip {
  display: inline-block; vertical-align: middle;
  width: 5px; height: 26px;
  background: var(--school, #8C8C8C);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--school, #8C8C8C) 62%, var(--ink));
  margin-right: 10px;
}
.sp-stat-town {
  display: block;
  font-family: 'Noto Serif', Georgia, serif;
  font-size: 15px; font-weight: 700; line-height: 1.15;
  color: var(--ink);
}
.sp-stat-align {
  display: block;
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-2xs, 10px);
  letter-spacing: .6px; text-transform: uppercase;
  color: var(--color-text-secondary, #5b5148);
  margin-top: 2px;
}
.sp-stat td.sp-stat-n {
  padding: 11px 18px 11px 8px;
  text-align: right;
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  color: var(--color-text-secondary, #5b5148);
  white-space: nowrap;
}
.sp-stat td.sp-stat-big {
  font-size: 17px; font-weight: 700;
  color: var(--ink);
}

.sp-rot-dots {
  display: flex; justify-content: center; gap: 7px;
  padding: 12px 0 14px;
  border-top: 1px solid var(--color-border, rgba(196,98,45,.14));
}
.sp-rot-dot {
  width: 7px; height: 7px; padding: 0;
  border: 1px solid var(--tone-ink, var(--terracotta));
  border-radius: 50%;
  background: none; cursor: pointer;
  transition: background var(--dur-base, .2s);
}
.sp-rot-dot.is-on { background: var(--tone-ink, var(--terracotta)); }
.sp-rot-dot:focus-visible { outline: 2px solid var(--tone-ink, var(--terracotta)); outline-offset: 2px; }

/* ── The schedule ── */
.sp-sched-list { list-style: none; margin: 0; padding: 0; }
.sp-sched-day {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-2xs, 10px);
  font-weight: var(--flag-weight, 600);
  letter-spacing: 1.8px; text-transform: uppercase;
  color: var(--color-text-secondary, #5b5148);
  background: var(--color-surface-sunken, #f5e4c4);
  padding: 7px 18px;
}
.sp-sched-row {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  gap: 12px; align-items: baseline;
  padding: 10px 18px;
  border-left: 5px solid var(--school, #8C8C8C);
  border-bottom: 1px solid rgba(196, 98, 45, .12);
  box-shadow: inset 1px 0 0 color-mix(in srgb, var(--school, #8C8C8C) 62%, var(--ink));
}
.sp-sched-row:last-child { border-bottom: 0; }
.sp-sched-time {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-xs);
  font-variant-numeric: tabular-nums;
  color: var(--color-text-secondary, #5b5148);
  white-space: nowrap;
}
.sp-sched-match { min-width: 0; }
.sp-sched-sport {
  display: block;
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-2xs, 10px);
  font-weight: var(--flag-weight, 600);
  letter-spacing: 1.4px; text-transform: uppercase;
  color: var(--tone-ink, var(--terracotta));
}
.sp-sched-teams {
  display: block;
  font-family: 'Noto Serif', Georgia, serif;
  font-size: 14.5px; line-height: 1.3; color: var(--ink);
  margin-top: 2px;
}
.sp-sched-teams em {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-style: normal; font-size: var(--text-xs);
  text-transform: lowercase;
  color: var(--color-text-secondary, #5b5148);
  margin: 0 3px;
}

/* ══ The towns ══
   One block each: the story that mattered there, two more behind it, and
   the two numbers anyone came for. The school's colour runs down the
   left edge so the four blocks read as four places, not four repeats. */
.sp-towns-head { margin-top: 8px; }

/* Down here each town gets both of its colours: the edge is the pair, split
   half and half, and the nameplate is the first over a rule of the second.
   Joseph City and Snowflake are both blue and white, so the order of the two
   is the only thing telling them apart — which is why it is the order the
   school itself uses rather than anything computed. */
.sp-city {
  position: relative;
  border: 1px solid var(--color-border, rgba(196,98,45,.2));
  border-left: 0;
  padding-left: 7px;
  background: var(--color-surface, #fff9ea);
  margin-bottom: 24px;
}
.sp-city::before {
  content: '';
  position: absolute;
  left: 0; top: -1px; bottom: -1px;
  width: 7px;
  background: linear-gradient(
    to bottom,
    var(--school, #8C8C8C) 0 50%,
    var(--school-2, var(--school, #8C8C8C)) 50% 100%
  );
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--school, #8C8C8C) 62%, var(--ink));
}
.sp-city-bar {
  display: flex; align-items: baseline; gap: 12px;
  padding: 13px 20px;
  background: var(--school, #8C8C8C);
  color: var(--school-ink, #fff);
  border-bottom: 4px solid var(--school-2, transparent);
}
.sp-city-name { margin: 0; font-family: 'Noto Serif', Georgia, serif; font-size: 21px; font-weight: 800; line-height: 1; }
.sp-city-name a { color: inherit; text-decoration: none; }
.sp-city-mascot {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-xs);
  font-weight: var(--flag-weight, 600);
  letter-spacing: 2px; text-transform: uppercase;
  opacity: .82;
}
.sp-city-more {
  margin-left: auto;
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-2xs, 10px);
  font-weight: var(--flag-weight, 600);
  letter-spacing: 1.6px; text-transform: uppercase;
  color: inherit; text-decoration: none; opacity: .85;
}
.sp-city-more:hover { opacity: 1; text-decoration: underline; }

.sp-city-body {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
  gap: 24px;
  padding: 20px;
}
.sp-city-lead { display: block; text-decoration: none; color: inherit; min-width: 0; }
.sp-city-lead-img {
  display: block; aspect-ratio: 16 / 9; overflow: hidden;
  background: var(--color-surface-sunken, #f5e4c4);
  margin-bottom: 12px;
}
.sp-city-lead-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sp-city-kicker {
  display: block;
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-2xs, 10px);
  font-weight: var(--flag-weight, 600);
  letter-spacing: 2px; text-transform: uppercase;
  color: var(--tone-ink, var(--terracotta));
  margin-bottom: 5px;
}
.sp-city-headline {
  display: block;
  font-family: 'Noto Serif', Georgia, serif;
  font-size: 23px; font-weight: 700; line-height: 1.2;
  color: var(--ink);
}
.sp-city-lead:hover .sp-city-headline { color: var(--tone-ink, var(--terracotta)); }
.sp-city-deck {
  display: block;
  font-family: 'Libre Baskerville', Georgia, serif;
  font-size: 14px; line-height: 1.5;
  color: var(--color-text-secondary, #5A3E2B);
  margin-top: 7px;
}
.sp-city-date {
  display: block;
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-2xs, 10px);
  letter-spacing: 1.2px; text-transform: uppercase;
  color: var(--color-text-secondary, #5b5148);
  margin-top: 8px;
}

.sp-city-side { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.sp-city-more-list { list-style: none; margin: 0; padding: 0; }
.sp-city-more-list li + li { border-top: 1px solid rgba(196, 98, 45, .14); }
.sp-city-more-list a { display: block; padding: 9px 0; text-decoration: none; color: inherit; }
.sp-city-more-list a:hover .sp-city-more-title { color: var(--tone-ink, var(--terracotta)); }
.sp-city-more-list li:first-child a { padding-top: 0; }
.sp-city-more-title {
  font-family: 'Noto Serif', Georgia, serif;
  font-size: 15px; font-weight: 700; line-height: 1.28;
  color: var(--ink);
}
.sp-city-more-list .sp-city-date { margin-top: 4px; }

/* The two numbers, set like a scoreboard rather than a sentence. */
.sp-city-data {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  margin: 0; margin-top: auto;
  background: var(--color-border, rgba(196,98,45,.2));
  border: 1px solid var(--color-border, rgba(196,98,45,.2));
}
.sp-city-datum { background: var(--color-surface-sunken, #f5e4c4); padding: 11px 13px; }
.sp-city-datum dt {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-2xs, 10px);
  font-weight: var(--flag-weight, 600);
  letter-spacing: 1.8px; text-transform: uppercase;
  color: var(--color-text-secondary, #5b5148);
  margin-bottom: 5px;
}
.sp-city-datum dd { margin: 0; }
.sp-city-datum b {
  display: block;
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: 19px; font-weight: 700;
  font-variant-numeric: tabular-nums;
  line-height: 1.1; color: var(--ink);
}
.sp-city-datum b.is-win  { color: var(--color-feedback-success, #2A7A3A); }
.sp-city-datum b.is-loss { color: var(--color-text-secondary, #5b5148); }
.sp-city-datum dd span {
  display: block;
  font-family: 'Noto Serif', Georgia, serif;
  font-size: 14px; line-height: 1.25; color: var(--ink);
  margin-top: 3px;
}
.sp-city-datum dd small {
  display: block;
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-2xs, 10px);
  letter-spacing: 1px; text-transform: uppercase;
  color: var(--color-text-secondary, #5b5148);
  margin-top: 4px;
}


/* ══ Responsive ══
   This sheet shipped with no breakpoints, so every fixed sidebar held its
   width all the way down and crushed the story column beside it — which is
   why the lead photograph rendered as a 165px stamp with its headline piled
   on top. Each fixed column drops below its neighbour instead. */
@media (max-width: 1100px) {
  .sports-hero { grid-template-columns: minmax(0, 1fr); }
  .sports-sidebar { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; align-items: start; }
  .sp-deck { grid-template-columns: minmax(0, 1fr); }
  .sp-city-body { grid-template-columns: minmax(0, 1fr); gap: 18px; }
}

@media (max-width: 680px) {
  .sports-banner-inner { flex-direction: column; align-items: flex-start; gap: 14px; }
  /* Four pills do not fit on one phone line; let them fall onto a second
     rather than run off the edge of the banner. */
  .sports-banner-teams { flex-wrap: wrap; }
  .sports-hero-subs { grid-template-columns: minmax(0, 1fr); }
  .sports-hero-sub + .sports-hero-sub {
    border-left: 0;
    border-top: 1px solid var(--color-border, rgba(196,98,45,.2));
  }
  .sports-sidebar { grid-template-columns: minmax(0, 1fr); }
  .sp-city-bar { flex-wrap: wrap; gap: 8px 12px; }
  .sp-city-more { margin-left: 0; flex-basis: 100%; }
  .sp-city-body { padding: 16px; }
  .sp-city-headline { font-size: 20px; }
  .sp-stat-align { display: none; }
  /* 72px of side padding inside a 360px phone leaves no line to read. */
  .feature-hero-content { padding: 20px 18px; }
  .sp-stat thead th, .sp-stat td.sp-stat-n { padding-left: 6px; padding-right: 12px; }
  .sp-stat-team { padding-left: 12px; }
}

/* A reader who asked for less motion gets a card that simply sits still;
   the arrows and dots still work. */
@media (prefers-reduced-motion: reduce) {
  .sp-rot-track { transition: none; }
}

/* "Presented by" badge inside the near-black sports banner */
.sports-banner-sponsor { margin-top: 8px; --pdt-sponsor-ink: rgba(255,255,255,.65); --pdt-sponsor-link: #fff; }
.sports-banner-sponsor:empty { display: none; }

/* ══ The game schedule — /sports/schedule/ (sports-schedule.php) ══
   Its own calendar, read only. Same ink and school colours as the section
   front's schedule card, opened out to a month. */
.sps { padding-bottom: 48px; }
.sps-head {
  display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between;
  gap: 18px 32px;
  margin: 18px 0 22px; padding-bottom: 18px;
  border-bottom: 3px solid var(--color-section-sports, #E8A820);
}
.sps-title {
  font-family: 'Playfair Display', Georgia, serif;
  font-size: clamp(30px, 4.4vw, 44px); line-height: 1.05;
  color: var(--ink); margin: 0;
}
.sps-dek {
  font-family: 'Libre Baskerville', Georgia, serif; font-style: italic;
  font-size: 15px; line-height: 1.5; max-width: 560px;
  color: var(--color-text-secondary, #5b5148); margin: 8px 0 0;
}
.sps-subscribe { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; }
.sps-btn {
  display: inline-flex; align-items: center; gap: 8px;
  background: var(--tone-ink, var(--color-section-sports-ink, #966A0C));
  color: #fff;
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-xs); font-weight: 700;
  letter-spacing: 1.4px; text-transform: uppercase;
  padding: 10px 16px; text-decoration: none;
}
.sps-btn:hover, .sps-btn:focus-visible { background: var(--ink); color: #fff; }
.sps-subscribe-note {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-2xs, 10.5px); color: var(--color-text-secondary, #5b5148);
}
.sps-subscribe-note a { color: inherit; }

.sps-schools { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.sps-pill {
  display: inline-flex; align-items: center;
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-xs); font-weight: 600;
  letter-spacing: .6px;
  color: var(--ink); text-decoration: none;
  background: var(--color-surface, #fff9ea);
  border: 1px solid var(--color-border, rgba(196,98,45,.25));
  padding: 7px 14px 7px 10px;
}
.sps-pill .sp-chip {
  display: inline-block; width: 10px; height: 10px; margin-right: 8px;
  background: var(--school, #8C8C8C);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--school, #8C8C8C) 62%, var(--ink));
}
.sps-pill:first-child { padding-left: 14px; }
.sps-pill:hover { border-color: var(--ink); }
.sps-pill.is-on { background: var(--ink); color: #fff; border-color: var(--ink); }
.sps-pill:focus-visible { outline: 2px solid var(--tone-ink, var(--terracotta)); outline-offset: 2px; }

.sps-bar {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 12px 24px;
  padding: 12px 0; margin-bottom: 8px;
  border-top: 1px solid var(--color-border, rgba(196,98,45,.2));
  border-bottom: 1px solid var(--color-border, rgba(196,98,45,.2));
}
.sps-sport { display: flex; align-items: center; gap: 10px; }
.sps-sport label {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-2xs, 10.5px); font-weight: 600;
  letter-spacing: 1.6px; text-transform: uppercase;
  color: var(--color-text-secondary, #5b5148);
}
.sps-sport select, .sps-go {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif); font-size: 14px;
  padding: 7px 10px; color: var(--ink);
  background: var(--color-surface, #fff9ea);
  border: 1px solid var(--color-border, rgba(196,98,45,.35));
}
.sps-months { display: flex; align-items: center; gap: 10px; }
.sps-month {
  font-family: 'Playfair Display', Georgia, serif; font-size: 20px;
  color: var(--ink); min-width: 9.5em; text-align: center;
}
.sps-month-nav {
  display: inline-grid; place-items: center;
  width: 34px; height: 34px; font-size: 22px; line-height: 1;
  color: var(--ink); text-decoration: none;
  border: 1px solid var(--color-border, rgba(196,98,45,.35));
}
.sps-month-nav:hover { background: var(--ink); color: #fff; }
.sps-today {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-xs); font-weight: 600;
  color: var(--tone-ink, var(--terracotta));
}

.sps-day { scroll-margin-top: 90px; }
.sps-day-label {
  display: flex; align-items: baseline; gap: 10px;
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-xs); font-weight: 700;
  letter-spacing: 1.8px; text-transform: uppercase;
  color: var(--ink);
  background: var(--color-surface-sunken, #f5e4c4);
  padding: 9px 14px; margin: 18px 0 0;
}
.sps-day-label span { font-weight: 500; color: var(--color-text-secondary, #5b5148); }
.sps-day-label em {
  font-style: normal; margin-left: auto;
  background: var(--color-section-sports, #E8A820); color: var(--ink);
  padding: 2px 8px; letter-spacing: 1.2px;
}
.sps-day.is-past .sps-day-label { background: transparent; border-bottom: 1px solid var(--color-border, rgba(196,98,45,.2)); }
.sps-list { list-style: none; margin: 0; padding: 0; }
.sps-row {
  display: grid;
  grid-template-columns: 76px minmax(0, 1fr) auto;
  gap: 14px; align-items: baseline;
  padding: 12px 14px;
  border-left: 5px solid var(--school, #8C8C8C);
  border-bottom: 1px solid rgba(196, 98, 45, .12);
  box-shadow: inset 1px 0 0 color-mix(in srgb, var(--school, #8C8C8C) 62%, var(--ink));
  background: var(--color-surface, #fff9ea);
}
.sps-time {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-sm, 13px); font-variant-numeric: tabular-nums;
  color: var(--color-text-secondary, #5b5148); white-space: nowrap;
}
.sps-match { min-width: 0; }
.sps-teams {
  display: block;
  font-family: 'Noto Serif', Georgia, serif;
  font-size: 16px; line-height: 1.3; color: var(--ink); margin-top: 2px;
}
.sps-teams em {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-style: normal; font-size: var(--text-xs);
  color: var(--color-text-secondary, #5b5148); margin: 0 4px;
}
.sps-teams .is-win, .sps-teams .sps-ours { font-weight: 700; }
.sps-venue {
  display: block; margin-top: 3px;
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-2xs, 11px); color: var(--color-text-secondary, #5b5148);
}
.sps-result {
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums;
  color: var(--ink); white-space: nowrap; text-align: right;
}
.sps-result small {
  display: block; font-size: var(--text-2xs, 10px); font-weight: 500;
  letter-spacing: 1.2px; text-transform: uppercase;
  color: var(--color-text-secondary, #5b5148);
}
.sps-result .sps-pending { letter-spacing: .4px; text-transform: none; font-style: italic; }
.sps-wl {
  display: inline-grid; place-items: center;
  width: 22px; height: 22px; margin-right: 6px;
  font-size: 12px; color: #fff; background: #6b6259;
}
.sps-wl-w { background: #2f6b3a; }
.sps-wl-l { background: #8a2b1e; }

.sps-empty {
  font-family: 'Libre Baskerville', Georgia, serif; font-style: italic;
  font-size: 16px; color: var(--color-text-secondary, #5b5148);
  padding: 40px 0;
}
.sps-empty a { font-style: normal; }
.sps-note {
  margin-top: 36px; padding: 18px 20px;
  border: 1px solid var(--color-border, rgba(196,98,45,.25));
  border-left: 4px solid var(--color-section-sports, #E8A820);
  background: var(--color-surface, #fff9ea);
  font-family: 'Noto Serif', Georgia, serif; font-size: 14.5px; line-height: 1.55;
  color: var(--ink);
}
.sps-note p { margin: 0; }
.sps-note p + p { margin-top: 8px; }

/* The section front's schedule card points here. */
.sp-sched-more {
  display: block; padding: 11px 18px;
  border-top: 1px solid var(--color-border, rgba(196,98,45,.18));
  font-family: var(--font-accent, 'Libre Franklin', sans-serif);
  font-size: var(--text-xs); font-weight: 700;
  letter-spacing: 1.4px; text-transform: uppercase;
  color: var(--tone-ink, var(--terracotta)); text-decoration: none;
}
.sp-sched-more:hover { background: var(--color-surface-sunken, #f5e4c4); }

@media (max-width: 680px) {
  .sps-row { grid-template-columns: 58px minmax(0, 1fr); gap: 4px 12px; }
  .sps-result { grid-column: 2; text-align: left; }
  .sps-result small { display: inline; margin-left: 6px; }
  .sps-month { min-width: 0; font-size: 18px; }
  .sps-bar { flex-direction: column; align-items: stretch; }
  .sps-months { justify-content: space-between; }
}
