docs: log stats sub-nav polish (edge fades + spy-suppress)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Lucas Kalil 2026-06-17 11:26:05 -03:00
parent 9c62cbd7c1
commit e0eef678b3

View file

@ -302,6 +302,11 @@ Static web app showing the FIFA World Cup 2026 (Mexico/USA/Canada, 48 teams) —
- **Merge to `master`:** the pure-UI build (AF) + this polish was merged to `master` for release. Sequence used: merge latest `master`→branch first (resolve conflicts on the branch, never on master), re-verify, then `master` ← branch (`--no-ff`). **Pushing to origin** (which triggers the Hostinger FTP deploy via `deploy.yml`) is the user's explicit final go — production.
- **Remaining (TODO §7):** Stage G (Layer-2 schema, schedule late — conflicts with daily refreshes), H (players + the deferred comparator Teams/Players toggle), I (editorial), and **a second polish J round 2** over those new features.
### Stats sub-nav polish — inner track + edge fades + spy-suppress (2026-06-17)
Two fixes on the stats sub-nav, committed directly on `master` (finalizing the release):
- **Edge fades (mirror the header tabs):** the chips now live in an inner **`.stats-subnav-track`** (the scroll container) inside the `.stats-subnav` pill. The fade `mask-image` is applied to the **track, not the pill**, so the pill's background + rounded ends stay crisp while only the chips fade at the edges. `.stats-subnav` is now `overflow:hidden` (clips the track to the pill radius); `.stats-subnav-track` is `position:relative` + `overflow-x:auto`. `updateSubnavFades(nav)` toggles `.fade-left`/`.fade-right` on the pill from the **track's** scroll metrics — called on track scroll, window resize (module-level `subnavResizeHandler`), `setActiveChip`, and init. All sub-nav JS that reads/sets horizontal scroll now targets the **track** (`scrollLeft`/`scrollWidth`), not the nav.
- **Scrollspy "jump" on chip click fixed:** clicking a chip set the active chip immediately, but the page-scroll spy then fired mid-animation (viewport still over the old section) and flipped active back → forward (a visible jump). Now a chip click sets `suppressSpyUntil = Date.now() + 700` (0 under reduced-motion = instant scroll) and `updateSpy()` early-returns while suppressed, so the clicked chip owns the active state until the smooth scroll settles, then the spy resumes. Verified: clicking Teams from Overview stays Teams through the scroll; manual scroll still tracks (records mid-page, comparator at the true bottom via the existing bottom-override).
### How to update real-world data (scores, schedule)
Follow `how-refresh-data.md` (project root). In short:
1. Edit `data/results.json` (scores/status) or `data/matches.json` (schedule, rare).