2508473265
Three root causes fixed: 1. Double safe-area padding: pwa.css set padding-top/bottom on body globally, but page containers already account for safe-area-inset in their height calculations. Removed body vertical padding (kept only in standalone media query for padding-top). 2. Wrong nav token: all page containers used --nav-height-mobile (56px) instead of --nav-bottom-height (68px = 56px scroll + 12px dots), causing 12px of content to render behind the bottom nav. 3. Scroll bleed: fixed-height page containers lacked overflow:hidden, allowing scroll events to propagate to the body. Added overscroll-behavior-y:contain on app-content globally. Fixes #16