/* GENERATED by tools/build.js from tokens.json. Do not edit by hand. Prefix: --hp-.
   Default theme: Night Game (dark). Locked groups (status/tally/meter) must never be overridden by themes. */
:root {
  color-scheme: dark;

  /* Palette (core, never themed) */
  --hp-color-palette-black: #000000;
  --hp-color-palette-white: #FFFFFF;
  --hp-color-palette-ink-100: #F5F5F7; /* Primary text */
  --hp-color-palette-ink-300: #A1A1A8; /* Secondary text (matches overlay --hp-muted) */
  --hp-color-palette-ink-400: #9A9AA1; /* Tertiary text */
  --hp-color-palette-ink-500: #7C7C82; /* Strong border (>=3:1 on surfaces 1-2) */
  --hp-color-palette-ink-600: #4B4B4F; /* Disabled text / ticks (matches overlay --hp-dim) */
  --hp-color-palette-ink-700: #333335; /* Border (matches overlay --hp-line) */
  --hp-color-palette-ink-800: #2A2A2E; /* Surface 3 / meter track */
  --hp-color-palette-ink-850: #202024; /* Surface 2 */
  --hp-color-palette-ink-900: #161618; /* Surface 1 (brand) */
  --hp-color-palette-ink-950: #0E0E10; /* Overlay 'band' / sunken */
  --hp-color-palette-amber-50: #FFF4DB;
  --hp-color-palette-amber-200: #FFD479;
  --hp-color-palette-amber-300: #FFC456; /* Hover (lighter on dark) */
  --hp-color-palette-amber-500: #FFB020; /* Homeplayr amber. On-screen brand accent. */
  --hp-color-palette-amber-600: #E69A00; /* Pressed */
  --hp-color-palette-amber-700: #B87800;
  --hp-color-palette-amber-800: #6B4A0A;
  --hp-color-palette-amber-900: #3A2807;
  --hp-color-palette-amber-950: #241A06; /* Subtle fill */
  --hp-color-palette-logo-gold: #DA9D1E;
  --hp-color-palette-red-400: #FF6B63;
  --hp-color-palette-red-500: #FF3B30;
  --hp-color-palette-red-600: #D92D20;
  --hp-color-palette-red-900: #3B0F0C;
  --hp-color-palette-crimson-400: #FF7A90;
  --hp-color-palette-crimson-500: #FF4D6D;
  --hp-color-palette-crimson-600: #D6204A;
  --hp-color-palette-crimson-900: #3A0C18;
  --hp-color-palette-green-400: #5EE0A0;
  --hp-color-palette-green-500: #3DD68C;
  --hp-color-palette-green-600: #1F9D62;
  --hp-color-palette-green-900: #0C2E1D;
  --hp-color-palette-orange-500: #FF7A1A;
  --hp-color-palette-orange-900: #3A1C08;
  --hp-color-palette-yellow-500: #FFD60A;
  --hp-color-palette-blue-500: #3FA7FF; /* Default away team primary (matches overlay) */
  --hp-color-palette-blue-900: #0A3A66;
  --hp-color-palette-coral-500: #E5484D; /* Default home team primary (matches overlay) */
  --hp-color-palette-coral-900: #5C1417;

  /* Semantic color (themeable via data-theme / profile) */
  --hp-color-bg: var(--hp-color-palette-black); /* App background (Night Game black) */
  --hp-color-surface-1: var(--hp-color-palette-ink-900); /* Cards, panels, tiles */
  --hp-color-surface-2: var(--hp-color-palette-ink-850); /* Raised: inputs, tabs, nested cards */
  --hp-color-surface-3: var(--hp-color-palette-ink-800); /* Menus, popovers, pressed surfaces */
  --hp-color-surface-sunken: var(--hp-color-palette-ink-950); /* Wells, overlay band */
  --hp-color-border: var(--hp-color-palette-ink-700); /* Decorative card/panel outline (no 3:1 requirement) */
  --hp-color-border-strong: var(--hp-color-palette-ink-500); /* Functional UI boundary (inputs, unchecked controls): >=3:1 */
  --hp-color-divider: var(--hp-color-palette-ink-800); /* Hairline separators */
  --hp-color-text-primary: var(--hp-color-palette-ink-100);
  --hp-color-text-secondary: var(--hp-color-palette-ink-300);
  --hp-color-text-tertiary: var(--hp-color-palette-ink-400); /* Captions/timestamps. Use on bg, surface 1-2 only (4.5:1). */
  --hp-color-text-disabled: var(--hp-color-palette-ink-600); /* Disabled only (WCAG-exempt); never for information. */
  --hp-color-text-on-accent: var(--hp-color-palette-black); /* Text/icons on solid accent */
  --hp-color-text-link: var(--hp-color-accent-text);
  --hp-color-accent: var(--hp-color-palette-amber-500); /* Primary action, selection, highlights */
  --hp-color-accent-hover: var(--hp-color-palette-amber-300);
  --hp-color-accent-pressed: var(--hp-color-palette-amber-600);
  --hp-color-accent-subtle: var(--hp-color-palette-amber-950); /* Tinted fill (selected row, info banner) */
  --hp-color-accent-subtle-border: var(--hp-color-palette-amber-800);
  --hp-color-accent-text: var(--hp-color-palette-amber-500); /* Accent used as text/icon on dark surfaces (>=4.5:1) */
  --hp-color-focus-ring: var(--hp-color-palette-amber-200); /* Focus outline (2px, 2px offset) */
  --hp-team-away-primary: var(--hp-color-palette-blue-500);
  --hp-team-away-secondary: var(--hp-color-palette-blue-900);
  --hp-team-away-accent: var(--hp-color-palette-amber-500);
  --hp-team-away-text: var(--hp-color-palette-black); /* Text on primary (>=4.5:1) */
  --hp-team-away-primary-safe: var(--hp-team-away-primary);
  --hp-team-home-primary: var(--hp-color-palette-coral-500);
  --hp-team-home-secondary: var(--hp-color-palette-coral-900);
  --hp-team-home-accent: var(--hp-color-palette-amber-500);
  --hp-team-home-text: var(--hp-color-palette-black);
  --hp-team-home-primary-safe: var(--hp-team-home-primary);
  --hp-host-primary: var(--hp-color-accent);
  --hp-host-secondary: var(--hp-color-surface-3);
  --hp-host-accent: var(--hp-color-accent);
  --hp-host-text: var(--hp-color-text-on-accent);
  --hp-host-primary-safe: var(--hp-host-primary);

  /* LOCKED: status, tally, meter (never themed) */
  --hp-color-status-live: var(--hp-color-palette-red-500); /* Live dot/icon/text on dark */
  --hp-color-status-live-solid: var(--hp-color-palette-red-600); /* LIVE badge fill */
  --hp-color-status-live-on-solid: var(--hp-color-palette-white);
  --hp-color-status-live-subtle: var(--hp-color-palette-red-900);
  --hp-color-status-offline: var(--hp-color-palette-ink-400);
  --hp-color-status-offline-solid: var(--hp-color-palette-ink-600);
  --hp-color-status-offline-on-solid: var(--hp-color-palette-white);
  --hp-color-status-offline-subtle: var(--hp-color-palette-ink-850);
  --hp-color-status-warn: var(--hp-color-palette-orange-500);
  --hp-color-status-warn-solid: var(--hp-color-palette-orange-500);
  --hp-color-status-warn-on-solid: var(--hp-color-palette-black);
  --hp-color-status-warn-subtle: var(--hp-color-palette-orange-900);
  --hp-color-status-ok: var(--hp-color-palette-green-500);
  --hp-color-status-ok-solid: var(--hp-color-palette-green-500);
  --hp-color-status-ok-on-solid: var(--hp-color-palette-black);
  --hp-color-status-ok-subtle: var(--hp-color-palette-green-900);
  --hp-color-status-error: var(--hp-color-palette-crimson-500); /* Crimson/pink-red so it differs from live red; pair with error icon */
  --hp-color-status-error-solid: var(--hp-color-palette-crimson-600);
  --hp-color-status-error-on-solid: var(--hp-color-palette-white);
  --hp-color-status-error-subtle: var(--hp-color-palette-crimson-900);
  --hp-color-tally-program: #FF1A1A; /* On-air camera */
  --hp-color-tally-program-glow: #FF1A1A66;
  --hp-color-tally-preview: #00E050; /* Next/preview camera */
  --hp-color-tally-preview-glow: #00E05066;
  --hp-color-tally-off: var(--hp-color-palette-ink-800); /* Unlit lamp */
  --hp-color-meter-audio-low: #30D158; /* Below -18 dBFS */
  --hp-color-meter-audio-mid: #FFD60A; /* -18..-6 dBFS */
  --hp-color-meter-audio-high: #FF9F0A; /* -6..-1 dBFS (orange-red approach) */
  --hp-color-meter-audio-peak: #FFFFFF; /* Peak-hold tick */
  --hp-color-meter-audio-clip: #FF1A1A; /* 0 dBFS clip latch */
  --hp-color-meter-audio-track: var(--hp-color-palette-ink-800);
  --hp-color-meter-audio-tick: var(--hp-color-palette-ink-600);
  --hp-color-meter-network-good: var(--hp-color-palette-green-500);
  --hp-color-meter-network-fair: var(--hp-color-palette-yellow-500);
  --hp-color-meter-network-poor: #FF453A;
  --hp-color-meter-network-none: var(--hp-color-palette-ink-600);
  --hp-color-meter-network-track: var(--hp-color-palette-ink-800);

  /* Broadcast profile slots (team/host) + logo slots */
  --hp-logo-app: none; /* Homeplayr mark (approved logo/vector set) */
  --hp-logo-team-away: none;
  --hp-logo-team-home: none;
  --hp-logo-host: none;
  --hp-logo-sponsor: none;

  /* Fonts */
  --hp-font-ui: Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; /* UI text. Inter (OFL). */
  --hp-font-display: "Barlow Condensed", "Arial Narrow", Impact, sans-serif;
  --hp-font-mono: "JetBrains Mono", "IBM Plex Mono", ui-monospace, Menlo, monospace; /* Timecodes, bitrate, IPs, data. JetBrains Mono (OFL). */
  --hp-font-weight-regular: 400;
  --hp-font-weight-medium: 500;
  --hp-font-weight-semibold: 600;
  --hp-font-weight-bold: 700;
  --hp-font-weight-extrabold: 800;

  /* Type scale factors */
  --hp-type-scale-phone: 1;
  --hp-type-scale-tablet: 1.0625;
  --hp-type-scale-desktop: 1;
  --hp-type-scale-tv: 1.5;

  /* Spacing */
  --hp-space-0: 0px;
  --hp-space-1: 4px;
  --hp-space-2: 8px;
  --hp-space-3: 12px;
  --hp-space-4: 16px;
  --hp-space-5: 20px;
  --hp-space-6: 24px;
  --hp-space-8: 32px;
  --hp-space-10: 40px;
  --hp-space-12: 48px;
  --hp-space-16: 64px;
  --hp-space-20: 80px;
  --hp-space-half: 2px;

  /* Radius */
  --hp-radius-none: 0px;
  --hp-radius-xs: 2px;
  --hp-radius-sm: 4px;
  --hp-radius-md: 8px;
  --hp-radius-lg: 12px;
  --hp-radius-xl: 16px;
  --hp-radius-pill: 999px;

  /* Border widths */
  --hp-border-width-hairline: 1px;
  --hp-border-width-thin: 1px;
  --hp-border-width-medium: 2px;
  --hp-border-width-thick: 4px; /* Tally border */
  --hp-border-width-focus: 2px;
  --hp-border-width-focus-offset: 2px;

  /* Opacity */
  --hp-opacity-disabled: 0.38;
  --hp-opacity-hover: 0.08;
  --hp-opacity-pressed: 0.12;
  --hp-opacity-selected: 0.16;
  --hp-opacity-scrim: 0.6;
  --hp-opacity-subtle: 0.14;

  /* Elevation (surface + border first, shadow for floating layers) */
  --hp-elevation-0: none; /* Flat on bg. surface: bg */
  --hp-elevation-1: none; /* Cards/tiles: surface-1 + border */
  --hp-elevation-2: 0px 2px 6px 0px #00000099; /* Raised: surface-2 + border + soft shadow */
  --hp-elevation-3: 0px 8px 24px 0px #000000B3, inset 0px 1px 0px 0px #FFFFFF0F; /* Menus/popovers: surface-3 + top highlight */
  --hp-elevation-4: 0px 16px 48px 0px #000000CC, inset 0px 1px 0px 0px #FFFFFF14; /* Modals/sheets over scrim */

  /* Z-index */
  --hp-z-base: 0;
  --hp-z-raised: 10;
  --hp-z-sticky: 100;
  --hp-z-dropdown: 200;
  --hp-z-overlay: 300;
  --hp-z-modal: 400;
  --hp-z-toast: 500;
  --hp-z-tooltip: 600;

  /* Motion */
  --hp-duration-instant: 0ms;
  --hp-duration-fast: 100ms;
  --hp-duration-base: 160ms;
  --hp-duration-moderate: 240ms;
  --hp-duration-slow: 360ms;
  --hp-duration-pulse: 1400ms; /* Live-dot pulse loop (disabled under reduced motion) */
  --hp-ease-standard: cubic-bezier(0.2, 0, 0, 1); /* State changes, movement within screen */
  --hp-ease-enter: cubic-bezier(0, 0, 0, 1); /* Elements entering (decelerate) */
  --hp-ease-exit: cubic-bezier(0.3, 0, 1, 1); /* Elements leaving (accelerate) */
  --hp-ease-linear: cubic-bezier(0, 0, 1, 1);

  /* Icons */
  --hp-icon-set: "Material Symbols Rounded";
  --hp-icon-size-xs: 16px;
  --hp-icon-size-sm: 20px;
  --hp-icon-size-md: 24px;
  --hp-icon-size-lg: 32px;
  --hp-icon-weight-regular: 400;
  --hp-icon-weight-light: 300;
  --hp-icon-weight-bold: 500;
  --hp-icon-stroke: 1.75px; /* For stroke icons (Lucide/custom SVG): 1.75px at 24px grid */

  /* Touch targets */
  --hp-touch-min: 44px; /* Web/phone minimum hit target (WCAG 2.5.8 target 24, Apple 44) */
  --hp-touch-min-flutter: 48px; /* Flutter/Material dp minimum */
  --hp-touch-comfortable: 56px;
  --hp-touch-scorer: 72px; /* Large hit target: scorer pad buttons (gloves, sun glare, one hand) */
  --hp-touch-scorer-primary: 96px; /* Ball / Strike / Out / Hit primary pad */
  --hp-touch-gap-min: 8px; /* Min spacing between adjacent targets (12px between scorer buttons) */

  /* Breakpoints (reference only; CSS media queries cannot use vars) */
  --hp-bp-phone: 0px;
  --hp-bp-tablet: 600px;
  --hp-bp-desktop: 1024px;
  --hp-bp-tv: 1600px;

  /* Broadcast profile slots */

  /* Type styles (size scales with --hp-type-scale) */
  --hp-type-display-family: var(--hp-font-display);
  --hp-type-display-size: calc(40px * var(--hp-type-scale));
  --hp-type-display-line: 1.1;
  --hp-type-display-weight: 800;
  --hp-type-display-tracking: 0.01em;
  --hp-type-display-transform: uppercase;
  --hp-type-display-style: italic;
  --hp-type-display-features: normal;
  --hp-type-h1-family: var(--hp-font-display);
  --hp-type-h1-size: calc(30px * var(--hp-type-scale));
  --hp-type-h1-line: 1.15;
  --hp-type-h1-weight: 700;
  --hp-type-h1-tracking: 0.01em;
  --hp-type-h1-transform: uppercase;
  --hp-type-h1-style: normal;
  --hp-type-h1-features: normal;
  --hp-type-h2-family: var(--hp-font-display);
  --hp-type-h2-size: calc(24px * var(--hp-type-scale));
  --hp-type-h2-line: 1.2;
  --hp-type-h2-weight: 700;
  --hp-type-h2-tracking: 0.015em;
  --hp-type-h2-transform: uppercase;
  --hp-type-h2-style: normal;
  --hp-type-h2-features: normal;
  --hp-type-h3-family: var(--hp-font-ui);
  --hp-type-h3-size: calc(18px * var(--hp-type-scale));
  --hp-type-h3-line: 1.3;
  --hp-type-h3-weight: 600;
  --hp-type-h3-tracking: -0.005em;
  --hp-type-h3-transform: none;
  --hp-type-h3-style: normal;
  --hp-type-h3-features: normal;
  --hp-type-h4-family: var(--hp-font-ui);
  --hp-type-h4-size: calc(16px * var(--hp-type-scale));
  --hp-type-h4-line: 1.375;
  --hp-type-h4-weight: 600;
  --hp-type-h4-tracking: 0em;
  --hp-type-h4-transform: none;
  --hp-type-h4-style: normal;
  --hp-type-h4-features: normal;
  --hp-type-body-lg-family: var(--hp-font-ui);
  --hp-type-body-lg-size: calc(17px * var(--hp-type-scale));
  --hp-type-body-lg-line: 1.45;
  --hp-type-body-lg-weight: 400;
  --hp-type-body-lg-tracking: 0em;
  --hp-type-body-lg-transform: none;
  --hp-type-body-lg-style: normal;
  --hp-type-body-lg-features: normal;
  --hp-type-body-family: var(--hp-font-ui);
  --hp-type-body-size: calc(15px * var(--hp-type-scale));
  --hp-type-body-line: 1.47;
  --hp-type-body-weight: 400;
  --hp-type-body-tracking: 0em;
  --hp-type-body-transform: none;
  --hp-type-body-style: normal;
  --hp-type-body-features: normal;
  --hp-type-body-sm-family: var(--hp-font-ui);
  --hp-type-body-sm-size: calc(13px * var(--hp-type-scale));
  --hp-type-body-sm-line: 1.4;
  --hp-type-body-sm-weight: 400;
  --hp-type-body-sm-tracking: 0.005em;
  --hp-type-body-sm-transform: none;
  --hp-type-body-sm-style: normal;
  --hp-type-body-sm-features: normal;
  --hp-type-label-family: var(--hp-font-ui);
  --hp-type-label-size: calc(13px * var(--hp-type-scale));
  --hp-type-label-line: 1.25;
  --hp-type-label-weight: 600;
  --hp-type-label-tracking: 0.04em;
  --hp-type-label-transform: uppercase;
  --hp-type-label-style: normal;
  --hp-type-label-features: normal;
  --hp-type-caption-family: var(--hp-font-ui);
  --hp-type-caption-size: calc(12px * var(--hp-type-scale));
  --hp-type-caption-line: 1.33;
  --hp-type-caption-weight: 400;
  --hp-type-caption-tracking: 0.01em;
  --hp-type-caption-transform: none;
  --hp-type-caption-style: normal;
  --hp-type-caption-features: normal;
  --hp-type-numeric-family: var(--hp-font-display);
  --hp-type-numeric-size: calc(32px * var(--hp-type-scale));
  --hp-type-numeric-line: 1;
  --hp-type-numeric-weight: 700;
  --hp-type-numeric-tracking: 0.01em;
  --hp-type-numeric-transform: none;
  --hp-type-numeric-style: normal;
  --hp-type-numeric-features: "tnum";
  --hp-type-numeric-lg-family: var(--hp-font-display);
  --hp-type-numeric-lg-size: calc(64px * var(--hp-type-scale));
  --hp-type-numeric-lg-line: 0.95;
  --hp-type-numeric-lg-weight: 800;
  --hp-type-numeric-lg-tracking: 0em;
  --hp-type-numeric-lg-transform: none;
  --hp-type-numeric-lg-style: normal;
  --hp-type-numeric-lg-features: "tnum";
  --hp-type-mono-family: var(--hp-font-mono);
  --hp-type-mono-size: calc(13px * var(--hp-type-scale));
  --hp-type-mono-line: 1.4;
  --hp-type-mono-weight: 500;
  --hp-type-mono-tracking: 0em;
  --hp-type-mono-transform: none;
  --hp-type-mono-style: normal;
  --hp-type-mono-features: "tnum";

  /* Layout grid (active values set per breakpoint below) */
  --hp-grid-phone-columns: 4;
  --hp-grid-phone-margin: 16px;
  --hp-grid-phone-gutter: 12px;
  --hp-grid-phone-max: 100%;
  --hp-grid-tablet-columns: 8;
  --hp-grid-tablet-margin: 24px;
  --hp-grid-tablet-gutter: 16px;
  --hp-grid-tablet-max: 100%;
  --hp-grid-desktop-columns: 12;
  --hp-grid-desktop-margin: 32px;
  --hp-grid-desktop-gutter: 24px;
  --hp-grid-desktop-max: 1440px;
  --hp-grid-tv-columns: 12;
  --hp-grid-tv-margin: 48px;
  --hp-grid-tv-gutter: 32px;
  --hp-grid-tv-max: 100%;
  --hp-type-scale: var(--hp-type-scale-phone);
  --hp-grid-columns: var(--hp-grid-phone-columns);
  --hp-grid-margin: var(--hp-grid-phone-margin);
  --hp-grid-gutter: var(--hp-grid-phone-gutter);
  --hp-grid-max: var(--hp-grid-phone-max);

  /* Aliases matching overlays/src/overlay.css variable names */
  --hp-surface: var(--hp-color-surface-1);
  --hp-surface2: var(--hp-color-surface-2);
  --hp-band: var(--hp-color-surface-sunken);
  --hp-text: var(--hp-color-text-primary);
  --hp-muted: var(--hp-color-text-secondary);
  --hp-dim: var(--hp-color-text-disabled);
  --hp-line: var(--hp-color-border);
  --hp-accent: var(--hp-color-accent);
  --hp-on-accent: var(--hp-color-text-on-accent);
  --hp-away-primary: var(--hp-team-away-primary);
  --hp-away-secondary: var(--hp-team-away-secondary);
  --hp-away-accent: var(--hp-team-away-accent);
  --hp-away-text: var(--hp-team-away-text);
  --hp-home-primary: var(--hp-team-home-primary);
  --hp-home-secondary: var(--hp-team-home-secondary);
  --hp-home-accent: var(--hp-team-home-accent);
  --hp-home-text: var(--hp-team-home-text);
}

