Audit ledgers
Before, after, and the diff
These numbers render directly from the committed machine ledgers (audit/*.json): axe-core scans across three viewports plus a manual-judgment pass, then a rescan diff pairing each before-page with its after-page. No violations found within tested scope on the after-site; that is a statement of scope, not a certification.
84
Findings on the before-variant
0
Findings on the after-site
84
Fixed in the diff
0
Still open, regressed, or lost
Seeded-set reconciliation
The before-variant carries exactly 12 documented barriers. Every finding in the ledger maps to one of them; the build script fails if an unmapped violation ever appears.
| Seeded ID | Detection | Findings | Rules involved |
|---|---|---|---|
| V1 | axe + manual | 3 (2 axe, 1 manual) | select-name, placeholder-only-labels |
| V2 | manual only | 1 (0 axe, 1 manual) | clickable-div-no-keyboard |
| V3 | axe + manual | 22 (22 axe, 0 manual) | color-contrast |
| V4 | manual only | 1 (0 axe, 1 manual) | focus-visible-removed |
| V5 | axe + manual | 3 (2 axe, 1 manual) | image-alt, junk-alt-text |
| V6 | axe + manual | 4 (4 axe, 0 manual) | heading-order |
| V7 | axe + manual | 2 (1 axe, 1 manual) | aria-dialog-name, keyboard-trap |
| V8 | axe + manual | 3 (2 axe, 1 manual) | button-name, autoplay-ignores-reduced-motion |
| V9 | axe + manual | 40 (40 axe, 0 manual) | link-name, target-size |
| V10 | manual only | 1 (0 axe, 1 manual) | color-only-error-indication |
| V11 | manual only | 1 (0 axe, 1 manual) | focus-obscured-sticky-header |
| V12 | axe + manual | 3 (2 axe, 1 manual) | label, redundant-entry |
8 of 12 seeded violations carry at least one automated finding; 4 (V10, V11, V2, V4) are catchable only by a human.
Every before-finding
| Seeded | Severity | WCAG | Rule | Page | Selector |
|---|---|---|---|---|---|
| V7 | Serious | aria-dialog-name | /before | .max-w-md | |
| V8 | Blocker | 4.1.2 | button-name | /before | .left-3 |
| V8 | Blocker | 4.1.2 | button-name | /before | .right-3 |
| V3 | Serious | 1.4.3 | color-contrast | /before | .shrink-0.py-16.w-full:nth-child(2) > .mx-auto.max-w-6xl > .text-4xl.font-extrab… |
| V3 | Serious | 1.4.3 | color-contrast | /before | .shrink-0.py-16.w-full:nth-child(2) > .mx-auto.max-w-6xl > .mt-3.max-w-xl.text-\… |
| V3 | Serious | 1.4.3 | color-contrast | /before | .text-\[\#b6bcc9\].no-underline[href$="services"] |
| V3 | Serious | 1.4.3 | color-contrast | /before | .text-\[\#b6bcc9\].no-underline[href$="providers"] |
| V3 | Serious | 1.4.3 | color-contrast | /before | .text-\[\#b6bcc9\].no-underline[href$="locations"] |
| V3 | Serious | 1.4.3 | color-contrast | /before | .text-\[\#b6bcc9\].no-underline[href$="contact"] |
| V6 | Moderate | heading-order | /before | section:nth-child(4) > .mx-auto.max-w-6xl.px-6 > .text-2xl | |
| V9 | Serious | 2.4.4 | link-name | /before | a[href$="facebook"] |
| V9 | Serious | 2.4.4 | link-name | /before | a[href="https://example.com/x"] |
| V9 | Serious | 2.4.4 | link-name | /before | a[href$="instagram"] |
| V9 | Serious | 2.4.4 | link-name | /before | a[href$="youtube"] |
| V9 | Serious | 2.5.8 | target-size | /before | a[href$="facebook"] |
| V9 | Serious | 2.5.8 | target-size | /before | a[href="https://example.com/x"] |
| V9 | Serious | 2.5.8 | target-size | /before | a[href$="instagram"] |
| V9 | Serious | 2.5.8 | target-size | /before | a[href$="youtube"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/services | .text-\[\#b6bcc9\].no-underline[href$="services"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/services | .text-\[\#b6bcc9\].no-underline[href$="providers"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/services | .text-\[\#b6bcc9\].no-underline[href$="locations"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/services | .text-\[\#b6bcc9\].no-underline[href$="contact"] |
| V6 | Moderate | heading-order | /before/services | .cursor-pointer.rounded-lg.border:nth-child(1) > .text-lg | |
| V9 | Serious | 2.4.4 | link-name | /before/services | a[href$="facebook"] |
| V9 | Serious | 2.4.4 | link-name | /before/services | a[href="https://example.com/x"] |
| V9 | Serious | 2.4.4 | link-name | /before/services | a[href$="instagram"] |
| V9 | Serious | 2.4.4 | link-name | /before/services | a[href$="youtube"] |
| V9 | Serious | 2.5.8 | target-size | /before/services | a[href$="facebook"] |
| V9 | Serious | 2.5.8 | target-size | /before/services | a[href="https://example.com/x"] |
| V9 | Serious | 2.5.8 | target-size | /before/services | a[href$="instagram"] |
| V9 | Serious | 2.5.8 | target-size | /before/services | a[href$="youtube"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/providers | .text-\[\#b6bcc9\].no-underline[href$="services"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/providers | .text-\[\#b6bcc9\].no-underline[href$="providers"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/providers | .text-\[\#b6bcc9\].no-underline[href$="locations"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/providers | .text-\[\#b6bcc9\].no-underline[href$="contact"] |
| V6 | Moderate | heading-order | /before/providers | .rounded-lg.border.p-6:nth-child(1) > h4 | |
| V5 | Blocker | 1.1.1 | image-alt | /before/providers | .rounded-lg.border.p-6:nth-child(1) > img[src$="provider-1.svg"] |
| V5 | Blocker | 1.1.1 | image-alt | /before/providers | .rounded-lg.border.p-6:nth-child(2) > img[src$="provider-2.svg"] |
| V9 | Serious | 2.4.4 | link-name | /before/providers | a[href$="facebook"] |
| V9 | Serious | 2.4.4 | link-name | /before/providers | a[href="https://example.com/x"] |
| V9 | Serious | 2.4.4 | link-name | /before/providers | a[href$="instagram"] |
| V9 | Serious | 2.4.4 | link-name | /before/providers | a[href$="youtube"] |
| V9 | Serious | 2.5.8 | target-size | /before/providers | a[href$="facebook"] |
| V9 | Serious | 2.5.8 | target-size | /before/providers | a[href="https://example.com/x"] |
| V9 | Serious | 2.5.8 | target-size | /before/providers | a[href$="instagram"] |
| V9 | Serious | 2.5.8 | target-size | /before/providers | a[href$="youtube"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/locations | .text-\[\#b6bcc9\].no-underline[href$="services"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/locations | .text-\[\#b6bcc9\].no-underline[href$="providers"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/locations | .text-\[\#b6bcc9\].no-underline[href$="locations"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/locations | .text-\[\#b6bcc9\].no-underline[href$="contact"] |
| V6 | Moderate | heading-order | /before/locations | #crescent-park > h4 | |
| V9 | Serious | 2.4.4 | link-name | /before/locations | a[href$="facebook"] |
| V9 | Serious | 2.4.4 | link-name | /before/locations | a[href="https://example.com/x"] |
| V9 | Serious | 2.4.4 | link-name | /before/locations | a[href$="instagram"] |
| V9 | Serious | 2.4.4 | link-name | /before/locations | a[href$="youtube"] |
| V9 | Serious | 2.5.8 | target-size | /before/locations | a[href$="facebook"] |
| V9 | Serious | 2.5.8 | target-size | /before/locations | a[href="https://example.com/x"] |
| V9 | Serious | 2.5.8 | target-size | /before/locations | a[href$="instagram"] |
| V9 | Serious | 2.5.8 | target-size | /before/locations | a[href$="youtube"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/contact | .text-\[\#b6bcc9\].no-underline[href$="services"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/contact | .text-\[\#b6bcc9\].no-underline[href$="providers"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/contact | .text-\[\#b6bcc9\].no-underline[href$="locations"] |
| V3 | Serious | 1.4.3 | color-contrast | /before/contact | .text-\[\#b6bcc9\].no-underline[href$="contact"] |
| V12 | Blocker | 4.1.2 | label | /before/contact | input[name="nameConfirm"] |
| V12 | Blocker | 4.1.2 | label | /before/contact | input[name="phoneConfirm"] |
| V9 | Serious | 2.4.4 | link-name | /before/contact | a[href$="facebook"] |
| V9 | Serious | 2.4.4 | link-name | /before/contact | a[href="https://example.com/x"] |
| V9 | Serious | 2.4.4 | link-name | /before/contact | a[href$="instagram"] |
| V9 | Serious | 2.4.4 | link-name | /before/contact | a[href$="youtube"] |
| V1 | Blocker | 4.1.2 | select-name | /before/contact | select[name="service"] |
| V1 | Blocker | 4.1.2 | select-name | /before/contact | select[name="location"] |
| V9 | Serious | 2.5.8 | target-size | /before/contact | a[href$="facebook"] |
| V9 | Serious | 2.5.8 | target-size | /before/contact | a[href="https://example.com/x"] |
| V9 | Serious | 2.5.8 | target-size | /before/contact | a[href$="instagram"] |
| V9 | Serious | 2.5.8 | target-size | /before/contact | a[href$="youtube"] |
| V1 | Serious | 3.3.2 | placeholder-only-labels (manual) | /before/contact | form input[placeholder] |
| V2 | Serious | 2.1.1 | clickable-div-no-keyboard (manual) | /before/services | div.cursor-pointer[onClick] |
| V4 | Serious | 2.4.7 | focus-visible-removed (manual) | /before | .before-scope *:focus |
| V5 | Moderate | 1.1.1 | junk-alt-text (manual) | /before/providers | img[alt="IMG_4821.JPG"] |
| V7 | Blocker | 2.1.2 | keyboard-trap (manual) | /before | [role="dialog"] |
| V8 | Serious | 2.2.2 | autoplay-ignores-reduced-motion (manual) | /before | .before-carousel-track |
| V10 | Serious | 3.3.1 | color-only-error-indication (manual) | /before/contact | form .border-\[\#dc2626\] |
| V11 | Moderate | 2.4.11 | focus-obscured-sticky-header (manual) | /before/locations | header.sticky |
| V12 | Moderate | 3.3.7 | redundant-entry (manual) | /before/contact | input[name="nameConfirm"], input[name="phoneConfirm"] |
Scan metadata: axe-core 4.12.1 · viewports desktop 1280 / mobile 375 / 320px reflow · exhibit iframes excluded from after-scans (the framed before-variant is ledgered here, not there). Continue to the draft conformance report.