{
  "measuredDate": "2026-08-25",
  "claim": "Real numbers from a real run — a snapshot you can re-run. Not a live CI gate.",
  "summary": {
    "axe violations": {
      "value": 0,
      "detail": "0 violations across 34 scans (17 routes × 2 themes), axe-core 4.11.4, defaults + label-content-name-mismatch + color-contrast, reduced-motion + scroll-settled"
    },
    "reduced-motion layers": {
      "value": 6,
      "detail": "usePrefersReducedMotion hook · global 0.01ms CSS rule · .reveal rest-visible floors · @media (scripting:none) no-JS floors · framer useReducedMotion · motion-safe media wrappers — the rest state is the visible state under every gate"
    },
    "measured, both themes": {
      "value": "AA",
      "detail": "axe color-contrast enabled across all 34 scans (light + dark, theme-applied + settled) — 0 contrast violations; the dark-mode contrast repair holds"
    },
    "tests passing": {
      "value": 763,
      "detail": "the portfolio's own vitest suite (component + integration + static floors) — not the AccessMap project's 1,680"
    },
    "focus stops visible": {
      "value": "100%",
      "detail": "every tab stop focus-visible with the 2px terracotta ring (real keyboard-traced sample, H3 re-audit; re-affirmed by 0 axe focus violations this run)"
    },
    "worst-case CLS": {
      "value": "0.0039",
      "detail": "worst route × width: work-flagstone@768 = 0.00390 — production build, buffered layout-shift observer, scroll-through; floor 0.004"
    }
  },
  "method": {
    "engine": "Chromium 1228 (playwright-core 1.61.1) headless, DSF2 — NOT Safari/WebKit",
    "honesty": "Chromium — NOT Safari/WebKit. Static production build served locally. Re-run: npm run build, serve out/ on :3005, then node design-reviews/uplift/assets/p3/run-axe.mjs and node design-reviews/uplift/assets/p5/run-cls.mjs.",
    "rules": "defaults + label-content-name-mismatch enabled + color-contrast enabled",
    "when": "2026-08-25"
  },
  "axePerScan": {
    "home__light": 0,
    "home__dark": 0,
    "about__light": 0,
    "about__dark": 0,
    "accessibility__light": 0,
    "accessibility__dark": 0,
    "archive__light": 0,
    "archive__dark": 0,
    "blog__light": 0,
    "blog__dark": 0,
    "blog-building-flagstone__light": 0,
    "blog-building-flagstone__dark": 0,
    "certificates__light": 0,
    "certificates__dark": 0,
    "colophon__light": 0,
    "colophon__dark": 0,
    "contact__light": 0,
    "contact__dark": 0,
    "runway__light": 0,
    "runway__dark": 0,
    "work__light": 0,
    "work__dark": 0,
    "work-flagstone__light": 0,
    "work-flagstone__dark": 0,
    "work-claude-corp__light": 0,
    "work-claude-corp__dark": 0,
    "work-dashboard__light": 0,
    "work-dashboard__dark": 0,
    "work-prompt-library__light": 0,
    "work-prompt-library__dark": 0,
    "work-ghost-code__light": 0,
    "work-ghost-code__dark": 0,
    "404__light": 0,
    "404__dark": 0
  },
  "clsPerRoute": {
    "home@375": 0,
    "home@768": 0.00003,
    "home@1440": 0.00001,
    "about@375": 0,
    "about@768": 0.00003,
    "about@1440": 0.00001,
    "accessibility@375": 0,
    "accessibility@768": 0.00003,
    "accessibility@1440": 0.00001,
    "archive@375": 0,
    "archive@768": 0,
    "archive@1440": 0,
    "blog@375": 0,
    "blog@768": 0.00003,
    "blog@1440": 0.00001,
    "blog-building-flagstone@375": 0,
    "blog-building-flagstone@768": 0.00003,
    "blog-building-flagstone@1440": 0.00001,
    "certificates@375": 0,
    "certificates@768": 0.00003,
    "certificates@1440": 0.00001,
    "colophon@375": 0,
    "colophon@768": 0.00003,
    "colophon@1440": 0.00001,
    "contact@375": 0.00034,
    "contact@768": 0.00003,
    "contact@1440": 0.00001,
    "runway@375": 0,
    "runway@768": 0.00003,
    "runway@1440": 0.00001,
    "work@375": 0,
    "work@768": 0.00003,
    "work@1440": 0.00001,
    "work-flagstone@375": 0,
    "work-flagstone@768": 0.0039,
    "work-flagstone@1440": 0.0013,
    "work-claude-corp@375": 0,
    "work-claude-corp@768": 0.0015,
    "work-claude-corp@1440": 0.0005,
    "work-dashboard@375": 0,
    "work-dashboard@768": 0.0015,
    "work-dashboard@1440": 0.0005,
    "work-prompt-library@375": 0,
    "work-prompt-library@768": 0.00003,
    "work-prompt-library@1440": 0.00001,
    "work-ghost-code@375": 0,
    "work-ghost-code@768": 0.00003,
    "work-ghost-code@1440": 0.00001,
    "404@375": 0,
    "404@768": 0.00003,
    "404@1440": 0.00001
  }
}
