Accessibility
Accessibility Statement
Cairn is committed to making its service accessible to everyone, including people who use assistive technology. This page describes our current conformance status, known limitations, and how to reach us if you encounter a barrier.
Target standard
Cairn targets WCAG 2.2 Level AA conformance, the current W3C Recommendation (October 2023). No automated tool alone determines WCAG conformance — per W3C guidance, our audit combines automated signals with manual keyboard, focus, ARIA, and semantic structure review.
Scope
This audit covers all public-facing pages and authenticated flows:
- Landing page, How it works, About, Pricing, Contact
- Legal pages: Privacy Policy, Terms of Service, Cookie Policy, Refund Policy
- Authentication: Log in, Reset password
- App shell: Assessment chat, Plan dashboard, Progress tracking
- Account settings
What passes
- Skip navigation: A visible “Skip to main content” link appears as the first focusable element on every page.
- Landmarks: Every page uses
<header>,<nav>,<main>, and<footer>with distinct ARIA labels where multiple navs appear. - Heading hierarchy: One
<h1>per page with correct descending hierarchy. - Forms: All inputs are associated to visible labels. Error messages are linked to the specific field via
aria-describedby. Success and error states are announced to screen readers viarole="alert"oraria-live. - Modals: All dialogs use Radix UI Dialog, which provides automatic focus trapping and focus-return on close. Escape dismisses all modal overlays.
- Icon buttons: Every icon-only button has an explicit
aria-label. Decorative icons carryaria-hidden="true". - Motion: All CSS animations are wrapped in
@media (prefers-reduced-motion: reduce)blocks. JavaScript-driven scroll and animation behavior is gated on the same preference. - Keyboard navigation: Locked or loading nav items expose their state via
aria-disabledandaria-busy. Account dropdowns close on Escape with focus returned to the trigger. - Current page: Active links carry
aria-current="page"in all navigation regions.
Known limitations
The --muted-foreground token in dark mode renders at approximately 3.5:1 contrast on the dark background, below the WCAG 1.4.3 minimum of 4.5:1 for normal text. Affected elements include secondary labels in the sidebar, settings, and metadata text. A token adjustment is pending design review.
The X, Instagram, and LinkedIn links in the footer currently use href="#" because social accounts are not yet established. Links have accessible labels but are non-functional. They will be updated with real URLs once accounts are created.
Small icon buttons (Add child, Delete child) have been updated to meet the WCAG 2.5.8 minimum of 24×24 CSS pixels. The stricter 44×44 px target (WCAG 2.5.5, Level AAA) is not yet met.
Section dividers in the settings navigation (“Profile”, “Plan & billing”, etc.) are visual only and are not programmatically associated with the items they group. Future work will addrole="group" with aria-label.
Testing methodology
- Static code review — all page, component, and CSS files audited for semantic structure, ARIA attributes, label associations, live regions, and motion handling
- Keyboard testing — manual verification of Tab order, focus visibility, modal traps, and Escape-key behaviour
- Automated signal — Lighthouse and ESLint (not treated as proof of conformance)
- Pattern verification — Radix UI components verified against ARIA Authoring Practices Guide
Per W3C guidance: no automated tool alone determines WCAG conformance. Items requiring live screen-reader testing (NVDA, VoiceOver) and real-device mobile testing are not yet verified.
Contact
To report an accessibility barrier or request an accommodation, email us at hello@cairnplan.com. We aim to respond within 3 business days.