diff --git a/src/App.jsx b/src/App.jsx
index f4dd921..fb2a7dc 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -43,15 +43,15 @@ export default function App() {
const routePath = useLocation().pathname;
return (
-
-
-
- {/* Global a11y polish.
+
+
+
+ {/* Global a11y polish.
- focus-visible: keyboard users get a 2px terracotta ring; mouse clicks don't.
- skip-link: hidden until focused, jumps past the nav.
- prefers-reduced-motion: kills card-expand transitions and animations.
- forced-colors: high-contrast modes get a system-color outline. */}
-
- Skip to main content
- {/* Full-bleed on phone (no outer padding / card chrome) so it reads as a
+
+ Skip to main content
+
+ {/* Full-bleed on phone (no outer padding / card chrome) so it reads as a
native app; the boxed 1400px card returns at sm:+. */}
-
- {/* No overflow-hidden here (previously clipped to the rounded corners) --
+
+ {/* No overflow-hidden here (previously clipped to the rounded corners) --
it would break `position: sticky` for any descendant, e.g. the Beans
page filter bar. Header/footer each round + clip their own corners
below instead, so the boxed card still looks seamless at sm:+. */}
-
- {/* Modern light header: brand bar + scrollable icon nav. Replaces the
+
+ {/* Modern light header: brand bar + scrollable icon nav. Replaces the
former brown gradient hero so the directory leads, not the chrome. */}
-
-
-
-
-
-
-
- {/* Location moved to the Roasters page (near the search); the
+
+
+
+
+
+
+
+
+
+
+
+ {/* Location moved to the Roasters page (near the search); the
header just carries theme + auth now, both compact. */}
-
+
-
+
-
- {/* Per-route boundary: a render error in one page shows a recover card
+
+ {/* Per-route boundary: a render error in one page shows a recover card
but keeps the header/nav/footer alive and navigable. resetKey on the
pathname auto-clears the error when the user navigates elsewhere. */}
- (
-
-
This page hit a snag
-
- Something went wrong rendering this view. You can try again, or use the navigation above to go elsewhere.
-
-
-
- )}
- >
- {/* Reserve a tall min-height while a lazy route chunk streams in so the
+ (
+
+
This page hit a snag
+
+ Something went wrong rendering this view. You can try again, or use the
+ navigation above to go elsewhere.
+
+
+
+ )}
+ >
+ {/* Reserve a tall min-height while a lazy route chunk streams in so the
footer doesn't paint high then jump down (CLS). */}
-
-
-
-