/* Device class by width; force with <html data-device="tv"> for the switcher large-screen UI */
@media (min-width: 600px) {
  :root {
    --hp-type-scale: var(--hp-type-scale-tablet);
    --hp-grid-columns: var(--hp-grid-tablet-columns);
    --hp-grid-margin: var(--hp-grid-tablet-margin);
    --hp-grid-gutter: var(--hp-grid-tablet-gutter);
    --hp-grid-max: var(--hp-grid-tablet-max);
  }
}
@media (min-width: 1024px) {
  :root {
    --hp-type-scale: var(--hp-type-scale-desktop);
    --hp-grid-columns: var(--hp-grid-desktop-columns);
    --hp-grid-margin: var(--hp-grid-desktop-margin);
    --hp-grid-gutter: var(--hp-grid-desktop-gutter);
    --hp-grid-max: var(--hp-grid-desktop-max);
  }
}
@media (min-width: 1600px) {
  :root {
    --hp-type-scale: var(--hp-type-scale-tv);
    --hp-grid-columns: var(--hp-grid-tv-columns);
    --hp-grid-margin: var(--hp-grid-tv-margin);
    --hp-grid-gutter: var(--hp-grid-tv-gutter);
    --hp-grid-max: var(--hp-grid-tv-max);
  }
}
[data-device="phone"] {
  --hp-type-scale: var(--hp-type-scale-phone);
  --hp-grid-columns: var(--hp-grid-phone-columns);
  --hp-grid-margin: var(--hp-grid-phone-margin);
  --hp-grid-gutter: var(--hp-grid-phone-gutter);
  --hp-grid-max: var(--hp-grid-phone-max);
}
[data-device="tablet"] {
  --hp-type-scale: var(--hp-type-scale-tablet);
  --hp-grid-columns: var(--hp-grid-tablet-columns);
  --hp-grid-margin: var(--hp-grid-tablet-margin);
  --hp-grid-gutter: var(--hp-grid-tablet-gutter);
  --hp-grid-max: var(--hp-grid-tablet-max);
}
[data-device="desktop"] {
  --hp-type-scale: var(--hp-type-scale-desktop);
  --hp-grid-columns: var(--hp-grid-desktop-columns);
  --hp-grid-margin: var(--hp-grid-desktop-margin);
  --hp-grid-gutter: var(--hp-grid-desktop-gutter);
  --hp-grid-max: var(--hp-grid-desktop-max);
}
[data-device="tv"] {
  --hp-type-scale: var(--hp-type-scale-tv);
  --hp-grid-columns: var(--hp-grid-tv-columns);
  --hp-grid-margin: var(--hp-grid-tv-margin);
  --hp-grid-gutter: var(--hp-grid-tv-gutter);
  --hp-grid-max: var(--hp-grid-tv-max);
}

