dd6c8a313a
Root cause 1 (scroll bleed): padding-top was applied to body in standalone mode. Since .app-shell has height: 100dvh, body-padding shifted the shell beyond the viewport bottom - enabling body-level scrolling. Fix: moved padding-top from body to .app-shell in the standalone media query. Root cause 2 (content overflow): fixed-height page containers (Calendar, Shopping, Meals, Notes, Budget, Contacts) calculated height as 100dvh - nav-bottom - safe-area-inset-bottom, but never subtracted the top safe area. This caused each page to overflow .app-content by exactly env(safe-area-inset-top) pixels in standalone mode. Fix: added --safe-area-inset-top token and subtracted it in all 6 height calculations. Service worker cache bumped to v27/v26.