Add skip link, focus rings, landmarks and contrast fixes #8

Merged
Claude merged 3 commits from cc-9-accessibility into site-hardening 2026-10-07 13:45:40 +00:00
Collaborator

Accessibility pass (CC-9). Skip link, visible focus on links, buttons, choices and inputs, labelled nav landmarks (the unique-landmark override is gone), aria-live on the email hint and register error, and a darker muted text token.

Other fixes axe found: heading order on the home, nodes, spec and thanks pages, the feedback band is now a labelled region, and band/accent paragraph text is white for contrast.

Contrast: --neutral-500 (muted text) went from #7D776F to #726C65. On cream 4.18 to 4.90, on white 4.43 to 5.17. Footer .legal already passed at 5.09.

Tested: node --test (10 pass), html-validate clean, axe 4.10.2 reports 0 violations on all 11 pages (test/axe.js, run by hand with PLAYWRIGHT_DIR, not in CI). The register form was completed and submitted by keyboard only in Chromium.

Ticket: CC-9.

Accessibility pass (CC-9). Skip link, visible focus on links, buttons, choices and inputs, labelled nav landmarks (the `unique-landmark` override is gone), `aria-live` on the email hint and register error, and a darker muted text token. Other fixes axe found: heading order on the home, nodes, spec and thanks pages, the feedback band is now a labelled region, and band/accent paragraph text is white for contrast. Contrast: `--neutral-500` (muted text) went from #7D776F to #726C65. On cream 4.18 to 4.90, on white 4.43 to 5.17. Footer `.legal` already passed at 5.09. Tested: `node --test` (10 pass), html-validate clean, axe 4.10.2 reports 0 violations on all 11 pages (`test/axe.js`, run by hand with `PLAYWRIGHT_DIR`, not in CI). The register form was completed and submitted by keyboard only in Chromium. Ticket: CC-9.
Add skip link, focus rings, landmarks and contrast fixes
All checks were successful
CI / check (pull_request) Successful in 9s
61e8ea77df
Claude left a comment
  1. styles.css, the new :focus-visible rule: the ring is --orange-500. That is 2.7:1 on the page background, 2.9:1 on white and 1.6:1 on the green band. All are under the 3:1 WCAG 1.4.11 needs. The old ring had a white inner band; this one doesn't. Use a darker colour such as --orange-700, or bring back a two-tone ring. axe doesn't check this, so the script won't catch it.

  2. src/register.html, line 52: aria-live on a <p hidden> that is later unhidden is unreliable. Many screen readers don't announce an element that goes from display:none to visible. Keep a permanently rendered live region and change its text, or use role="alert" and set it from site.js.

  3. styles.css line 22: --ring-focus is now unused. Delete it.

1. styles.css, the new `:focus-visible` rule: the ring is `--orange-500`. That is 2.7:1 on the page background, 2.9:1 on white and 1.6:1 on the green band. All are under the 3:1 WCAG 1.4.11 needs. The old ring had a white inner band; this one doesn't. Use a darker colour such as `--orange-700`, or bring back a two-tone ring. axe doesn't check this, so the script won't catch it. 2. src/register.html, line 52: `aria-live` on a `<p hidden>` that is later unhidden is unreliable. Many screen readers don't announce an element that goes from `display:none` to visible. Keep a permanently rendered live region and change its text, or use `role="alert"` and set it from site.js. 3. styles.css line 22: `--ring-focus` is now unused. Delete it.
Darken focus ring, use role alert for register error
All checks were successful
CI / check (pull_request) Successful in 10s
4b4a4431f6
Claude left a comment

One minor point; the 4b4a443 changes are fine.

One minor point; the 4b4a443 changes are fine.
@ -48,3 +48,3 @@
<b>Your email</b>
<span><svg class="icon"><use href="#i-mail"/></svg><input type="email" name="email" required placeholder="you@example.com"></span>
<small>We'll only use it to tell you how CamperCan is coming along.</small>
<small aria-live="polite">We'll only use it to tell you how CamperCan is coming along.</small>
Author
Collaborator

aria-live="polite" on the static helper <small> does nothing, because its text never changes. It was added in this PR (61e8ea7). Remove it.

`aria-live="polite"` on the static helper `<small>` does nothing, because its text never changes. It was added in this PR (61e8ea7). Remove it.
rob force-pushed cc-9-accessibility from 4b4a4431f6
All checks were successful
CI / check (pull_request) Successful in 10s
to ff6048426c
All checks were successful
CI / check (pull_request) Successful in 9s
2026-10-07 13:44:44 +00:00
Compare
Claude merged commit 9129aa1ab9 into site-hardening 2026-10-07 13:45:40 +00:00
Claude deleted branch cc-9-accessibility 2026-10-07 13:45:40 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rob/CamperCan!8
No description provided.