Problem
`MiniPlayer` is rendered globally (`components/providers.tsx:112`) as a `fixed bottom-4 ... z-50` element. `MobileNavBar` is also rendered globally as `fixed inset-x-0 bottom-0 z-30` with `min-h-[58px]` tabs, and it only hides itself on `/canvas` once nodes exist.
Impact
On every other page — home, `/search`, `/names`, or an empty canvas — playing any audio (e.g. Verse-of-the-Day, morphology root concordance) causes the floating mini-player to sit directly on top of the bottom tab bar on mobile, obscuring nav labels and shrinking/covering tap targets.
Location
`components/audio/MiniPlayer.tsx:29`, `components/layout/MobileNavBar.tsx:36`, wired together in `components/providers.tsx:112`
Suggested fix
Give `MiniPlayer` a `bottom` offset that accounts for the nav bar's height + safe-area inset whenever `MobileNavBar` is visible, or otherwise coordinate the two components' vertical positioning (e.g. via a shared layout context) so they never overlap.
Problem
`MiniPlayer` is rendered globally (`components/providers.tsx:112`) as a `fixed bottom-4 ... z-50` element. `MobileNavBar` is also rendered globally as `fixed inset-x-0 bottom-0 z-30` with `min-h-[58px]` tabs, and it only hides itself on `/canvas` once nodes exist.
Impact
On every other page — home, `/search`, `/names`, or an empty canvas — playing any audio (e.g. Verse-of-the-Day, morphology root concordance) causes the floating mini-player to sit directly on top of the bottom tab bar on mobile, obscuring nav labels and shrinking/covering tap targets.
Location
`components/audio/MiniPlayer.tsx:29`, `components/layout/MobileNavBar.tsx:36`, wired together in `components/providers.tsx:112`
Suggested fix
Give `MiniPlayer` a `bottom` offset that accounts for the nav bar's height + safe-area inset whenever `MobileNavBar` is visible, or otherwise coordinate the two components' vertical positioning (e.g. via a shared layout context) so they never overlap.