This document outlines the accessibility (a11y) improvements made to the site to ensure WCAG compliance and better user experience for people using assistive technologies.
The site has been updated to address critical accessibility issues including keyboard navigation, screen reader support, focus management, and ARIA attributes.
- Fixed user-select: Changed from globally disabling text selection to only disabling on buttons and specific elements
- Added focus styles: Implemented visible focus indicators (yellow outline) for keyboard navigation
- Screen reader utility: Added
.sr-onlyclass for screen-reader-only content
- Created skip link component: Allows keyboard users to skip directly to main content
- Visible when focused, hidden otherwise
- Added to both layout files
- Added semantic HTML: Wrapped content in
<main id="main-content">landmark - Integrated skip link: Added SkipToMain component to all pages
- ARIA labels: Added
aria-label="Main navigation"to nav element
- Icon accessibility: Added
aria-labelto all social media links - Icon hiding: Set
aria-hidden="true"on decorative icon elements - Navigation landmark: Wrapped icons in navigation region with
aria-label="Social media links"
- Honeypot field: Added
aria-hidden="true"andtabindex="-1"to prevent screen reader interaction - Removed blur hack: Removed code that forcefully blurred focused elements on page load
- Loading spinners: Added
role="status"andaria-live="polite"with screen reader announcements - Alt text fallbacks: Ensured all images have descriptive alt text
- Grid items: Made clickable with keyboard (Enter/Space keys)
- Modal keyboard support:
- Escape key closes modal
- Arrow keys navigate between images
- Tab key navigates focusable elements
- Dialog role: Modal has
role="dialog",aria-modal="true", and descriptivearia-label - Focus management:
- Stores last focused element when opening
- Restores focus when closing
- Auto-focuses enlarged image
- Close button: Visible close button with
aria-label="Close enlarged image" - Focusable image: Enlarged image has
tabindex="0"for keyboard access
- Interactive elements: All interactive items have appropriate
aria-labelattributes - Decorative elements: Spinners marked with
aria-hidden="true"
To verify these improvements work correctly:
-
Keyboard Navigation:
- Tab through all interactive elements
- Verify visible focus indicators
- Test skip link (Tab on page load)
- Test modal keyboard controls (Escape, Arrow keys)
-
Screen Reader Testing:
- Use NVDA (Windows), JAWS (Windows), or VoiceOver (Mac)
- Verify all links and buttons are announced
- Check that loading states are announced
- Confirm icon-only buttons have descriptive labels
-
Browser Extensions:
- axe DevTools
- WAVE
- Lighthouse accessibility audit
-
Focus Management:
- Open and close modals
- Verify focus returns to trigger element
- Check no focus is lost or trapped unexpectedly
While the major accessibility issues have been addressed, consider these for future improvements:
- Color Contrast: Verify all text meets WCAG AA standards (4.5:1 for normal text)
- Responsive Text: Ensure text can be resized to 200% without breaking layout
- Touch Targets: Verify all interactive elements are at least 44x44 pixels
- Animation: Consider
prefers-reduced-motionmedia query for users sensitive to motion - Error Handling: Add proper error messaging for form validation