Accessibility Conformance Report
Voluntary Product Accessibility Template (VPAT®) 2.4 Rev — WCAG 2.1 Edition
WCAG 2.1 — Level A Success Criteria
The following table summarizes Kuliso's conformance with WCAG 2.1 Level A success criteria.
| Criteria | Success Criterion | Level | Remarks & Explanations |
|---|---|---|---|
| 1.1.1 | Non-text Content | Partially Supports | Most images include descriptive alt text. Decorative images use alt="" with aria-hidden="true". Known gap: some emoji-based visuals in arcade game content lack sufficient alternative context. Remediation in progress; expected Q2 2026. |
| 1.2.1 | Audio-only and Video-only (Prerecorded) | Not Applicable | Kuliso does not publish standalone prerecorded audio-only or video-only content. |
| 1.2.2 | Captions (Prerecorded) | Partially Supports | AI-generated mini-clips and embedded video content may lack synchronized captions. Automatic captioning implementation is in progress. Teacher-created video uploads are not automatically captioned. |
| 1.2.3 | Audio Description or Media Alternative (Prerecorded) | Not Applicable | Kuliso does not publish prerecorded video with significant visual-only information. |
| 1.3.1 | Info and Relationships | Supports | Pages use semantic HTML5 elements (<main>, <nav>, <header>, <footer>, <section>). Heading hierarchy (H1–H3) is maintained throughout. Tables include proper scope attributes. ARIA roles supplement semantics where HTML5 elements are insufficient. |
| 1.3.2 | Meaningful Sequence | Supports | DOM order matches visual reading order. CSS does not reorder content in ways that break logical sequence. |
| 1.3.3 | Sensory Characteristics | Supports | Instructions do not rely solely on shape, size, visual location, orientation, or sound. Interactive elements are labeled by name. |
| 1.4.1 | Use of Color | Partially Supports | Most content does not rely on color alone. Known gap: some status indicators (score badges, progress states) use color as the sole visual differentiator. Icon and text alternatives are being added in the current development cycle. |
| 1.4.2 | Audio Control | Not Applicable | No audio plays automatically for more than 3 seconds. |
| 2.1.1 | Keyboard | Partially Supports | All core learning workflows (tutoring, quizzes, navigation, account management) are fully keyboard operable. Known exceptions: (1) Drag-and-drop activities in benchmark practice have limited keyboard support — a keyboard-based alternative interaction is planned. (2) Live Bingo multiplayer game requires mouse/touch. These are non-critical paths; core learning is unaffected. |
| 2.1.2 | No Keyboard Trap | Supports | Focus is never trapped. Modal dialogs return focus to trigger element on close. All modals include close buttons reachable by keyboard. |
| 2.1.4 | Character Key Shortcuts | Supports | Kuliso does not implement single-character keyboard shortcuts. |
| 2.2.1 | Timing Adjustable | Partially Supports | Most content has no time limit. Timed benchmark assessments include a visible countdown. Extended time (1.5× or 2×) is available per-student via teacher configuration. Students cannot self-adjust time limits during an active assessment session; this is a known gap under review. |
| 2.2.2 | Pause, Stop, Hide | Supports | No moving, blinking, or scrolling content runs for more than 5 seconds without user initiation. All animations are triggered by user interaction or are decorative with prefers-reduced-motion support. |
| 2.3.1 | Three Flashes or Below Threshold | Supports | No content flashes more than 3 times per second. Animations are subtle transitions, not flashing effects. |
| 2.4.1 | Bypass Blocks | Supports | All pages include a "Skip to main content" link as the first focusable element. The link becomes visible on focus and targets the id="main-content" landmark. |
| 2.4.2 | Page Titled | Supports | All pages have unique, descriptive <title> elements that identify both the page purpose and the product name. |
| 2.4.3 | Focus Order | Supports | Focus order follows a meaningful sequence. Modal dialogs move focus to the first interactive element on open. Dynamically injected content is placed correctly in DOM order. |
| 2.4.4 | Link Purpose (In Context) | Supports | Link text is descriptive or supplemented by accessible names via aria-label or surrounding context. |
| 2.5.1 | Pointer Gestures | Partially Supports | All single-pointer interactions work without path-based gestures except in drag-and-drop activities (see 2.1.1 for remediation plan). |
| 2.5.2 | Pointer Cancellation | Supports | Actions activate on pointer up, not down. Users can cancel by moving the pointer off the target before releasing. |
| 2.5.3 | Label in Name | Supports | Accessible names for interactive elements contain the visible text label. |
| 2.5.4 | Motion Actuation | Supports | No functionality is triggered by device motion or user motion. No gyroscope or shake gestures are used. |
| 3.1.1 | Language of Page | Supports | All pages specify lang="en" on the <html> element. Bilingual interface sections set the appropriate lang attribute on the containing element. |
| 3.2.1 | On Focus | Supports | No component initiates a change of context when it receives focus. |
| 3.2.2 | On Input | Supports | Changing the value of a form control does not automatically submit a form or change context. Filtering and live search use debounced updates that only affect the visible list, not navigation. |
| 3.3.1 | Error Identification | Partially Supports | Errors are identified with descriptive text messages. Most error messages are displayed adjacent to the relevant field. Known gap: some dynamically shown error messages do not use aria-live="polite" or role="alert", so screen readers may not announce them automatically. Remediation applied to signup and login forms; remaining forms under review. |
| 3.3.2 | Labels or Instructions | Partially Supports | Form inputs generally have visible labels. Most inputs use explicit for/id associations. Some older form patterns use implicit association (label wrapping input) which is widely supported. Required fields are marked visually and with aria-required. |
| 4.1.1 | Parsing | Supports | HTML is validated. No duplicate IDs, unclosed tags, or invalid ARIA usage that would interfere with assistive technology parsing. |
| 4.1.2 | Name, Role, Value | Partially Supports | Standard HTML controls are used throughout. Custom interactive components (grade picker, language selector, tab panels) include ARIA roles and states. Known gap: some tab-panel components are missing role="tab", aria-selected, and aria-controls attributes. Remediation in progress. |
| 4.1.3 | Status Messages | Partially Supports | Key status messages (form submission results, score updates, AI response completion) use aria-live regions. Known gap: some peripheral status updates (session progress counters, XP notifications) lack live region announcements. Prioritized for Q3 2026. |
WCAG 2.1 — Level AA Success Criteria
The following table summarizes Kuliso's conformance with WCAG 2.1 Level AA success criteria (beyond Level A).
| Criteria | Success Criterion | Level | Remarks & Explanations |
|---|---|---|---|
| 1.2.4 | Captions (Live) | Not Applicable | Kuliso does not include live video or audio broadcasts. |
| 1.2.5 | Audio Description (Prerecorded) | Not Applicable | No prerecorded synchronized media with visual-only information requiring audio description. |
| 1.3.4 | Orientation | Supports | Content is accessible in both portrait and landscape orientations. No content or functionality is locked to a single orientation. |
| 1.3.5 | Identify Input Purpose | Supports | Common form fields (name, email, password, phone) use appropriate autocomplete attribute values (e.g., given-name, email, new-password, current-password). |
| 1.4.3 | Contrast (Minimum) | Supports | The design system maintains at minimum 4.5:1 contrast for body text and 3:1 for large text (18pt or 14pt bold). Primary text colors (--ink: #0f1729 on white) exceed 7:1. Secondary text (--slate: #3d4663 on white) exceeds 7:1. The --mist color (#6a7492) is used only for placeholder text and decorative elements, not for information-bearing text. |
| 1.4.4 | Resize Text | Supports | Text resizes up to 200% without loss of content or functionality. Layout uses relative units (rem, em, %). In-app text size controls (Small → Extra Large) allow students to adjust font size across all learning activities. |
| 1.4.5 | Images of Text | Supports | Text is rendered as live text throughout the application. No images of text are used for informational content. |
| 1.4.10 | Reflow | Supports | All content reflows at 320px viewport width without horizontal scrolling or loss of content. Layout is fully responsive using CSS flexbox and grid. |
| 1.4.11 | Non-text Contrast | Supports | UI component boundaries (form input borders, button outlines, focus rings) maintain at least 3:1 contrast against adjacent colors. Focus indicators use a 3px violet ring with sufficient contrast. |
| 1.4.12 | Text Spacing | Supports | No loss of content or functionality when applying the WCAG text spacing requirements (line height 1.5×, letter spacing 0.12em, word spacing 0.16em, paragraph spacing 2×). |
| 1.4.13 | Content on Hover or Focus | Supports | Hover/focus-triggered content (tooltips, dropdowns) remains visible while the pointer is over it, can be dismissed without moving focus, and does not obscure other content unexpectedly. |
| 2.4.5 | Multiple Ways | Supports | Content is reachable via multiple pathways: main navigation, breadcrumb navigation, in-app search, and direct links from the teacher/student dashboard. |
| 2.4.6 | Headings and Labels | Supports | Headings describe the topic or purpose of the following content. Form labels describe the required input. No decorative or placeholder headings are used. |
| 2.4.7 | Focus Visible | Supports | A visible focus indicator (3px violet ring, box-shadow: 0 0 0 3px rgba(124,58,237,0.3)) is applied to all interactive elements. Focus is never suppressed with outline: none without a custom replacement. The :focus-visible pseudo-class is used where appropriate to avoid showing focus rings on mouse click. |
| 3.1.2 | Language of Parts | Partially Supports | The primary interface is English and is tagged lang="en". When bilingual content is displayed (e.g., a Spanish-English word pair), the non-English portion should carry a lang attribute on its container. This is implemented in the bilingual reading and word games features. Some AI-generated bilingual tutoring responses may not receive dynamic lang attribute injection. Full audit planned for Q2 2026. |
| 3.2.3 | Consistent Navigation | Supports | Navigation order and labeling is consistent across all pages. The primary navigation bar appears in the same location on every page. |
| 3.2.4 | Consistent Identification | Supports | Components that have the same function are identified consistently throughout the product (e.g., the "Start" button always initiates an activity; the dismiss button always uses ✕ with an aria-label of "Close"). |
| 3.3.3 | Error Suggestion | Partially Supports | Most form validation errors include specific guidance on how to correct the issue (e.g., "Password must be at least 6 characters"). Some API-level error responses surface generic messages that do not include actionable correction guidance. Improving error message specificity is ongoing. |
| 3.3.4 | Error Prevention (Legal, Financial, Data) | Supports | Account deletion, subscription cancellations, and irreversible data actions require explicit confirmation (modal dialog with primary/secondary button choice). Assessment submissions show a review step before final submission. |
Section 508 — Functional Performance Criteria
The following criteria apply to the functional performance of Kuliso as electronic and information technology under Section 508 of the Rehabilitation Act.
| Criteria | Criterion Name | Level | Remarks & Explanations |
|---|---|---|---|
| 302.1 | Without Vision | Partially Supports | Core learning workflows (AI tutoring, reading library, vocabulary quizzes) are operable with screen readers. NVDA + Chrome and VoiceOver + Safari are tested regularly. Known gap: arcade game content and some visual-only activity formats are not fully screen-reader operable. These represent enhancement activities, not core instructional content. |
| 302.2 | With Limited Vision | Supports | Text is resizable up to 200% without content loss. An in-app font size widget offers Small/Default/Large/Extra-Large settings. High contrast mode is available. Layout is responsive at all zoom levels. |
| 302.3 | Without Perception of Color | Partially Supports | Most information is conveyed through text in addition to color. Known gap: some status indicators and gamification elements use color as the primary or sole differentiator. Remediation with icon + text additions in progress. |
| 302.4 | Without Hearing | Supports | All core functionality is available without audio. The text-to-speech feature is optional and never the sole means of accessing content. Captions for prerecorded video are in progress (see 1.2.2). |
| 302.5 | Without Speech | Supports | No features require speech input. Kuliso does not use voice commands or speech recognition for core functionality. |
| 302.6 | With Limited Manipulation | Partially Supports | Most interactions require simple single-pointer or keyboard input. Known exception: drag-and-drop activities in benchmark practice require fine motor control. Keyboard-accessible alternatives are in development (see 2.1.1). |
| 302.7 | With Limited Reach and Strength | Supports | All controls are reachable without simultaneous multi-key input. Interactive elements meet minimum target size recommendations (44×44px or equivalent). No timed interactions require rapid physical response. |
| 302.8 | With Photosensitivity | Supports | No content flashes more than 3 times per second. The prefers-reduced-motion media query disables all CSS transitions and animations when the user has requested reduced motion in their OS settings. |
Legal Disclaimer
This Accessibility Conformance Report is provided for informational purposes. The information in this document reflects the state of the product as of the report date noted above. Kuliso makes no warranties about the accuracy of this information and reserves the right to update this report as the product evolves. Conformance ratings are based on internal testing and may not reflect every possible assistive technology configuration.
For accessibility support, contact support@kuliso.org. We respond to accessibility requests within 2 business days.