- SearchPanel: focus input with { preventScroll: true } so the browser
doesn't auto-scroll the underlying page when the overlay mounts.
- SearchPanel: add overscroll-contain on the scroll container so
reaching the panel's edges does not chain into the body on Android.
- PublicLayout: lock background scroll while the mobile search overlay
is open using the iOS-compatible position-fixed + restore pattern,
so the page underneath cannot move at all.