Scaffold the post-Cup stats screen (.agents/stats-screen-plan.md) on the
feature/stats-final-screen branch.
- loadData(): fault-tolerant optional data layers (players, player-events,
awards, keeper-stats, curiosities, all-time-baselines) via loadOptional() —
an absent/404 file defaults to empty SILENTLY (graceful degradation, keeps
the console clean), warning only on a present-but-malformed file. The 6 core
files still throw on failure.
- stats.js SECTIONS registry: a section and its sub-nav chip render only when
available(model) holds, else they are omitted from the DOM entirely (no
placeholder / no coming-soon). Overview/Teams live; the 4 future sections
stay dark until later stages.
- Sticky scrollspy sub-nav: hash-safe anchor chips (preventDefault +
scrollIntoView, never touch location.hash so the tab router does not bounce
to Home); position-based scrollspy with an explicit page-bottom -> last
section rule (robust on short pages). --header-h kept live via a
ResizeObserver so the nav sticks correctly under the variable-height header.
- flagImg() monogram fallback: a broken flag SVG becomes a 3-letter code span,
never a broken-image icon.
- i18n stats.nav* keys (EN/PT); stats.css for sub-nav / section / fallback.
No DATA_VERSION bump (no deployed data changed). No index.html change.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
findFeaturedMatch → findFeaturedMatches: returns all matches sharing the
earliest kickoff, enabling the hero to show 2+ simultaneous group-final games
(same phase, shared time/countdown). renderHero splits single-match (unchanged
DOM) vs multi-match (stacked with dividers). heroMatchupHTML extracted for
reusable matchup layout.
CSS: .hero-matchups/match/divider/time for vertical stacking and shared time.
i18n: hero.nextMatches (EN/PT) for multi-match label.
- Remove card chrome (background rect, text duplicates, accent bars) from all 17 stadium SVGs
- Crop viewBox tightly to illustration (~10px padding) and remove fixed width/height attributes
- Update .stadium-img aspect ratio from 16/9 to 4/3 to match cropped SVG ratios and prevent aggressive object-fit clipping
Replace flag SVGs for 10 fictional teams with 10 new qualifiers (BIH, CZE, RSA,
CUW, CPV, HAI, IRQ, NOR, SWE, COD). Remove 14 unused stadium SVGs for venues not
in the 16-stadium tournament roster.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>