Voluntary Product Accessibility Template (VPAT)
Version 2.5 — WCAG 2.2 Level AA Conformance Report
Terms
- Supports
- The functionality of the product has at least one method that meets the criterion without known defects or meets with equivalent facilitation.
- Partially Supports
- Some functionality of the product does not meet the criterion.
- Does Not Support
- The majority of product functionality does not meet the criterion.
- Not Applicable
- The criterion is not relevant to the product.
- Not Evaluated
- The product has not been evaluated against the criterion.
Table 1: Success Criteria, Level A
| Criteria | Level | Remarks |
|---|---|---|
| 1.1.1 Non-text Content | Supports | All images include alt text. Interactive controls use aria-label or aria-labelledby. ARASAAC symbol support for AAC users. |
| 1.2.1 Audio-only and Video-only | Supports | Voice sessions provide real-time transcripts. Transcript visibility is user-configurable. |
| 1.2.2 Captions (Prerecorded) | Partially Supports | Captions toggleable (default: on). Lecture recordings include auto-generated transcripts. User-generated video may not have captions. |
| 1.2.3 Audio Description or Media Alternative | Partially Supports | Text alternatives for instructional content. Some animation content lacks audio descriptions. |
| 1.3.1 Info and Relationships | Supports | Semantic HTML throughout. Heading hierarchy maintained. Form labels with for attributes. ARIA roles on interactive widgets. |
| 1.3.2 Meaningful Sequence | Supports | DOM order follows visual reading order. |
| 1.3.3 Sensory Characteristics | Supports | Instructions do not rely solely on sensory characteristics. Error states use text + color + icon. |
| 1.4.1 Use of Color | Supports | Color is never the sole indicator. Color-blind modes available (protanopia, deuteranopia, tritanopia, achromatopsia). |
| 1.4.2 Audio Control | Supports | Voice mode audio is user-initiated. No auto-playing audio. TTS volume and speed configurable. |
| 2.1.1 Keyboard | Supports | All interactive functionality operable via keyboard. Skip link, focus management, command palette (Ctrl+K). |
| 2.1.2 No Keyboard Trap | Supports | Modal dialogs have Escape key exit. All focus traps have documented exit mechanisms. |
| 2.1.4 Character Key Shortcuts | Supports | Single-character shortcuts limited. Command palette uses multi-key activation. |
| 2.2.1 Timing Adjustable | Supports | Toast duration configurable. Error toasts never auto-dismiss. Timing multiplier for motor impairments. |
| 2.2.2 Pause, Stop, Hide | Supports | Animations respect prefers-reduced-motion. Animation controls in accessibility settings. |
| 2.3.1 Three Flashes or Below | Supports | No content flashes more than three times per second. |
| 2.4.1 Bypass Blocks | Supports | Skip link component with 44px minimum touch target, visible on keyboard focus. |
| 2.4.2 Page Titled | Supports | SvelteKit route system provides contextual page titles. |
| 2.4.3 Focus Order | Supports | Tab order follows logical document flow. |
| 2.4.4 Link Purpose (In Context) | Supports | Links describe their destination. Navigation items use descriptive labels. |
| 2.5.1 Pointer Gestures | Supports | All gestures have single pointer alternatives. Pull-to-refresh has button alternative. |
| 2.5.2 Pointer Cancellation | Supports | Actions use up-event. No down-event-only actions. |
| 2.5.3 Label in Name | Supports | Visible labels match accessible names. |
| 2.5.4 Motion Actuation | Supports | No functionality requires device motion. |
| 3.1.1 Language of Page | Supports | html lang="en" declared. Language updated for multilingual content. |
| 3.2.1 On Focus | Supports | No context changes occur on focus. |
| 3.2.2 On Input | Supports | Form submissions require explicit user action. |
| 3.3.1 Error Identification | Supports | Errors announced via role="alert" with aria-live. Field-level error messages provided. |
| 3.3.2 Labels or Instructions | Supports | All form fields have labels. Required fields indicated. Input format hints provided. |
| 4.1.1 Parsing | Supports | SvelteKit generates valid HTML. No duplicate IDs. |
| 4.1.2 Name, Role, Value | Supports | ARIA roles, states, and properties used correctly. Dynamic states updated programmatically. |
Table 2: Success Criteria, Level AA
| Criteria | Level | Remarks |
|---|---|---|
| 1.2.4 Captions (Live) | Partially Supports | Real-time text transcript for AI speech. Live captions for peer interactions not yet implemented. |
| 1.2.5 Audio Description | Partially Supports | Text alternatives for instructional content. No dedicated audio description track for animations. |
| 1.3.4 Orientation | Supports | Content not restricted to portrait or landscape. |
| 1.3.5 Identify Input Purpose | Supports | Appropriate autocomplete attributes for name, email, and address fields. |
| 1.4.3 Contrast (Minimum) | Partially Supports | The Modern theme has known contrast issues: some interface elements fall below 4.5:1. Other themes are available in Settings, but no theme has yet passed a complete rendered contrast audit; see Known Limitations. Contrast validation utility in codebase. |
| 1.4.4 Resize Text | Supports | Text resizable up to 200%. Font size scale 0.8x to 2.0x. Large text mode available. |
| 1.4.5 Images of Text | Supports | Real text used instead of images of text throughout. |
| 1.4.10 Reflow | Supports | Content reflows to single column at 320px. No horizontal scrolling at 400% zoom. |
| 1.4.11 Non-text Contrast | Supports | UI components meet 3:1 contrast. Focus indicators use 3px gold outline in high-contrast theme. |
| 1.4.12 Text Spacing | Supports | Content functions with overridden text spacing. Letter and word spacing controls available. |
| 1.4.13 Content on Hover or Focus | Supports | Tooltips are dismissible (Escape), hoverable, and persistent. |
| 2.4.5 Multiple Ways | Supports | Sidebar navigation, bottom tab bar, command palette, and search functionality. |
| 2.4.6 Headings and Labels | Supports | Headings describe topic. Labels describe input purpose. |
| 2.4.7 Focus Visible | Supports | All interactive elements show visible focus indicators. |
| 2.4.11 Focus Not Obscured | Supports | Focused elements not covered by author-created content. |
| 2.5.7 Dragging Movements | Supports | All drag operations have single-pointer alternatives. |
| 2.5.8 Target Size (Minimum) | Supports | 24x24px minimum. Touch targets at 44px. High-contrast theme sets 48px. |
| 3.1.2 Language of Parts | Supports | Language attributes for content in different languages. |
| 3.2.3 Consistent Navigation | Supports | Navigation menus appear in consistent locations across all routes. |
| 3.2.4 Consistent Identification | Supports | Same functionality uses consistent labels and icons. |
| 3.3.3 Error Suggestion | Supports | Form validation provides specific correction suggestions. |
| 3.3.4 Error Prevention | Supports | Account deletion requires 2-stage confirmation with 30-day grace period. |
| 3.3.7 Redundant Entry | Supports | Previously entered information auto-populated. |
| 3.3.8 Accessible Authentication | Supports | Password manager compatible. QR login for pre-literate users. No CAPTCHA. |
| 4.1.3 Status Messages | Supports | Status announced via aria-live regions. Toasts use role="status" or role="alert". |
Assistive Technology Support
| Technology | Support Level | Notes |
|---|---|---|
| NVDA (Windows) | Tested | Screen reader navigation, ARIA landmarks, live regions |
| JAWS (Windows) | Compatible | Standard ARIA implementation |
| VoiceOver (macOS/iOS) | Tested | Mobile and desktop support |
| Switch Access | Infrastructure | Input method supports switch mode with timing multiplier |
| Eye Gaze | Infrastructure | Input method supports eyegaze mode |
Additional Accessibility Features
Toggleable dyslexia-friendly font with letter/word spacing controls
Alternative readability-optimized font option
Colored underline guide for reading assistance
Protanopia, deuteranopia, tritanopia, achromatopsia CSS filters
Including high-contrast, dark mode, and multiple color schemes
ARASAAC integration for pre-literate and non-verbal users
Reduces cognitive complexity of interface text
Configurable timing multiplier for motor impairments
Primary interaction via speech removes reading/typing barriers
Pre-literate authentication without text entry
Granular accessibility customization stored per user
Known Limitations
- Modern theme contrast: Some interface elements in the Modern theme do not meet the 4.5:1 minimum contrast ratio. Contrast problems have also been found outside the Modern theme, and no theme has yet passed a complete rendered contrast audit, so changing theme may not fix one. Please report any you find to the address under Feedback and Contact.
- Live captions for peer interactions: Real-time captions available for AI-generated speech but not yet for student-to-student voice interactions.
- Audio descriptions for animations: Procedurally generated celebration animations do not have dedicated audio description tracks. Animations can be disabled via prefers-reduced-motion.
- Third-party content: User-uploaded images may lack alt text. The system prompts for alt text but does not enforce it.
- PDF export accessibility: IEP export PDFs are generated server-side and may not be fully tagged for screen reader navigation.
Testing Methodology
Automated Testing
- axe-core integration in E2E test suite (WCAG 2A/2AA violation scanning)
- Contrast validation utility with WCAG luminance calculations
- 7+ accessibility-specific E2E test suites
Manual Testing
- Keyboard-only navigation across all major user flows
- Screen reader testing with NVDA and VoiceOver
- High-contrast mode visual verification
- Touch target size validation
Assistive Technology
- NVDA + Chrome (Windows)
- VoiceOver + Safari (macOS/iOS)
- Keyboard-only navigation (all browsers)
Feedback and Contact
Users who encounter accessibility barriers are encouraged to contact:
- Email: accessibility@cocovox.ai
- Web: Accessibility Statement
We aim to respond to accessibility feedback within 5 business days and to implement fixes for critical barriers within 30 days.