/* GENERATED from Exacta/Theme.swift + Models.swift by gen_theme.py — DO NOT
   hand-edit above the saddlecloth block. One palette for web + iOS
   (WEB-PARITY-PLAN Phase 0; Daylight light scheme 22 Aug 2026). */
:root {
  --bg: #0b0d10;
  --card: #13171c;
  --card-hi: #1d2228;
  --chip: #171c22;
  --border: #262d36;
  --divider: #2a3340;
  --text: #e9edf2;
  --text-secondary: #8b95a3;
  --text-dim: #7c8593;
  --text-faint: #3a4350;
  --gold: #e8c468;
  --silver: #c8cdd6;
  --bronze: #cd8b52;
  --green: #27c281;
  --red: #ef4b4b;
  --red-dark: #b91c1c;
  --yellow: #facc15;
  --amber: #f59e0b;
  --blue: #6ea8dc;
  --purple: #a78bfa;
  --steam: #0ea5e9;
  --fair: #6b7280;
  --overlay-strong: #15803d;
}

/* Daylight (22 Aug) — base.html sets data-theme="light" from localStorage. */
:root[data-theme="light"] {
  --bg: #f6f4ef;
  --card: #ffffff;
  --card-hi: #f1eee5;
  --chip: #efece3;
  --border: #d9d3c7;
  --divider: #cfc9bc;
  --text: #17191d;
  --text-secondary: #555e6a;
  --text-dim: #5c6572;
  --text-faint: #aab1bb;
  --gold: #96751c;
  --silver: #6e7683;
  --bronze: #8f5a26;
  --green: #0c8a55;
  --red: #d92c2c;
  --red-dark: #a01212;
  --yellow: #a17f00;
  --amber: #b45309;
  --blue: #2f6ca8;
  --purple: #6b4fd8;
  --steam: #0270a8;
  --fair: #667085;
  --overlay-strong: #116e37;
}

/* saddlecloth chips — .pgm.sc-N per program number (matches iOS) */
.sc-1 { background:#d6332e; color:#ffffff; }
.sc-2 { background:#f4f4f4; color:#111111; }
.sc-3 { background:#1f4ed8; color:#ffffff; }
.sc-4 { background:#f5d000; color:#111111; }
.sc-5 { background:#1f9d4d; color:#ffffff; }
.sc-6 { background:#111111; color:#ffffff; }
.sc-7 { background:#f07b1d; color:#111111; }
.sc-8 { background:#f3a8c0; color:#111111; }
.sc-9 { background:#2bb6c4; color:#111111; }
.sc-10 { background:#6b3fa0; color:#ffffff; }
.sc-11 { background:#9aa0a6; color:#111111; }
.sc-12 { background:#9bd732; color:#111111; }
.sc-13 { background:#6e4a2f; color:#ffffff; }
.sc-14 { background:#7a1f3d; color:#ffffff; }
.sc-15 { background:#b3a169; color:#111111; }
.sc-16 { background:#0b7f6b; color:#ffffff; }

/* Tier-led play suggestion banner (board) — mirror of the app's discipline play banner. */
.play-banner { display:flex; align-items:center; gap:10px; border:1px solid rgba(39,194,129,0.35);
  background:var(--card); padding:10px 14px; margin-bottom:8px; }
.play-banner .play-seal { color:var(--green); font-weight:700; font-size:16px; line-height:1; }
.play-banner .play-head { color:var(--text); font-weight:600; font-size:15px; }
.play-banner .play-sub { color:var(--text-secondary); font-size:11px; font-family:var(--mono, ui-monospace,monospace); margin-top:1px; }

/* Applied Angles (runner detail) — helping/hurting rows with 1-3 relative strength bars.
   Mirrors the app's AppliedAnglesView; values are grader-exported, bars are display scaling. */
.aa-sec { font-size:9px; letter-spacing:1.5px; font-weight:600; color:var(--text-dim); margin:8px 0 4px; }
.aa-row { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:2px 0; }
.aa-label { font-size:12px; color:var(--text); }
.aa-bars { display:inline-flex; align-items:center; gap:2px; white-space:nowrap; }
.aa-bars.pos { color:var(--green); } .aa-bars.neg { color:var(--red); }
.aa-tri { font-size:8px; margin-right:2px; }
.aa-bar { width:6px; height:10px; border-radius:1px; background:currentColor; opacity:.18; }
.aa-bar.on { opacity:1; }

/* Day-wide "plays today" header on the track list (discipline parity). */
.plays-today { display:flex; align-items:center; gap:8px; margin:0 0 12px; padding:8px 12px;
  background:var(--card); border:1px solid rgba(39,194,129,.3); border-radius:10px;
  color:var(--green); font-weight:600; font-size:13px; }
.plays-today .play-seal { font-size:12px; }

/* Actual-finish W/P/S badge on the board after a race is graded (win=gold, place=silver, show=bronze). */
.fin-badge { font-size:10px; font-weight:800; letter-spacing:.3px; padding:2px 7px; border-radius:5px;
  color:#0b0d10; background:var(--text-secondary); vertical-align:middle; white-space:nowrap; }
.fin-badge.fin-win { background:var(--gold); }
.fin-badge.fin-plc { background:#c0c7d0; }
.fin-badge.fin-shw { background:#cd8b5a; color:#fff; }

/* ── MTP countdown drama (22 Aug, tester feedback) — the badge grows + breathes as post nears.
   Mirrors CountdownDrama.swift: size steps with urgency, halo widens, rate stays ≤ ~1.2 Hz.
   Honors prefers-reduced-motion. Hand-maintained (below the saddlecloth block). */
.mtp-soon { transform: scale(1.08); animation: mtp-breathe 1.6s ease-in-out infinite; }
.mtp-urgent { transform: scale(1.18); animation: mtp-breathe 0.9s ease-in-out infinite;
  box-shadow: 0 0 10px 2px color-mix(in srgb, var(--red) 45%, transparent); }
@keyframes mtp-breathe {
  0%, 100% { filter: brightness(1); }
  50% { filter: brightness(1.35); }
}
@media (prefers-reduced-motion: reduce) {
  .mtp-soon, .mtp-urgent { animation: none; }
}

