- OnboardingScreen used min-h-dvh instead of h-dvh, so the scrollable content
area never actually clipped/scrolled internally; the page just grew and the
primary CTA button scrolled away with it instead of staying visible. Switch
to h-dvh and give each step's button a sticky footer (StepFooterButton).
- SwipeCard crashed with "Cannot read properties of null" when a candidate
had no photos, because the backend could return null instead of an empty
array; guard with optional chaining.
Phone+OTP auth, staged onboarding, admin-approval-gated home screen,
and the full discovery/match/chat UI (swipe deck with drag gestures,
match modal, profile detail, filters, messages/chat) wired to the
real backend, styled after a Figma dating-app UI kit.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>