Skip to content

US4: accessibility / no-JS / reduced-motion hardening - #219

Merged
brunogbv merged 1 commit into
003-deckfrom
003-us4
Jul 4, 2026
Merged

brunogbv merged 1 commit into
003-deckfrom
003-us4

Conversation

@brunogbv

@brunogbv brunogbv commented Jul 4, 2026

Copy link
Copy Markdown
Owner

What

Fills the accessibility gaps across the deck / rails / overlays. Deck keyboard nav, overlay focus
trap+return, and the :target no-JS baseline were already in place (US1/US2) — this hardens the rest.

Closes #201, #202, #203, #204.

Changes

  • Reduced motion (FR-014): a @media (prefers-reduced-motion: reduce) block now also suppresses the
    US2 rail/overlay animation (summary hover-lift, overlay fade + card scale-in) — an overlay opens
    instantly and stays fully functional. Snapping is a resting position (kept); deck glide + reveal were
    already gated.
  • Visible focus (WCAG 2.4.7): focus-visible outlines on summary cards, the overlay close, and nav
    links (rails use scroll-padding-inline so the ring isn't clipped).
  • Landmarks / labels: each section is a labelled region (aria-labelledby → its <h2> id); each rail
    is a labelled list (aria-label).
  • Backdrops non-tabbable: the overlay backdrops become tabindex="-1" aria-hidden="true" — a
    mouse/no-JS click-outside affordance; the visible close × (a real #section anchor) is the
    keyboard/AT/no-JS close control. overlay.js's focus-trap now filters tabIndex >= 0 so the backdrop
    isn't a phantom full-screen tab stop.

Verification

  • Pinned image: make visual 8/8, baselines unchanged (aria/focus/reduced-motion don't alter the
    resting render or the PDF).
  • Lint verified directly: overlay.js Standard-clean, styles.css stylelint-clean.
  • Independent code-review: no findings (reduced-motion cascade keeps the card full-size when open;
    backdrop exclusion keeps mouse-close working; all aria-labelledby references resolve).

Scope

Into 003-deck (integration branch — no production deploy). Only US5 (the Through-Line signature)
remains; then 003-deck → main ships the full redesign.

🤖 Generated with Claude Code

Fills the a11y gaps across the deck/rails/overlays (deck keyboard nav, overlay focus
trap/return, and the :target no-JS baseline were already in place from US1/US2).

- Reduced motion (FR-014): a @media (prefers-reduced-motion: reduce) block now also suppresses
  the US2 rail/overlay animation (summary hover-lift, overlay fade + card scale-in) — an overlay
  opens instantly and stays fully functional. (Deck glide + reveal were already gated; snapping is
  a resting position, kept.)
- Visible focus (WCAG 2.4.7): focus-visible outlines on summary cards, the overlay close, and nav
  links; rails already use scroll-padding-inline so the ring isn't clipped.
- Landmarks/labels: each section is now a labelled region (aria-labelledby -> its h2 id); each rail
  is a labelled list (aria-label).
- Overlay backdrops are non-tabbable (tabindex=-1, aria-hidden) — a mouse/no-JS click-outside
  affordance; the visible close x (a real #section anchor) is the keyboard/AT/no-JS close control.
  overlay.js's focus-trap now filters tabIndex >= 0 so the backdrop isn't a phantom full-screen stop.

Screen-only; PDF unchanged. Verified in the pinned image: make visual 8/8, baselines unchanged
(aria/focus/reduced-motion don't alter the resting render). Lint verified directly (overlay.js
standard-clean, styles.css stylelint-clean); code-reviewed — no findings.

Closes #201
Closes #202
Closes #203
Closes #204

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
@github-actions

github-actions Bot commented Jul 4, 2026

Copy link
Copy Markdown

🔺 Vercel preview: https://cv-k9oa79hzg-bruno-valerios-projects.vercel.app

commit c795c3b · updated 2026-07-04 21:42 UTC

@brunogbv
brunogbv merged commit e9bdcbf into 003-deck Jul 4, 2026
13 checks passed
@brunogbv
brunogbv deleted the 003-us4 branch July 4, 2026 21:43
brunogbv added a commit that referenced this pull request Jul 4, 2026
Ships feature 003 (interactive editorial deck: full-viewport snap sections, summary-card rails + detail overlays, editorial restyle with vendored fonts, a11y/no-JS/reduced-motion, and the Through-Line signature) plus the US2 detail-overlay interaction fix. Screen-only; PDF unchanged. Integration branch 003-deck (US1 #214, US3+US2 #217/#218, US4 #219, US5 #220, overlay fix e5e713e).

This branch was successfully deployed

1 active deployment
preview-pr-219 — c795c3b4 Deployed Jul 4, 2026 by github-actions[bot]
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.

1 participant