Improve landing-page accessibility and fix sticky nav - #78
Merged
Conversation
Focused UX/accessibility pass on the marketing site (src/): - Fix broken sticky nav: .site-shell used `overflow-x: hidden`, which forced `overflow-y` to compute to `auto`, making the shell a scroll container and causing the `position: sticky` nav to scroll away. Switched to `overflow-x: clip`, which contains horizontal overflow without creating a scroll container. Verified sticky on desktop + mobile with no horizontal-scroll regression. - Add keyboard focus visibility: no `:focus-visible` styles existed anywhere (one input even had `outline: none`), so keyboard/AT users had no focus indicator. Added a theme-aware focus ring for links, buttons, and inputs. - Add a "Skip to content" link that stays off-screen until focused, so keyboard users can bypass the nav on the first Tab. - Offset anchor-scroll targets with `scroll-padding-top` so section headings no longer land underneath the sticky nav, plus reduced-motion- aware `scroll-behavior: smooth` for in-page navigation. - Announce waitlist success/error via an `aria-live` status region and mark the submit button `aria-busy` while loading. - Add brand-tinted `::selection` styling in both themes. New styles live in src/a11y-polish.css (imported after mobile-polish). Build, lint, and the 25 web unit tests all pass; changes verified in a headless browser. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PE4HFdLKjK4er6BBAgbgrb
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
mohabbis
marked this pull request as ready for review
July 15, 2026 00:12
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A focused UX/accessibility pass on the marketing site (
src/). No visual redesign — these changes are mostly invisible to a mouse user and target real gaps for keyboard/AT users, plus one genuine layout bug.What changed
.site-shellusedoverflow-x: hidden, which forcesoverflow-yto compute toauto, turning the shell into a scroll container and causing theposition: stickynav to scroll away instead of staying pinned. Switched tooverflow-x: clip, which contains horizontal overflow without creating a scroll container. Verified sticky now works on desktop and mobile with no horizontal-scroll regression.:focus-visiblestyles existed anywhere (one input even hadoutline: none), so keyboard users had no focus indicator. Added a theme-aware focus ring for links, buttons, and inputs.scroll-padding-topso section headings no longer land underneath the sticky nav when following in-page#links, plus reduced-motion-awarescroll-behavior: smooth.aria-livestatus region and marked the submit buttonaria-busywhile loading.::selectionin both light and dark themes.New styles live in
src/a11y-polish.css(imported aftermobile-polish.css); the sticky-nav fix touchessrc/App.css+src/mobile-polish.css; markup changes are insrc/App.jsx(skip link, aria-live region, aria-busy).Verification
npm run build,npm run lint, andnpm run test(25 web unit tests) all pass.scroll-padding-topis applied, thearia-liveregion is present, section headings settle below the nav after anchor navigation, and the nav now stays pinned (top = 0) after scrolling on both 1280px and 390px viewports with no horizontal scroll.iOS app (
Lumen/) was not touched — it can't be built on Linux, and these are web-only changes.🤖 Generated with Claude Code
https://claude.ai/code/session_01PE4HFdLKjK4er6BBAgbgrb
Generated by Claude Code