Final Polish · Accessibility

Building for Everyone

What I Did

Ran a full Lighthouse accessibility audit on every page, then systematically fixed every issue it flagged. Also ran manual keyboard navigation tests and used a screen reader (VoiceOver on macOS) to hear how the site sounded. The experience was humbling.

What I Fixed

Code highlight — focus-visible ring and skip link

/* Visible keyboard focus ring */
:focus-visible {
  outline: 2px solid var(--accent-purple);
  outline-offset: 3px;
  border-radius: 3px;
}

/* Skip link — visible on focus only */
.skip-link {
  position: absolute;
  top: -100%;
  left: 1rem;
  background: var(--accent-purple);
  color: #fff;
  padding: 0.5rem 1rem;
  border-radius: 8px;
  font-weight: 700;
  z-index: 9999;
  transition: top 0.2s;
}
.skip-link:focus { top: 1rem; }

Challenge & Fix

Problem: The typing animation was being announced by VoiceOver on every character change, creating a stream of noise for screen reader users.

Fix: Hidden the typing display from assistive technology with aria-hidden="true", and added a visually-hidden aria-live="polite" region that only announces the complete word once typing finishes. Screen readers hear "Web Developer" once, not 12 individual characters.

Before & After — Lighthouse Scores

71
Before (Week 1)
96
After (Week 5)

Skills Gained

WCAG 2.1 AA ARIA attributes Keyboard navigation Colour contrast Focus management Screen reader testing Lighthouse