Conformance report
Draft ACR: WCAG 2.2 A and AA
Draft ACR based on internal audit of a demonstration product. Generated from the committed audit ledgers and completed by hand; every one of the 55 Level A and AA criteria has a conformance judgment and remarks. A production ACR would follow the ITI VPAT template and an independent audit; this page shows the working method.
2 row(s) missing remarks: 2.2.2, 2.3.1
| Criterion | Level | Conformance | Remarks and explanations |
|---|---|---|---|
| 1.1.1 Non-text Content | A | Supports | Images are decorative vector art marked decorative (empty alt or aria-hidden); monogram avatars are hidden; meaning always carried by adjacent text. |
| 1.2.1 Audio-only and Video-only (Prerecorded) | A | Not Applicable | No audio or video content anywhere on the site. |
| 1.2.2 Captions (Prerecorded) | A | Not Applicable | No prerecorded media. |
| 1.2.3 Audio Description or Media Alternative (Prerecorded) | A | Not Applicable | No prerecorded media. |
| 1.2.4 Captions (Live) | AA | Not Applicable | No live media. |
| 1.2.5 Audio Description (Prerecorded) | AA | Not Applicable | No prerecorded media. |
| 1.3.1 Info and Relationships | A | Supports | Semantic HTML throughout: strict heading outline, labeled sections (aria-labelledby), real tables with th/scope/caption for hours, fieldset/legend for radio groups. |
| 1.3.2 Meaningful Sequence | A | Supports | Single-column document order matches visual order on all pages. |
| 1.3.3 Sensory Characteristics | A | Supports | No instruction relies on shape, position, or sound; labels are textual. |
| 1.3.4 Orientation | AA | Supports | No orientation lock; layout works in portrait and landscape. |
| 1.3.5 Identify Input Purpose | AA | Supports | Appointment form uses autocomplete=name and autocomplete=tel on the matching fields. |
| 1.4.1 Use of Color | A | Supports | Color never carries meaning alone: errors get text plus icons, links in prose are underlined. |
| 1.4.2 Audio Control | A | Not Applicable | No auto-playing audio. |
| 1.4.3 Contrast (Minimum) | AA | Supports | Every text/background pair comes from design-tokens.json; all 25 pairs unit-tested at 4.5:1 or better in CI (lowest 5.47:1). |
| 1.4.4 Resize Text | AA | Supports | Rem-based type; 200% text zoom verified without loss of content. |
| 1.4.5 Images of Text | AA | Supports | No images of text anywhere; all text is real text. |
| 1.4.10 Reflow | AA | Supports | 320px reflow (400% zoom) scanned as a first-class viewport in the CI gate; no horizontal scrolling for reading. |
| 1.4.11 Non-text Contrast | AA | Supports | Focus indicator 7.9:1 (light) / 9.4:1 (dark); form field borders and icons meet 3:1 against adjacent colors. |
| 1.4.12 Text Spacing | AA | Supports | No fixed heights on text containers; spacing overrides reflow cleanly. |
| 1.4.13 Content on Hover or Focus | AA | Supports | No content appears on hover or focus beyond browser defaults. |
| 2.1.1 Keyboard | A | Supports | Every interactive element is a native link, button, or form control; full keyboard walk evidence in the audit ledger. |
| 2.1.2 No Keyboard Trap | A | Supports | No traps; the only dialog-like state (form success) never contains focus. |
| 2.1.4 Character Key Shortcuts | A | Not Applicable | No character-key shortcuts are implemented. |
| 2.2.1 Timing Adjustable | A | Not Applicable | No time limits on any interaction. |
| 2.2.2 Pause, Stop, Hide | A | Supports | |
| 2.3.1 Three Flashes or Below Threshold | A | Supports | |
| 2.4.1 Bypass Blocks | A | Supports | Skip link to #main on every page, visible on focus. |
| 2.4.2 Page Titled | A | Supports | Unique, descriptive titles via the Next.js metadata template. |
| 2.4.3 Focus Order | A | Supports | Focus order follows document order; verified in the keyboard walk. |
| 2.4.4 Link Purpose (In Context) | A | Supports | Link text is self-describing; repeated links carry sr-only context (e.g. per-location hours links). |
| 2.4.5 Multiple Ways | AA | Supports | Header navigation, footer navigation, and in-page links provide multiple ways. |
| 2.4.6 Headings and Labels | AA | Supports | Headings and labels describe their sections; form labels name their fields. |
| 2.4.7 Focus Visible | AA | Supports | Global 3px :focus-visible outline with offset; never removed. |
| 2.4.11 Focus Not Obscured (Minimum) | AA | Supports | Header is not sticky; nothing overlays focused elements. |
| 2.5.1 Pointer Gestures | A | Supports | No multipoint or path-based gestures. |
| 2.5.2 Pointer Cancellation | A | Supports | All actions fire on click/up; no down-event-only activation. |
| 2.5.3 Label in Name | A | Supports | Visible labels are the start of every accessible name. |
| 2.5.4 Motion Actuation | A | Not Applicable | No motion-actuated functionality. |
| 2.5.7 Dragging Movements | AA | Supports | No dragging interactions. |
| 2.5.8 Target Size (Minimum) | AA | Supports | All interactive targets are at least 44px (min-h-11 on controls), above the 24px minimum. |
| 3.1.1 Language of Page | A | Supports | html lang=en on every page. |
| 3.1.2 Language of Parts | AA | Supports | Single-language content (English) throughout. |
| 3.2.1 On Focus | A | Supports | Focus never triggers a context change. |
| 3.2.2 On Input | A | Supports | Input never auto-submits or redirects; submission is an explicit button. |
| 3.2.3 Consistent Navigation | AA | Supports | Identical header and footer navigation on every page. |
| 3.2.4 Consistent Identification | AA | Supports | Components are styled and named consistently across pages. |
| 3.2.6 Consistent Help | A | Supports | Contact/help (phone + appointment link) appears in the same relative order in header and footer on every page. |
| 3.3.1 Error Identification | A | Supports | Validation failures render a focused role=alert error summary with per-field text errors linked by aria-describedby and aria-invalid. |
| 3.3.2 Labels or Instructions | A | Supports | Every field has a visible programmatic label; hints via aria-describedby. |
| 3.3.3 Error Suggestion | AA | Supports | Error messages state the fix, with a format example for the phone field. |
| 3.3.4 Error Prevention (Legal, Financial, Data) | AA | Not Applicable | No legal, financial, or data-modifying transactions (demo booking stores nothing). |
| 3.3.7 Redundant Entry | A | Supports | Each fact is asked exactly once; copy commits to it explicitly. |
| 3.3.8 Accessible Authentication (Minimum) | AA | Not Applicable | No authentication on public surfaces (the demo has no login). |
| 4.1.2 Name, Role, Value | A | Supports | Native elements everywhere; the theme selector is a labeled select; state changes use standard semantics. |
| 4.1.3 Status Messages | AA | Supports | Status changes (error summary, success confirmation) use role=alert and focus management. |
Basis: Generated from the after-audit findings ledger (axe-core Stage A across 6 pages x 3 viewports, tags incl. best-practice) plus the Stage B manual pass. DRAFT input for an ACR; not an ACR itself. Suggestions are per-criterion starting points. Absence of findings is evidence within tested scope only; it never certifies compliance.