Accessibility Issue: Focus Indicators and Keyboard Navigation
WCAG Level: AA
Severity: Medium
Category: Keyboard Navigation Issues
Issue Description
The application lacks visible focus indicators for interactive elements. Keyboard-only users cannot see which element is currently focused.
User Impact
- Affected Users: Keyboard-only users, Low vision users
- Severity: Users cannot track their position when navigating with keyboard
Violations Found
File: `styles.css`
Lines: Throughout
Issues:
- No explicit `:focus` or `:focus-visible` styles defined
- Relying on browser defaults which may be insufficient
- Interactive elements (buttons, inputs, links) need visible focus rings
Recommended Fix
Add focus styles to `styles.css`:
```css
/* Focus indicators for accessibility */
:focus {
outline: 2px solid var(--brand);
outline-offset: 2px;
}
:focus:not(:focus-visible) {
outline: none;
}
:focus-visible {
outline: 2px solid var(--brand);
outline-offset: 2px;
}
button:focus-visible,
input:focus-visible,
select:focus-visible {
outline: 2px solid var(--brand);
outline-offset: 2px;
box-shadow: 0 0 0 4px rgba(56, 189, 248, 0.3);
}
a:focus-visible {
outline: 2px solid var(--brand);
outline-offset: 2px;
}
```
Testing Instructions
- Tab through all interactive elements
- Verify focus ring is clearly visible on dark background
- Test in Chrome, Firefox, Safari
- Use Lighthouse accessibility audit
Resources
Acceptance Criteria
Accessibility Issue: Focus Indicators and Keyboard Navigation
WCAG Level: AA
Severity: Medium
Category: Keyboard Navigation Issues
Issue Description
The application lacks visible focus indicators for interactive elements. Keyboard-only users cannot see which element is currently focused.
User Impact
Violations Found
File: `styles.css`
Lines: Throughout
Issues:
Recommended Fix
Add focus styles to `styles.css`:
```css
/* Focus indicators for accessibility */
:focus {
outline: 2px solid var(--brand);
outline-offset: 2px;
}
:focus:not(:focus-visible) {
outline: none;
}
:focus-visible {
outline: 2px solid var(--brand);
outline-offset: 2px;
}
button:focus-visible,
input:focus-visible,
select:focus-visible {
outline: 2px solid var(--brand);
outline-offset: 2px;
box-shadow: 0 0 0 4px rgba(56, 189, 248, 0.3);
}
a:focus-visible {
outline: 2px solid var(--brand);
outline-offset: 2px;
}
```
Testing Instructions
Resources
Acceptance Criteria