Skip to content

Accessibility: contrast, landmarks, and screen-reader hygiene#4

Merged
androidfred merged 1 commit into
developfrom
a11y-improvements
Jun 7, 2026
Merged

Accessibility: contrast, landmarks, and screen-reader hygiene#4
androidfred merged 1 commit into
developfrom
a11y-improvements

Conversation

@androidfred

Copy link
Copy Markdown
Owner

What & why

Improves the live landing page for colorblind / low-vision and screen-reader users.

Scope note: the live site is the standalone index.html.github/workflows/deploy.yml rsyncs only that file to the droplet, and .nojekyll disables Jekyll, so the _includes/_layouts/_posts are dead code. All changes are confined to index.html.

Colorblind / low-vision — contrast (WCAG 1.4.3)

The colored initial badges use white text at 18px bold (just under the 18.66px "large text" threshold, so they need 4.5:1). Measured ratios before:

Badge Before After
Grindr #f0a020 2.15:1 #b45309 → 5.02:1 ✅
Position Calculator (feature) #3fb950 2.54:1 #177e39 → 5.15:1 ✅
Compare the Market #0ca678 3.12:1 (large-only) #0f766e → 5.47:1 ✅
SciPro #2f9e44 3.45:1 (large-only) #197a37 → 5.41:1 ✅
Toast #e8590c 3.58:1 (large-only) #c2410c → 5.18:1 ✅
Expedia #1668e3 5.09:1 ✅ unchanged
Guvera #7048e8 5.55:1 ✅ unchanged

Each darker shade preserves the original brand hue. Body, muted, link, and arrow text already pass comfortably (7:1–16:1 in both dark and light mode) and are untouched. No information is conveyed by color alone — every badge sits beside the company name.

Screen readers

  • Add a <main> landmark around the Experience and Projects sections (banner/main/contentinfo are now all present).
  • aria-hidden="true" + focusable="false" on the decorative SVG link icons; the visible Email / GitHub / Resume text remains the accessible name.
  • aria-hidden="true" on the single-letter company initials and the project badge — redundant with the adjacent heading and otherwise announced as noise.
  • aria-hidden="true" on the decorative in "Open it →".

Keyboard

  • Add a visible :focus-visible outline (previously only :hover was styled).

Verification

  • Recomputed every contrast pair with the WCAG formula (table above).
  • Validated markup is well-formed and landmark/aria counts are correct (balanced tags; one <main>; 11 aria-hidden; 3 focusable="false").
  • No content, layout, or copy changes — diff is +15/−12, color values and ARIA attributes only.

🤖 Generated with Claude Code

The live site is the standalone index.html (deploy.yml rsyncs only that file;
.nojekyll disables Jekyll). All fixes are scoped to it.

Colorblind / low-vision (WCAG 1.4.3 contrast, white text on initial badges,
18px bold => needs 4.5:1):
- Darken badges that failed or only met the large-text bar so all reach >=5:1
  while keeping each brand hue: Toast #e8590c->#c2410c, Grindr #f0a020->#b45309
  (was 2.15:1), Compare the Market #0ca678->#0f766e, SciPro #2f9e44->#197a37,
  Position Calculator feature badge accent-2 #3fb950->#177e39 (was 2.54:1).
  Expedia/Guvera already passed and are unchanged.

Screen readers:
- Add a <main> landmark around the Experience and Projects sections.
- aria-hidden the decorative SVG link icons (+ focusable="false"); the visible
  "Email"/"GitHub"/"Resume" text is the accessible name.
- aria-hidden the single-letter company initials and the "∑" project badge —
  redundant with the adjacent name, and announced as noise otherwise.
- aria-hidden the decorative "→" in "Open it →".

Keyboard:
- Add a visible :focus-visible outline (only :hover was styled before).

Body, muted, link and arrow text already pass (7:1–16:1) and are unchanged.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@androidfred androidfred marked this pull request as ready for review June 7, 2026 08:41
@androidfred androidfred merged commit 261a918 into develop Jun 7, 2026
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