Skip to content

Improve landing-page accessibility and fix sticky nav - #78

Merged
mohabbis merged 1 commit into
mainfrom
claude/ui-ux-improvements-z1gznr
Jul 15, 2026
Merged

Improve landing-page accessibility and fix sticky nav#78
mohabbis merged 1 commit into
mainfrom
claude/ui-ux-improvements-z1gznr

Conversation

@mohabbis

Copy link
Copy Markdown
Owner

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

  • Fix broken sticky nav. .site-shell used overflow-x: hidden, which forces overflow-y to compute to auto, turning the shell into a scroll container and causing the position: sticky nav to scroll away instead of staying pinned. Switched to overflow-x: clip, which contains horizontal overflow without creating a scroll container. Verified sticky now works on desktop and mobile with no horizontal-scroll regression.
  • Keyboard focus visibility. No :focus-visible styles existed anywhere (one input even had outline: none), so keyboard users had no focus indicator. Added a theme-aware focus ring for links, buttons, and inputs.
  • Skip to content. Added a skip link that stays off-screen until focused, so keyboard users can bypass the nav on the first Tab.
  • Anchor-scroll offset. Added scroll-padding-top so section headings no longer land underneath the sticky nav when following in-page # links, plus reduced-motion-aware scroll-behavior: smooth.
  • Waitlist feedback for AT. Wrapped the success/error message in an aria-live status region and marked the submit button aria-busy while loading.
  • Brand-tinted ::selection in both light and dark themes.

New styles live in src/a11y-polish.css (imported after mobile-polish.css); the sticky-nav fix touches src/App.css + src/mobile-polish.css; markup changes are in src/App.jsx (skip link, aria-live region, aria-busy).

Verification

  • npm run build, npm run lint, and npm run test (25 web unit tests) all pass.
  • Driven in a headless browser: confirmed the skip link is off-screen until the first Tab focuses it, nav links get a 2px focus outline, scroll-padding-top is applied, the aria-live region 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

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
@vercel

vercel Bot commented Jul 15, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
lumen-idpz Ready Ready Preview, Comment Jul 15, 2026 12:11am

@mohabbis
mohabbis marked this pull request as ready for review July 15, 2026 00:12
@mohabbis
mohabbis merged commit 76071f4 into main Jul 15, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants