{
  "url": "https://es.stripchat.com",
  "auditedAt": "2026-07-21T01:21:49.123Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Atomic coverage complete across 58 checks and five representative public paths.",
  "page": {
    "appType": "hybrid",
    "framework": "Unknown bundled client application",
    "notes": "Localized live-cam listing/detail application with age-verification, consent, login and app manifest. Cloudflare returns 403 to raw/crawler fetches."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "discoverability",
    "trace",
    "har",
    "lighthouse",
    "headers",
    "cookies",
    "trackers",
    "images",
    "secrets",
    "heap-summary",
    "curl"
  ],
  "guidanceConsulted": [
    "accessible-error-announcement"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "Desktop entry page at 1440x900",
      "condition": "viewport: 1440x900",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "Mobile entry page showing age and cookie banners",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "Entry page with prefers-color-scheme: dark",
      "condition": "prefers-color-scheme: dark",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "Mobile layout metrics and layout-shift/long-task observations",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "Rendered entry-page DOM and styles",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/page-probe.json",
      "caption": "Metadata, semantics, forms, manifest and platform probe",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/css-modern-probe.json",
      "caption": "CSS feature-rule probe",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/reduced-motion.json",
      "caption": "Animation probe with reduced motion requested",
      "condition": "prefers-reduced-motion: reduce",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/focus-targets.json",
      "caption": "Programmatic focus and target-size probe on login path",
      "condition": "keyboard focus",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/listing.png",
      "caption": "Recommended listing archetype",
      "condition": "viewport: 1440x900",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/detail.png",
      "caption": "Live-room/detail archetype with age gate and chat",
      "condition": "viewport: 1440x900",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/detail-dom.json",
      "caption": "Rendered detail-page DOM",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/login-mobile.png",
      "caption": "Login form archetype",
      "condition": "viewport: 412x915",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/login-dom.json",
      "caption": "Rendered login DOM",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/not-found.png",
      "caption": "404 recovery state",
      "condition": "viewport: 412x915",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-rendered.png",
      "caption": "Rendered browser view",
      "condition": "JavaScript enabled",
      "findingIds": [
        "F16"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-crawler.png",
      "caption": "Crawler/no-JS view",
      "condition": "JavaScript disabled",
      "findingIds": [
        "F16"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "DevTools performance trace",
      "condition": "default load",
      "findingIds": []
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "Compact trace timing and main-thread summary",
      "condition": "default load",
      "findingIds": [
        "F10",
        "F12",
        "F18",
        "F23"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "Network archive for entry load",
      "condition": "10 second capture",
      "findingIds": []
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "Compact network summary",
      "condition": "10 second capture",
      "findingIds": [
        "F10",
        "F12",
        "F18",
        "F23"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "Lighthouse report",
      "condition": "mobile throttling",
      "findingIds": [
        "F03",
        "F09",
        "F10",
        "F12",
        "F13",
        "F15"
      ]
    },
    {
      "type": "other",
      "path": "evidence/lighthouse-summary.json",
      "caption": "Selected Lighthouse metrics and audit details",
      "condition": "mobile throttling",
      "findingIds": [
        "F03",
        "F09",
        "F10",
        "F12",
        "F13",
        "F15"
      ]
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "Security response-header audit",
      "condition": "default",
      "findingIds": [
        "F17",
        "F21"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "Cookie security audit",
      "condition": "default",
      "findingIds": [
        "F17",
        "F21"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "Third-party origin inventory",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "Image delivery audit",
      "condition": "default",
      "findingIds": [
        "F14"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "Client-side secret scan",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.json",
      "caption": "Baseline heap summary",
      "condition": "after load",
      "findingIds": [
        "F24"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-post-scroll.json",
      "caption": "Heap after ten bottom/top scroll cycles",
      "condition": "repeated feed interaction",
      "findingIds": [
        "F24"
      ]
    }
  ],
  "config": {
    "loaded": false
  },
  "coverage": {
    "catalogVersion": "modern-web-guidance@0.0.172",
    "catalogChecksum": "sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7",
    "expected": 58,
    "recorded": 58,
    "judged": 58,
    "blocked": 0,
    "notRun": 0,
    "missing": 0,
    "unknown": 0,
    "duplicates": 0,
    "complete": true
  },
  "checkOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-color-scheme",
      "status": "issues",
      "confidence": "high",
      "method": "Emulated dark screenshot plus computed/CSS probe",
      "evidence": "The page remained the same hard-coded dark palette; colorScheme was normal and no prefers-color-scheme rules were found.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "issues",
      "confidence": "high",
      "method": "getAnimations under prefers-reduced-motion: reduce plus CSS rule scan",
      "evidence": "The reduce preference matched, yet two 250ms animations still ran and no reduced-motion media rule was found.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse contrast audit",
      "evidence": "Lighthouse found multiple failures, including 2.55:1 banner copy, 2.74:1 highlighted text, and 3.7:1 cookie-accept text.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM/CSS feature probe across routes",
      "evidence": "The API exists in the browser, but no authored transition rules or transition treatment were observed across listing, room, login and 404 routes.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon across entry, listing, detail, login and 404 paths",
      "evidence": "No scroll-linked animation, parallax, scrollytelling, or entry/exit reveal was present on the representative pages.",
      "reason": "No scroll-linked animation, parallax, scrollytelling, or entry/exit reveal was present on the representative pages."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "Mobile screenshots and layout metrics",
      "evidence": "The listing uses native document scrolling without horizontal overflow or custom pointer gesture traps.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Long-page screenshots and CSS probe",
      "evidence": "Headers/chrome remain static on long content and no scroll-state container-query treatment was found.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon across entry, listing, detail, login and 404 paths",
      "evidence": "No tooltip or edge-positioned popover was exposed in the representative public paths, so there was no anchored overlay to judge.",
      "reason": "No tooltip or edge-positioned popover was exposed in the representative public paths, so there was no anchored overlay to judge."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Visual review of navigation and recovery states",
      "evidence": "Selected tabs, room identity, headings and the 404 recovery CTA clearly communicate location and next action.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Mobile screenshot on load",
      "evidence": "The cookie panel overlays the lower content while the age-verification banner occupies 136px near the top, leaving a constrained first viewport.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "DOM primitive and semantic element counts",
      "evidence": "One dialog exists, but the persistent cookie overlay is custom page chrome rather than a native dismissible top-layer primitive.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Desktop and mobile screenshots",
      "evidence": "Desktop devotes a persistent sidebar, two nav rows, age banner and cookie bar to chrome; mobile stacks two nav rows plus two overlays.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Layout primitive at 360x800",
      "evidence": "scrollWidth and clientWidth were both 360 with 0px horizontal overflow and a viewport meta tag.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "CSS stylesheet-rule probe",
      "evidence": "No @container rules were found although cards/navigation are reused in materially different desktop and mobile containers.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Keyboard focus and target-size probe",
      "evidence": "Visible focused links reported outline-style none; many navigation links measured only 28px high.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "First-viewport screenshots",
      "evidence": "The heading/content grid and room age-verification CTA make the browsing and viewing purpose explicit.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Entry-to-room walkthrough",
      "evidence": "A listed performer opens into a room with visible age verification, public chat and clearly priced private/tip actions.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "404 screenshot and room state review",
      "evidence": "The room explains its gated state and the invalid route presents a localized 404 message plus a home-page recovery action.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse plus trace and layout primitives",
      "evidence": "Mobile Lighthouse measured LCP 15.8s and TBT 601ms; the first-party trace measured 400ms blocking, despite a 1.39s unthrottled LCP.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "issues",
      "confidence": "high",
      "method": "Mobile layout-shift observer",
      "evidence": "The layout primitive recorded CLS 0.1452 from a shift at about 2.47s; all 36 inspected images lacked width/height attributes.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "issues",
      "confidence": "high",
      "method": "Trace and Lighthouse",
      "evidence": "The trace found four long tasks, longest 223ms, totaling 400ms blocking; Lighthouse TBT was 601ms.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "HAR and image audit",
      "evidence": "The load made 161 requests and transferred 2.45MB; 36/36 images lacked dimensions, 15 below-fold images were not lazy, and 8 were oversized.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse code-usage and HAR",
      "evidence": "Lighthouse estimated 1,174,421 bytes of unused JavaScript while scripts accounted for 1.37MB transferred.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered login DOM plus Lighthouse accessibility audit",
      "evidence": "The username and password inputs rely on placeholders and have neither associated labels nor aria-labels.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse contrast audit",
      "evidence": "Lighthouse enumerated contrast failures in the age banner, footer, language control and cookie action.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse structure audit plus focus probe",
      "evidence": "Heading order had no reported violation, but the focus probe found visible interactive links with no focus outline.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Desktop/mobile screenshot review",
      "evidence": "Primary headings, card labels, room controls and 404 copy remain readable without clipping at representative sizes.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "pass",
      "confidence": "high",
      "method": "Mobile layout and Lighthouse audits",
      "evidence": "The viewport allows normal scaling, content reflows at 360px with no overflow, and Lighthouse reported no target-size failures.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse errors-in-console audit",
      "evidence": "Lighthouse reported no console-error items during the audited load.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "DOM metadata and image audit",
      "evidence": "DOCTYPE html and UTF-8 are correct, but every inspected image lacked explicit dimensions and 8 were more than 2x display size.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse best-practices diagnostics",
      "evidence": "Lighthouse best-practices scored 0.58 and reported three deprecated API uses in the Cloudflare challenge script.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "DOM metadata probe",
      "evidence": "The page has a descriptive Spanish title and a 169-character meta description.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "Discoverability primitive plus robots/sitemap fetch",
      "evidence": "Raw fetch returned 403, only 2% of rendered content words survived, and title/H1/description were absent; direct robots and sitemap requests also received Cloudflare block pages.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "DOM metadata probe",
      "evidence": "The homepage declares a self-canonical, index/follow robots policy and 35 hreflang alternatives.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "DOM metadata probe",
      "evidence": "The page exposes one JSON-LD block and six Open Graph properties alongside matching visible content.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Headers and cookies primitives",
      "evidence": "HTTPS and HSTS are present, but CSP and nosniff are absent and all 26 audited cookies were flagged insecure by the primitive, including 20+ without Secure.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Trackers, HAR and cookie audit",
      "evidence": "The page contacted 10 third-party origins; assets.chapturist.com alone received 100 requests, before consent was accepted.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "issues",
      "confidence": "high",
      "method": "Login DOM and platform probe",
      "evidence": "The public login flow offers password and passwordless options but no observed WebAuthn/passkey capability; no on-load permission request was observed.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Response-header audit",
      "evidence": "HSTS and X-Frame-Options DENY are present, but CSP, Referrer-Policy, Permissions-Policy and nosniff are missing.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "issues",
      "confidence": "high",
      "method": "Discoverability primitive",
      "evidence": "A non-JS/raw client received HTTP 403 and only 2% rendered-content coverage; title, H1 and description did not survive.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Room, login and 404 visual review",
      "evidence": "The representative overlays and room controls remained within their viewports and loaded into stable, actionable states.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "Manifest/service-worker probe",
      "evidence": "A manifest link exists, but the loaded page had no controlling service worker and no offline fallback was exposed.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Invalid-route walkthrough",
      "evidence": "The invalid route renders a localized 404, a clear explanation, a home CTA and alternative featured content.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "DOM metadata and localized rendering",
      "evidence": "html lang is es, Spanish UI is consistent, and 35 hreflang alternatives are declared; no RTL variant was in the selected locale.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "Localized page/route review",
      "evidence": "Spanish copy, locale-domain routing and localized metadata are consistent; the public paths expose no hand-formatted currency/date strings requiring Intl verification.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon across entry, listing, detail, login and 404 paths",
      "evidence": "The audited public paths displayed no scheduled events, dates, or user-facing times that require time-zone or DST conversion.",
      "reason": "The audited public paths displayed no scheduled events, dates, or user-facing times that require time-zone or DST conversion."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "Mobile consent screenshot and cookie audit",
      "evidence": "The green “Aceptar todas” button dominates while “Gestionar” is low-emphasis text; 26 cookies were already set before a consent choice.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "issues",
      "confidence": "high",
      "method": "Login DOM/form inspection",
      "evidence": "The login inputs have no required attributes or accessible error linkage, and CAPTCHA prevented a meaningful native invalid-submit state.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Login DOM inspection",
      "evidence": "Username and password inputs omit autocomplete=username and autocomplete=current-password, limiting safe password-manager/autofill assistance.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "high",
      "method": "Room screenshot and public-flow review",
      "evidence": "The gated room displays the private-show price (60 tokens) before action and makes age verification explicit; no subscription continuity was presented publicly.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Images primitive and HAR",
      "evidence": "15 images use legacy formats, 22 lack srcset, 8 are oversized and 15 below-fold images are not lazy-loaded.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "HAR and trace",
      "evidence": "The initial experience issues 161 requests, 51 XHR/fetches and four long main-thread tasks before user interaction.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "HAR and tracker inventory",
      "evidence": "Ten third-party origins participate in a 2.45MB initial load, with 100 requests to the asset host and 30 to an image CDN.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon across entry, listing, detail, login and 404 paths",
      "evidence": "Emerging capability judged out of scope: the public browsing and age-verification surfaces do not declare an agent-facing intent.",
      "reason": "Emerging capability judged out of scope: the public browsing and age-verification surfaces do not declare an agent-facing intent."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon across entry, listing, detail, login and 404 paths",
      "evidence": "No summarisation or language-model task is part of the representative user journeys, so on-device inference is not applicable.",
      "reason": "No summarisation or language-model task is part of the representative user journeys, so on-device inference is not applicable."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "issues",
      "confidence": "medium",
      "method": "Baseline/post heap-summary comparison",
      "evidence": "After ten bottom/top feed scroll cycles, node count grew 1,139,072→1,631,272 (+43%) and self size 54.1→75.4MB (+39%); dynamic feed loading makes leak confidence medium.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "issues",
      "confidence": "high",
      "method": "Baseline heap summary",
      "evidence": "The initial page retained about 1.14M heap nodes and 54.1MB self size, high for a listing before user interaction.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Heap constructor summaries",
      "evidence": "Detached DOM constructors did not appear among the largest retained constructor populations in either summary; no direct listener accumulation was observed.",
      "pathIds": [
        "home"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01",
        "F02",
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06",
        "F07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F08",
        "F09"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F10",
        "F11",
        "F12"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F13",
        "F03",
        "F09"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F14",
        "F15"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F17",
        "F18",
        "F19"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F16",
        "F20"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F21",
        "F22",
        "F13"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F14",
        "F23"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "Emerging capability judged out of scope: the public browsing and age-verification surfaces do not declare an agent-facing intent. No summarisation or language-model task is part of the representative user journeys, so on-device inference is not applicable."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F24"
      ]
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and primary discovery grid; represents entry, global navigation, notices and metadata.",
      "url": "https://es.stripchat.com/",
      "conditions": [
        "desktop 1440x900",
        "mobile 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "non-JS crawler"
      ],
      "result": "issues"
    },
    {
      "id": "listing",
      "description": "Recommended listing; represents category/filter grid templates.",
      "url": "https://es.stripchat.com/girls/recommended",
      "conditions": [
        "desktop 1440x900"
      ],
      "result": "issues"
    },
    {
      "id": "detail",
      "description": "Performer room; represents live detail, age gate, chat and paid actions.",
      "url": "https://es.stripchat.com/DIANITA_1988",
      "conditions": [
        "desktop 1440x900"
      ],
      "result": "issues"
    },
    {
      "id": "login",
      "description": "Authentication form; represents account entry and form semantics.",
      "url": "https://es.stripchat.com/login",
      "conditions": [
        "mobile 412x915",
        "keyboard focus"
      ],
      "result": "issues"
    },
    {
      "id": "not-found",
      "description": "Invalid route; represents HTTP/navigation recovery state.",
      "url": "https://es.stripchat.com/this-route-does-not-exist-audit",
      "conditions": [
        "mobile 412x915"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F03",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Several important controls and notices fail minimum contrast",
      "evidence": "Lighthouse measured ratios from 2.55:1 to 3.71:1 in the age banner, footer and cookie action.",
      "suggestedFix": "Adjust foreground/background tokens to at least WCAG AA and test all interactive states.",
      "effort": "small",
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F09",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Keyboard focus is not visibly exposed on many links",
      "evidence": "Programmatically focused visible navigation links reported outline style none; many targets were only 28px high.",
      "suggestedFix": "Provide a high-contrast :focus-visible ring and increase compact tap targets to at least 44 CSS px where practical.",
      "effort": "small",
      "artifacts": [
        "evidence/focus-targets.json"
      ]
    },
    {
      "id": "F10",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "Mobile loading and main-thread responsiveness are poor",
      "evidence": "Lighthouse measured LCP 15.8s and TBT 601ms; trace recorded four long tasks and 400ms blocking.",
      "suggestedFix": "Profile LCP and long tasks, prioritize the hero/content request, and split/defer non-critical work.",
      "effort": "large",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "id": "F12",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "defer-rendering-heavy-content",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "The initial page ships a large, script-heavy dependency graph",
      "evidence": "161 requests transferred 2.45MB; JavaScript was 1.37MB and Lighthouse estimated 1.17MB unused.",
      "suggestedFix": "Code-split by journey, remove duplicate/unused bundles, defer below-fold UI, and tighten caching/priorities.",
      "effort": "large",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F13",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "forms",
      "guidanceCategory": "forms",
      "confidence": "high",
      "summary": "Login fields lack durable labels and autofill semantics",
      "evidence": "Rendered login HTML shows placeholder-only username/password fields with no labels, aria-labels or autocomplete tokens.",
      "suggestedFix": "Add associated labels and autocomplete=username/current-password; keep placeholders as examples only.",
      "effort": "small",
      "artifacts": [
        "evidence/login-dom.json",
        "evidence/login-mobile.png"
      ]
    },
    {
      "id": "F16",
      "severity": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "Non-JavaScript crawlers receive a blocked shell",
      "evidence": "Discoverability fetch returned 403 with 2% content coverage; title, H1 and description were absent, and robots/sitemap fetches hit Cloudflare blocks.",
      "suggestedFix": "Allow verified crawlers to fetch server-rendered localized content and serve robots/sitemap without challenge.",
      "effort": "large",
      "artifacts": [
        "evidence/discoverability-rendered.png",
        "evidence/discoverability-crawler.png",
        "evidence/discoverability.json"
      ]
    },
    {
      "id": "F17",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "confidence": "high",
      "summary": "Security headers and cookie flags are incomplete",
      "evidence": "CSP, nosniff, Referrer-Policy and Permissions-Policy are missing; 20+ first-party cookies lack Secure.",
      "suggestedFix": "Deploy a nonce/hash CSP, nosniff, strict referrer/permissions policies, and Secure/SameSite cookie defaults.",
      "effort": "medium",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ]
    },
    {
      "id": "F18",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "confidence": "high",
      "summary": "A broad third-party footprint starts before consent",
      "evidence": "Ten third-party origins load; one asset origin receives 100 requests and 26 cookies exist before consent acceptance.",
      "suggestedFix": "Gate non-essential collection on consent, audit vendor purpose/retention, and consolidate/batch requests.",
      "effort": "large",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/cookies.json"
      ]
    },
    {
      "id": "F21",
      "severity": "high",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "confidence": "high",
      "summary": "Consent presentation favors acceptance after collection has begun",
      "evidence": "“Aceptar todas” is the dominant green button, “Gestionar” is subdued text, and 26 cookies were already present.",
      "suggestedFix": "Give accept/reject/manage equal prominence and delay non-essential storage/network activity until an informed choice.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/cookies.json"
      ]
    },
    {
      "id": "F23",
      "severity": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "efficient-background-processing",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "Network and background work are disproportionate before interaction",
      "evidence": "The initial load performs 161 requests, 51 fetch/XHR calls, 10 third-party origins and four long tasks.",
      "suggestedFix": "Set a route budget, defer non-visible feeds/media, pause background work offscreen, and remove low-value third parties.",
      "effort": "large",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/trackers.json"
      ]
    },
    {
      "id": "F01",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Theme ignores the user color-scheme preference",
      "evidence": "Dark emulation produced the same hard-coded dark UI; computed color-scheme is normal and CSS probe found no preference rules.",
      "suggestedFix": "Declare color-scheme and use prefers-color-scheme/light-dark() to provide user-driven light and dark palettes.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/css-modern-probe.json"
      ]
    },
    {
      "id": "F02",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-reduced-motion",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Reduced-motion preference is not implemented",
      "evidence": "With reduce matched, two 250ms animations still ran and no reduced-motion rule was found.",
      "suggestedFix": "Add a prefers-reduced-motion: reduce layer that removes non-essential transitions and auto-motion.",
      "effort": "small",
      "artifacts": [
        "evidence/reduced-motion.json"
      ]
    },
    {
      "id": "F06",
      "severity": "medium",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Stacked age and cookie notices constrain the first mobile viewport",
      "evidence": "At 360x800, fixed cookie chrome covers the lower cards while the age banner occupies the top 136px.",
      "suggestedFix": "Consolidate notices, reserve layout space, and use a semantic dismissible surface without obscuring core cards.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-mobile.png"
      ]
    },
    {
      "id": "F07",
      "severity": "medium",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "reduced-chrome",
      "guidanceId": "css",
      "guidanceCategory": "css",
      "confidence": "high",
      "summary": "Navigation and persistent notices dominate the content frame",
      "evidence": "Desktop stacks sidebar, dual nav, age banner and cookie bar; mobile stacks dual nav and two notices.",
      "suggestedFix": "Progressively disclose secondary navigation and compact chrome once users begin scrolling.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ]
    },
    {
      "id": "F11",
      "severity": "medium",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "visual-stability",
      "guidanceId": "visually-stable-font-fallbacks",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "Late content causes excessive layout shift",
      "evidence": "Mobile layout observer recorded CLS 0.1452 and the image audit found no explicit dimensions on 36 images.",
      "suggestedFix": "Reserve image/banner geometry with width, height or aspect-ratio and stabilize late notice insertion.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/images.json"
      ]
    },
    {
      "id": "F14",
      "severity": "medium",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "Image delivery is unstable and wasteful",
      "evidence": "All 36 images lacked dimensions; 22 lacked srcset, 15 were legacy format, 15 below-fold were eager, and 8 were oversized.",
      "suggestedFix": "Emit width/height, responsive srcset/sizes, modern formats and lazy loading for below-fold media.",
      "effort": "medium",
      "artifacts": [
        "evidence/images.json"
      ]
    },
    {
      "id": "F19",
      "severity": "medium",
      "principleId": "be-private-and-secure",
      "principleCheckId": "in-context-permissions-and-modern-auth",
      "guidanceId": "passkeys",
      "guidanceCategory": "passkeys",
      "confidence": "high",
      "summary": "Authentication does not expose phishing-resistant passkeys",
      "evidence": "The login UI offers password and passwordless entry but no observed WebAuthn/passkey path.",
      "suggestedFix": "Add passkey registration/authentication and retain passwordless fallback; request permissions only in context.",
      "effort": "large",
      "artifacts": [
        "evidence/login-mobile.png",
        "evidence/login-dom.json"
      ]
    },
    {
      "id": "F20",
      "severity": "medium",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "The app-like experience has no controlling service worker",
      "evidence": "A manifest is declared, but the page had no service-worker controller or offline fallback.",
      "suggestedFix": "Add an offline shell/fallback and cache resilient static/navigation resources appropriate to the live product.",
      "effort": "large",
      "artifacts": [
        "evidence/page-probe.json"
      ]
    },
    {
      "id": "F22",
      "severity": "medium",
      "principleId": "be-trustworthy",
      "principleCheckId": "humane-error-handling",
      "guidanceId": "accessible-error-announcement",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Login error semantics are not evident",
      "evidence": "Login inputs omit required and accessible error-linkage attributes; CAPTCHA blocks submission before a useful field-error state.",
      "suggestedFix": "Validate after interaction and synchronize :user-invalid, aria-invalid, described errors and an aria-live summary.",
      "effort": "medium",
      "artifacts": [
        "evidence/login-dom.json"
      ]
    },
    {
      "id": "F24",
      "severity": "medium",
      "principleId": "be-memory-efficient",
      "principleCheckId": "no-leak-under-repeated-interaction",
      "guidanceId": "efficient-background-processing",
      "guidanceCategory": "performance",
      "confidence": "medium",
      "summary": "The feed retains a large and growing heap footprint",
      "evidence": "Baseline was 1.14M nodes/54.1MB; after ten scroll cycles it was 1.63M/75.4MB. Infinite-feed loading lowers leak certainty but the growth is material.",
      "suggestedFix": "Repeat in one instrumented session with GC checkpoints, then virtualize cards and release stale objects/listeners when evidence confirms retention.",
      "effort": "large",
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post-scroll.json"
      ]
    },
    {
      "id": "F04",
      "severity": "low",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "directional-navigation-transitions",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Route changes have no authored transition treatment",
      "evidence": "The API is available, but route review and CSS inspection found no view-transition rules.",
      "suggestedFix": "Use same-document or cross-document View Transitions for listing/detail and recovery navigation, with reduced-motion fallback.",
      "effort": "medium",
      "artifacts": [
        "evidence/css-modern-probe.json"
      ]
    },
    {
      "id": "F05",
      "severity": "low",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "scroll-position-aware-elements",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Long-page chrome does not respond to scroll state",
      "evidence": "The long listing retains static stacked chrome and no scroll-state rules were found.",
      "suggestedFix": "Use scroll-state container queries to compact persistent headers and preserve content space after scrolling.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-mobile.png"
      ]
    },
    {
      "id": "F08",
      "severity": "low",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Reusable cards and navigation do not use container-aware adaptation",
      "evidence": "CSS inspection found zero @container rules across components shown in very different desktop/mobile containers.",
      "suggestedFix": "Add container-type to reusable regions and size-aware component rules, retaining viewport fallbacks.",
      "effort": "medium",
      "artifacts": [
        "evidence/css-modern-probe.json"
      ]
    },
    {
      "id": "F15",
      "severity": "low",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "A challenge dependency uses deprecated browser APIs",
      "evidence": "Lighthouse reported three deprecated API uses in the Cloudflare challenge script and best-practices scored 0.58.",
      "suggestedFix": "Update/configure the challenge integration and monitor DevTools deprecation reports.",
      "effort": "small",
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ]
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Adjust foreground/background tokens to at least WCAG AA and test all interactive states.",
      "priority": 1,
      "findingIds": [
        "F03"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Provide a high-contrast :focus-visible ring and increase compact tap targets to at least 44 CSS px where practical.",
      "priority": 2,
      "findingIds": [
        "F09"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Profile LCP and long tasks, prioritize the hero/content request, and split/defer non-critical work.",
      "priority": 3,
      "findingIds": [
        "F10"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Code-split by journey, remove duplicate/unused bundles, defer below-fold UI, and tighten caching/priorities.",
      "priority": 4,
      "findingIds": [
        "F12"
      ],
      "guidanceId": "defer-rendering-heavy-content",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Add associated labels and autocomplete=username/current-password; keep placeholders as examples only.",
      "priority": 5,
      "findingIds": [
        "F13"
      ],
      "guidanceId": "forms",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Allow verified crawlers to fetch server-rendered localized content and serve robots/sitemap without challenge.",
      "priority": 6,
      "findingIds": [
        "F16"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Deploy a nonce/hash CSP, nosniff, strict referrer/permissions policies, and Secure/SameSite cookie defaults.",
      "priority": 7,
      "findingIds": [
        "F17"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Gate non-essential collection on consent, audit vendor purpose/retention, and consolidate/batch requests.",
      "priority": 8,
      "findingIds": [
        "F18"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Give accept/reject/manage equal prominence and delay non-essential storage/network activity until an informed choice.",
      "priority": 9,
      "findingIds": [
        "F21"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Set a route budget, defer non-visible feeds/media, pause background work offscreen, and remove low-value third parties.",
      "priority": 10,
      "findingIds": [
        "F23"
      ],
      "guidanceId": "efficient-background-processing",
      "status": "open"
    },
    {
      "id": "T11",
      "title": "Declare color-scheme and use prefers-color-scheme/light-dark() to provide user-driven light and dark palettes.",
      "priority": 11,
      "findingIds": [
        "F01"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T12",
      "title": "Add a prefers-reduced-motion: reduce layer that removes non-essential transitions and auto-motion.",
      "priority": 12,
      "findingIds": [
        "F02"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T13",
      "title": "Consolidate notices, reserve layout space, and use a semantic dismissible surface without obscuring core cards.",
      "priority": 13,
      "findingIds": [
        "F06"
      ],
      "guidanceId": "light-dismiss-a-dialog",
      "status": "open"
    },
    {
      "id": "T14",
      "title": "Progressively disclose secondary navigation and compact chrome once users begin scrolling.",
      "priority": 14,
      "findingIds": [
        "F07"
      ],
      "guidanceId": "css",
      "status": "open"
    },
    {
      "id": "T15",
      "title": "Reserve image/banner geometry with width, height or aspect-ratio and stabilize late notice insertion.",
      "priority": 15,
      "findingIds": [
        "F11"
      ],
      "guidanceId": "visually-stable-font-fallbacks",
      "status": "open"
    },
    {
      "id": "T16",
      "title": "Emit width/height, responsive srcset/sizes, modern formats and lazy loading for below-fold media.",
      "priority": 16,
      "findingIds": [
        "F14"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T17",
      "title": "Add passkey registration/authentication and retain passwordless fallback; request permissions only in context.",
      "priority": 17,
      "findingIds": [
        "F19"
      ],
      "guidanceId": "passkeys",
      "status": "open"
    },
    {
      "id": "T18",
      "title": "Add an offline shell/fallback and cache resilient static/navigation resources appropriate to the live product.",
      "priority": 18,
      "findingIds": [
        "F20"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T19",
      "title": "Validate after interaction and synchronize :user-invalid, aria-invalid, described errors and an aria-live summary.",
      "priority": 19,
      "findingIds": [
        "F22"
      ],
      "guidanceId": "accessible-error-announcement",
      "status": "open"
    },
    {
      "id": "T20",
      "title": "Repeat in one instrumented session with GC checkpoints, then virtualize cards and release stale objects/listeners when evidence confirms retention.",
      "priority": 20,
      "findingIds": [
        "F24"
      ],
      "guidanceId": "efficient-background-processing",
      "status": "open"
    },
    {
      "id": "T21",
      "title": "Use same-document or cross-document View Transitions for listing/detail and recovery navigation, with reduced-motion fallback.",
      "priority": 21,
      "findingIds": [
        "F04"
      ],
      "guidanceId": "directional-navigation-transitions",
      "status": "open"
    },
    {
      "id": "T22",
      "title": "Use scroll-state container queries to compact persistent headers and preserve content space after scrolling.",
      "priority": 22,
      "findingIds": [
        "F05"
      ],
      "guidanceId": "scroll-position-aware-elements",
      "status": "open"
    },
    {
      "id": "T23",
      "title": "Add container-type to reusable regions and size-aware component rules, retaining viewport fallbacks.",
      "priority": 23,
      "findingIds": [
        "F08"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    },
    {
      "id": "T24",
      "title": "Update/configure the challenge integration and monitor DevTools deprecation reports.",
      "priority": 24,
      "findingIds": [
        "F15"
      ],
      "guidanceId": "html",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 5,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-21T01-21-49-123Z"
}
