Accessibility
Accessibility Conformance Statement (VPAT 2.5)
EnPet is built so that every operator, groomer, and pet parent — regardless of how they navigate the web — can run their day. This page summarises our current conformance against WCAG 2.1 Level AA, the parts of the product we’ve verified, the gaps we know about, and how to reach us when something doesn’t work for you.
Last reviewed: .
Conformance summary
The EnPet operator dashboard at /dashboard/*, including the appointment log, day-grid view, and detail sheet, conforms to WCAG 2.1 Level AA as of the date above. Conformance was verified through:
- Automated checks for color contrast, focus indicators, and ARIA roles.
- Manual keyboard-only walkthroughs of every interactive surface.
- Cross-mode validation (light + dark) on every status badge, chip, and pill.
- Screen-reader announcements verified on the cancellation flow, custom-date warnings, and table loading state.
Standards applied
- WCAG 2.1 Level AA — primary conformance target.
- Section 508 (Revised, 2018) — covered by WCAG 2.1 AA cross-mapping.
- EN 301 549 (V3.2.1) — for EU/UK procurement.
Verified accessibility features
The following features have been verified in the operator dashboard:
- Skip-to-content link on every dashboard page (visible on first Tab) so keyboard users bypass the sidebar.
- Roving tab-index on the status filter pill group: one tab stop, arrow keys cycle, Home / End jump to ends.
- Keyboard-reachable table rows: every row has
role="button",tabindex=0, and a descriptivearia-label; Enter / Space opens the detail sheet. - Screen-reader-friendly state changes: the custom-date warning, table loading state, and bulk-action bar announce via
role="status"+aria-live="polite". - Sortable column headers expose
aria-sort(ascending/descending/none) so screen readers announce sort direction. - Focus return after popovers: the date picker calendar returns focus to its trigger button on close.
- Detail-sheet sections wrapped as semantic
<section aria-label>, with no decorative emojis (replaced by lucide icons + visible text). - Color contrast at 12px on every status pill (light + dark mode) — verified at AA threshold or higher.
- Touch targets at the row-action menu trigger sized 38 × 38 px (per the in-house tablet ergonomics rule for groomers with wet or gloved hands).
Known gaps
We list what we’ve found and not yet remediated, so you can plan around them. Each item is on the v1.0.x roadmap:
- Drag-and-drop in the day-grid view can be triggered by mouse and assistive-pointer devices, but full keyboard-only drag is not yet wired. Workaround: open the row sheet and use the Reschedule button instead.
- Some legacy dialogs on settings pages do not yet provide a programmatic
aria-describedby; screen readers fall back to the title alone. - Public live-status tracker (the “Domino’s tracker” URL we send to pet parents) has WCAG AA verified for the static layout, but the auto-refresh cadence is not yet wrapped in an
aria-liveregion. Auto-refresh is suspended when the document is hidden so background tabs don’t spam.
Compatibility
We test on the following combinations and target full support for them:
- Chrome / Edge (current + previous major) on macOS and Windows.
- Safari (current + previous major) on macOS and iOS.
- Firefox (current) on macOS and Windows.
- VoiceOver (macOS, iOS) and NVDA (Windows) for screen reader users.
- Light and dark color modes;
prefers-reduced-motionis respected for sheet animations.
Assistive technology guidance
We use semantic HTML wherever we can, which means most assistive tech works without configuration. A few tips:
- Use Tab to enter the appointment table, then Enter on a row to open the detail sheet.
- Inside the status pill group, use arrow keys to filter without leaving the keyboard zone.
- Press Esc to dismiss any popover, dialog, or sheet and return focus to the element that opened it.
- Toggle dark mode from the user menu in the top-right; contrast tokens stay AA in both modes.
How to report an issue
If something doesn’t work for you — a broken keyboard path, a missing label, low contrast, anything — please email accessibility@enpet.ai with:
- The page URL (e.g.
/dashboard/appointments). - What assistive tech you use, including version (e.g. VoiceOver on macOS 15).
- What you expected to happen and what actually happened.
We respond within 2 business days and prioritise WCAG-blocking issues for the next sprint.
Formal VPAT
A signed VPAT 2.5 (Voluntary Product Accessibility Template) document is available on request for procurement. Email accessibility@enpet.ai with your organization name and we’ll send the current version (revised quarterly).