/* Reduced motion: no pulse/slide/scale; state changes (tally, meters) still update immediately */
@media (prefers-reduced-motion: reduce) {
  :root {
    --hp-duration-fast: 0.01ms;
    --hp-duration-base: 0.01ms;
    --hp-duration-moderate: 0.01ms;
    --hp-duration-slow: 0.01ms;
    --hp-duration-pulse: 0ms;
  }
}
[data-reduced-motion="true"] {
  --hp-duration-fast: 0.01ms;
  --hp-duration-base: 0.01ms;
  --hp-duration-moderate: 0.01ms;
  --hp-duration-slow: 0.01ms;
  --hp-duration-pulse: 0ms;
}

/* ===== Theme overrides (generated from themes/*.json via tools/theme-resolver.js; contrast-safe) =====
   Apply with <html data-theme="league-metro-youth">. Team-scope themes bind to the HOME slot here; at runtime call
   HpTheme.resolveTheme(defaults, overrides, {bind:"away"|"home"}). Locked tokens in a theme file are dropped. */

/* example-league-metro-youth.json (league) */
/* resolver: color.status.live: locked or unknown token, ignored */
[data-theme="league-metro-youth"] {
  --hp-color-accent: #19C3B1;
  --hp-color-accent-hover: #4CD0C2;
  --hp-color-accent-pressed: #15A696;
  --hp-color-accent-subtle: #162E2D;
  --hp-color-accent-subtle-border: #175B55;
  --hp-color-accent-text: #19C3B1;
  --hp-color-focus-ring: #81DED4;
  --hp-host-accent: #19C3B1;
  --hp-host-primary: #19C3B1;
  --hp-host-primary-safe: #19C3B1;
  --hp-host-secondary: #0B3B37;
  --hp-radius-lg: 16px;
  --hp-radius-md: 12px;
}

/* example-team-midnight-navy.json (team) */
/* resolver: color.team.home.text: #222A3A -> #FFFFFF (text on primary needs >=4.5:1) */
/* resolver: color.team.home.primary-safe: derived #5F6779 (primary <3:1 on dark; use for outlines/stripes) */
[data-theme="team-midnight-navy"] {
  --hp-team-home-primary: #14203A;
  --hp-team-home-primary-safe: #5F6779;
  --hp-team-home-secondary: #0B1426;
  --hp-team-home-text: #FFFFFF;
}
