PR Checks / Frontend Typecheck + Tests (pull_request) Successful in 9m37s
PR Checks / Backend Smoke (pull_request) Successful in 5s
PR Checks / Build Backend (no push) (pull_request) Successful in 10s
PR Checks / Build Frontend (no push) (pull_request) Successful in 45s
PR Checks / Build Pipeline (no push) (pull_request) Successful in 10s
PR Checks / AI Code Review (Claude) (pull_request) Successful in 1m4s
The results-view map's fullscreen button called requestFullscreen(), which iOS Safari doesn't implement (fullscreen is video-only there), so tapping it did nothing on iPhones — the same gap already fixed for the school hero map. When the Fullscreen API is missing or its promise rejects, fall back to a fixed-position overlay (.fsFallback, z-index 5000) driven by state, locking body scroll while open. Leaflet re-measures on window resize, so dispatch a resize when fullscreen toggles (the CSS overlay fires none) or the map would fill only part of the screen. Native fullscreen is unchanged. New e2e journey deletes Element.requestFullscreen on a mobile viewport, opens the results map fullscreen, and asserts the exit control appears then releases; it fails against current production, reproducing the bug. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>