Enrich raw score-endpoint games with gameNumber from the series cache
before parsing. The score API omits gameNumber and its seriesStatus
reflects current wins, so all future games in a series computed the
same number. Now we cross-reference by game id against the cached
series-detail endpoint which includes the correct gameNumber per game.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The banner read "Day 1 of ~60" on day 2 of the playoffs because the old
anchor recorded whatever date we first polled a playoff game as Day 1.
Now round start dates come from /v1/schedule/playoff-series, so Day N
is authoritative and resets at each round boundary. Drops the noisy
"of ~60" denominator.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Rename single-letter `l` loop variables in bracket_view to satisfy E741
- Drop unused `json` import from test_playoff_cache (F401/F811)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Turn a regular-season-looking Tuesday into a full playoff experience:
- Playoff banner with round + day + series + elimination counts, gold/silver
Cup theme toggled by body.playoff-mode
- Series context on each playoff card: round chip, series score, stake badges
(GAME 7, CLINCHER, PIVOTAL), and one-line blurb
- Game 7s pin to a new Spotlight section above Live
- Playoff OT renders with SUDDEN DEATH badge and pulsing gold border
- Client-side OT notifications via bell button in the banner
- New /series/<id> drill-down with headline, next-game, and game-by-game history
- New /bracket page: 7-column desktop grid, accordion on mobile
- Day N banner count auto-anchors on first playoff scoreboard hit
- SQLite cache for bracket + per-series schedules, stale-on-failure up to 24h
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>