Mobile: pin #root to viewport, scroll only inside content panes
The "container expanding past screen" + "page scrolls even with no
content below" symptoms both point to body itself growing past the
visible viewport on iOS. CSS-only constraints (max-width: 100vw,
overflow-x: hidden) weren't enough — iOS treated the body as
scrollable and rubber-banded.
- index.html: html / body get `overflow: hidden`. #root is
`position: fixed; inset: 0; width: 100dvw; height: 100dvh` —
literally bounded to the visible viewport. dvw/dvh respond to
the URL bar without growing the document.
- Add `input, textarea, select, button { min-width: 0 }` so iOS
form intrinsic widths can't push their flex/grid parents wider.
- Bump default input font-size to 16px so iOS Safari doesn't
auto-zoom on focus.
- Wrap AuthForm and ProjectList in a pageScrollerStyle div
(height/width 100%, overflowY auto) so their cards still scroll
on a short viewport even though the body itself can't.
This matches how the ConversationPane already scrolled — outer
shell is fixed, inner panes own their overflow.