59840a1190
Toggleable theater-scale player view that takes over the viewport and amplifies the existing Studio Reference aesthetic — same fonts, same copper/ink palette, just dialed up for immersive listening. Layout & typography: - Two-column centerfold: massive vinyl stage left (clamp(., 72vh, 720px)), editorial column right with Fraunces italic title at clamp(48px, 6.4vw, 112px), Geist Mono console-style metadata strip, oversized timecodes, full-width amplitude spectrum. - Mobile / portrait flips to vertical theater (vinyl top, masthead+ transport below) at <=900px or any portrait orientation. Ambient bloom: - Duplicate of #album-art rendered behind everything at blur(110px) saturate(1.6) opacity(0.42) — paints the room in the record's color. Slow 28s drift animation. Light-theme variant at lower opacity. - MutationObserver keeps bloom art in sync as tracks change. - Vignette + edge darkening + subtle paper-grain veil frame the stage. Interaction: - Header button (corner-arrows-out icon) toggles; pressing 'F' anywhere outside text inputs also toggles; ESC exits. - Native Fullscreen API requested as best-effort sugar on top of the CSS overlay (works on TV / tablet); CSS overlay alone covers the CSS-only fallback case (iOS Safari, embedded webviews). - fullscreenchange listener mirrors OS-level exit back into the overlay. - Auto-hide chrome + cursor after 2.5s idle, restored on mousemove. - Focus moves to play/pause on enter; restored to invoking element on exit. - Hides mini-player, tab bar, header, folio marks, and other tabs while active. Motion: - 320ms fade-in for the stage, 600ms vinyl rise, 1.4s bloom-in, staggered 80ms ladder for kicker -> title -> byline -> album -> meta -> spectrum -> transport. prefers-reduced-motion disables all. i18n: - player.fullscreen / player.fullscreen.exit / player.fullscreen.exit_short added to en.json and ru.json. Files: index.html (header button + fs-chrome strip + fs-bloom layer), styles.css (~360-line fullscreen block at end, scoped to body.is- fullscreen-player), player.js (toggle + init + idle/key/observer plumbing, ~170 lines), app.js (import + window export + init call). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>