Accessibility Menu
- Complexity: Moderate
- Stack: Frontend
As a user, I want to adjust font size, contrast, and motion settings so that I can use the application comfortably based on my visual needs.
Description
The application currently offers no accessibility customization. A ThemeService already exists in clib/services/ for managing theme state. This story extends the application with a settings panel where users can adjust font size, enable high contrast mode, and reduce motion. Settings take effect immediately and persist across sessions.
Acceptance Criteria
- [ ] An accessibility settings button is visible on all pages via the
navbarcomponent - [ ] Users can select a font size: small, medium (default), large, or extra-large
- [ ] Changing font size immediately resizes text across the entire application
- [ ] Users can toggle high contrast mode — enabling it updates all background and text colors
- [ ] High contrast color combinations meet WCAG AA minimum contrast ratio (4.5:1)
- [ ] Users can toggle reduced motion — enabling it disables all animations and transitions
- [ ] Settings take effect immediately without a page reload
- [ ] Settings persist after closing and reopening the browser
- [ ] Default settings are applied when no stored preferences exist
- [ ] The accessibility menu can be opened, navigated, and closed using only the keyboard