Scroll-driven animation conversion
- apply() writes nothing per frame on the supported path; the hero
squeeze, fade line and header curves all ride scroll-driven animations
on the compositor.
- Section boundaries flip via IntersectionObserver sentinels; the scroll
listener is gone from the hot path.
- The scrollbar thumb rides its own scroll-driven animation.
- @supports-not fallback keeps the previous rAF --p path verbatim, so
unsupported engines render identically.
- Curves verified exact to 1e-6 against the old path, 0.000px continuity
across boundary flips, correct retarget on resize.
Perf fixes
- Forced-layout reads pulled out of both scroll handlers.
- Resize settle-reflow: a second reflow 200ms after resize quiesces, and
the pane is observed too. This was the root cause of the fullscreen
fade-wedge and of the long-standing intermittent where rows stayed
hidden after a resize.
Glass
- backdrop-filter removed from chips and preview surfaces.
- Bar glass blur 20 -> 12.
- Choose-hero pill removed from the UI; pickArtistHero/clearArtistHero
backend is untouched and the control can be re-homed later.
Hero design (final)
- Crossfade twins are permanent. Twin blur is baked via bakeBlur()
(clamp-to-edge pad -> blur -> crop) so the frames stay pixel-aligned
with no edge fringe and no geometry scaling.
- Bloom strip retired everywhere; HeroGpuCanvas's internal bloom canvases
are hidden by one scoped rule and the component is unchanged.
- Seam is a pure mirror: the artwork's top strip flipped inside the glass
band, clipped at the bar's top line, riding the squeeze with the hero
and dissolving in lockstep on rotation.
- GPU twin overlay crossfades on rotation instead of snapping — the
incoming baked frame fades in on hero-banner-in with a 2-frame cap.
- ~930 lines of experimental variants and the perf-flag system deleted;
the surviving path is a pixel no-op against the approved configuration.
Debug overlay
- PERF/SEAM rows dropped; the overlay keeps stats plus an FPS/drops/worst
counter (Ctrl+Shift+D).
The previous .git directory was found gutted (only info/ remained), so
history is unrecoverable locally. This commit restores version control
with the tree exactly as it stands: the working app, the preview-tracks
launcher on the artist hero, the scrollable-track-previews design bundle
(docs + approved mockups), and the Phase 0 validation artifacts.