Design handoff steps 4-5:
- LivePage: headline live-match hero (gradient card, live ring, smallcaps
stage/venue + minute, big mono score, 3-segment in-play win-prob bar);
favorite team's live match takes the hero slot
- MatchCard: played matches as stacked team rows with the beaten side
dimmed; scheduled matches as a centered 'vs' pairing (model hint and
venue stay)
- GroupTable: Form column — tiny W/D/L bars (accent/gold/loss) computed
from finished group matches
- BracketPage: one round-selector layout on every screen size (cards in
a 2-col grid, losers dimmed), gold 'Projected champion' banner on the
Final view; what-if mode, advance bars, R32 and the third-place
play-off all unchanged
- Predict title race: leader bar, rank and percentage in gold
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A tiny typed i18n layer (no library): en.ts is the single source of UI
copy and the clarity rewrite lives there — shorter sentences, plain
words, the dense Methodology/Scoreboard copy untangled. de.ts mirrors
its shape exactly, enforced by the compiler, with placeholder parity
covered by tests. Every page now reads from the dictionary via useT();
dates flip locale through useFormat() (en-GB/de-DE); raw server values
(status, outcome, stage) map through total records.
The header gains an EN/DE toggle (persisted, defaults from the
browser language); <html lang> stays in sync.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Match cards surface the model's pre-match expectation (favoured team + win%).
- Everything is now clickable: group-table + odds-table team rows → team
profiles; bracket matches → match pages; match ↔ team cross-links.
- New /teams hub: all 48 nations ranked by title odds, linking to profiles
(reachable from Groups + every team link; back-links point here).
- Predict → Methodology link ('How & how accurate'); cohesive hover/transition
polish across cards.
- 26 tests pass; build clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>