diff --git a/AGENTS.md b/AGENTS.md
index 83f2f1d..5b11e4f 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -710,6 +710,13 @@ session with **no other memory of this project**. So:
re-add a stacked toolbar or the footer subtraction. The "New here?" welcome
banner (logged-out only) still occupies ~69px *in flow* on first visit — it's
dismissible and the dismissal is persisted (`skatespots_welcome_dismissed`).
+ ⚠️ **The banner MUST be the first child of the map container, ABOVE the
+ toolbar** (fixed 2026-10-01). The toolbar is `absolute top-0` inside the same
+ container, so as a later sibling the banner sat at the container's top and the
+ floating toolbar **painted over it** (owner screenshot: search bar covering the
+ banner). Now the banner is first and the toolbar **drops into flow**
+ (`showWelcomeBanner ? 'relative border-b bg-black/95' : 'absolute …gradient'`)
+ so it can't cover it; `md:static` is unchanged on desktop.
⚠️ The floating toolbar sits over Leaflet's default **top-left zoom control**,
so `MapPage` passes `className="h-full ss-map-floating-toolbar"` and
`index.css` offsets `.leaflet-top.leaflet-left` by `4.25rem` **only under
diff --git a/src/pages/MapPage.tsx b/src/pages/MapPage.tsx
index bcab143..794c7ca 100644
--- a/src/pages/MapPage.tsx
+++ b/src/pages/MapPage.tsx
@@ -1051,11 +1051,57 @@ export default function MapPage() {
{/* Full-height map container: subtract header + bottom nav on mobile, header only on desktop */}
{/* 100dvh handles iOS Safari URL bar shrink correctly */}
+ {/* Welcome Banner — shown once to logged-out visitors. It lives ABOVE
+ the toolbar (both in flow) because the toolbar floats over the map:
+ as a later sibling the banner would sit at the container's top and
+ the floating toolbar would paint over it. */}
+ {showWelcomeBanner && (
+
+
+ 🛹
+
+
New here?
+
Discover skate spots, events & the community.
+
+ {/* Desktop-only: grab the mobile app via Zapstore */}
+
+
+ Get on Zapstore
+
+
+ Get Started
+
+
+
+
+ )}
+
{/* ── Toolbar ──
Mobile: floats OVER the map (absolute) so the map fills the whole
screen; the gradient fades into the map and the transparent wrapper
- passes touches through to it. Desktop keeps the in-flow bar. */}
-
+ passes touches through to it. Desktop keeps the in-flow bar. With the
+ welcome banner present it drops into flow so it can't cover it. */}
+
@@ -1581,42 +1627,6 @@ export default function MapPage() {
- {/* Welcome Banner — shown once to logged-out visitors */}
- {showWelcomeBanner && (
-
-
- 🛹
-
-
New here?
-
Discover skate spots, events & the community.
-
- {/* Desktop-only: grab the mobile app via Zapstore */}
-
-
- Get on Zapstore
-
-
- Get Started
-
-
-
-
- )}
-
{/* Main Content */}
{/* `isolate` creates a stacking context so the map's internal z-indexes
(Leaflet panes, our overlays up to z-[2000]) stay INSIDE the map. Without