Problem
BaseballDashboardShell already renders a sticky top utility row, but many baseball pages mount the full legacy Header on top of it. On mobile this stacks two persistent header bands and duplicates notification entry points before page content begins.
Evidence
src/components/baseball/dashboard-shell.tsx (lines 241-243): render a sticky bar
src/app/baseball/(dashboard)/dashboard/roster/RosterClient.tsx (lines 443-451): mount <Header> inside the same shell
src/components/layout/header.tsx (lines 86-159): add menu, mobile search, NotificationCenter, and user menu while the shell already shows NotificationBell
Why it matters
Mobile users lose ~120px+ of first-screen space on core flows (Roster, Settings, Discover, message threads) and see two different notification UIs, which breaks the mobile consistency contract's "one header type" and "at most one trailing action" rules.
Acceptance criteria
- On
<lg, authenticated baseball routes expose exactly one top chrome row (shell OR page header, not both).
- Notification access exists in one place on mobile; no duplicate bell/popover stacks.
- Roster/Settings/Discover/message-thread pages match Command Center / Player Today / Stats Center (shell-only chrome + in-page title).
Problem
BaseballDashboardShellalready renders a sticky top utility row, but many baseball pages mount the full legacyHeaderon top of it. On mobile this stacks two persistent header bands and duplicates notification entry points before page content begins.Evidence
src/components/baseball/dashboard-shell.tsx(lines 241-243): render a sticky barsrc/app/baseball/(dashboard)/dashboard/roster/RosterClient.tsx(lines 443-451): mount<Header>inside the same shellsrc/components/layout/header.tsx(lines 86-159): add menu, mobile search,NotificationCenter, and user menu while the shell already showsNotificationBellWhy it matters
Mobile users lose ~120px+ of first-screen space on core flows (Roster, Settings, Discover, message threads) and see two different notification UIs, which breaks the mobile consistency contract's "one header type" and "at most one trailing action" rules.
Acceptance criteria
<lg, authenticated baseball routes expose exactly one top chrome row (shell OR page header, not both).