{
  "url": "https://de.pornhub.com",
  "auditedAt": "2026-07-22T23:49:41.002Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete guest-path audit. Listing, category, search, and invalid paths redirected to the homepage; authenticated, upload, subscription, and account-management flows were not covered.",
  "page": {
    "appType": "mpa",
    "framework": "server-rendered legacy/unknown",
    "notes": "Public German adult-media catalog with a mandatory age gate, cookie choice, long media feed, and video detail pages."
  },
  "evidenceUsed": [
    "screenshot",
    "video",
    "dom+computed-css",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "discoverability",
    "axe-core",
    "lighthouse",
    "heap-summary",
    "robots/sitemap fetch"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "same-document-transitions",
    "shrinking-header-on-scroll",
    "directional-navigation-transitions",
    "declarative-dialog-popover-control",
    "reduce-style-repetition",
    "fluid-scaling",
    "size-aware-styling",
    "persistent-toast-notifications",
    "performance",
    "visually-stable-font-fallbacks",
    "optimize-preload-priority",
    "identify-heavy-scripts",
    "improve-text-layout-and-legibility",
    "html",
    "optimize-image-priority",
    "security",
    "privacy",
    "resilient-context-menus-and-nested-dropdowns",
    "translator",
    "deliver-optimized-decorative-images",
    "deprioritize-background-fetches",
    "efficient-background-processing"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "Desktop age-gate first viewport",
      "condition": "viewport 1440x1000",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "Mobile age gate visibly clipped",
      "condition": "viewport 360x800",
      "findingIds": [
        "F-08",
        "F-09",
        "F-18",
        "F-19",
        "F-23",
        "F-29"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-light.png",
      "caption": "Light preference capture",
      "condition": "prefers-color-scheme: light",
      "findingIds": [
        "F-01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "Dark preference capture",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F-01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-forced-colors.png",
      "caption": "Forced-colors/high-contrast capture",
      "condition": "forced-colors: active",
      "findingIds": []
    },
    {
      "type": "video",
      "path": "evidence/age-gate-mobile.mp4",
      "caption": "Age-gate interaction on mobile",
      "condition": "viewport 360x800",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "Rendered homepage DOM and CSS",
      "condition": "desktop",
      "findingIds": [
        "F-03",
        "F-04"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-layout-mobile.json",
      "caption": "Mobile layout metrics",
      "condition": "viewport 360x800",
      "findingIds": [
        "F-08"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-layout-desktop.json",
      "caption": "Desktop CLS/layout metrics",
      "condition": "viewport 1440x1000",
      "findingIds": [
        "F-12",
        "F-13",
        "F-21"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "DevTools load trace",
      "condition": "desktop load",
      "findingIds": []
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "Trace performance summary",
      "condition": "desktop load",
      "findingIds": [
        "F-12"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "Network archive",
      "condition": "desktop load",
      "findingIds": [
        "F-14"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "Compact HAR signals",
      "condition": "desktop load",
      "findingIds": [
        "F-07",
        "F-14",
        "F-15",
        "F-27",
        "F-32",
        "F-33",
        "F-34",
        "F-35"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/home-lighthouse.json",
      "caption": "Lighthouse report",
      "condition": "mobile emulation",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/home-lighthouse-summary.json",
      "caption": "Compact Lighthouse summary",
      "condition": "mobile emulation",
      "findingIds": [
        "F-07",
        "F-10",
        "F-12",
        "F-13",
        "F-15",
        "F-16",
        "F-20",
        "F-23"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-axe.json",
      "caption": "axe-core violations",
      "condition": "rendered homepage",
      "findingIds": [
        "F-06",
        "F-16",
        "F-17"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-headers.json",
      "caption": "Security headers",
      "condition": "main document",
      "findingIds": [
        "F-26",
        "F-28"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-cookies.json",
      "caption": "Cookie posture",
      "condition": "main document",
      "findingIds": [
        "F-26"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-trackers.json",
      "caption": "Third-party tracker inventory",
      "condition": "main document",
      "findingIds": [
        "F-07",
        "F-27",
        "F-33",
        "F-34"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-images.json",
      "caption": "Image audit",
      "condition": "rendered homepage",
      "findingIds": [
        "F-21",
        "F-32"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "Homepage raw/rendered comparison",
      "condition": "JavaScript on/off",
      "findingIds": [
        "F-22"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "Rendered crawler comparison",
      "condition": "JavaScript enabled",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "Crawler view",
      "condition": "JavaScript disabled",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/detail-discoverability.json",
      "caption": "Detail raw/rendered comparison",
      "condition": "JavaScript on/off",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/home-heap-baseline.json",
      "caption": "Baseline heap summary",
      "condition": "before repeated scroll",
      "findingIds": [
        "F-35"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/home-heap-post.json",
      "caption": "Post-interaction heap summary",
      "condition": "after entry and 10 scroll cycles",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-memory-metrics.json",
      "caption": "DOM count before/after repeated scroll",
      "condition": "10 cycles",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/listing-probe.json",
      "caption": "Listing redirect and DOM/CSS probe",
      "condition": "guest",
      "findingIds": [
        "F-05",
        "F-10",
        "F-11",
        "F-17",
        "F-19",
        "F-22",
        "F-23",
        "F-31"
      ]
    },
    {
      "type": "other",
      "path": "evidence/categories-probe.json",
      "caption": "Categories redirect and DOM/CSS probe",
      "condition": "guest",
      "findingIds": [
        "F-05"
      ]
    },
    {
      "type": "other",
      "path": "evidence/detail-probe.json",
      "caption": "Video detail DOM/CSS probe",
      "condition": "guest",
      "findingIds": [
        "F-02",
        "F-03",
        "F-09",
        "F-16",
        "F-19",
        "F-22",
        "F-24",
        "F-25",
        "F-31"
      ]
    },
    {
      "type": "other",
      "path": "evidence/search-probe.json",
      "caption": "Search route redirect probe",
      "condition": "guest",
      "findingIds": [
        "F-05",
        "F-11",
        "F-30"
      ]
    },
    {
      "type": "other",
      "path": "evidence/error-route.json",
      "caption": "Invalid-route recovery probe",
      "condition": "guest",
      "findingIds": [
        "F-05",
        "F-11",
        "F-30"
      ]
    },
    {
      "type": "other",
      "path": "evidence/age-cookie-flow.json",
      "caption": "Age and cookie flow state probe",
      "condition": "guest",
      "findingIds": [
        "F-06",
        "F-17",
        "F-29"
      ]
    },
    {
      "type": "other",
      "path": "evidence/detail-reduced-motion.json",
      "caption": "Reduced-motion animation probe",
      "condition": "prefers-reduced-motion: reduce",
      "findingIds": [
        "F-02"
      ]
    },
    {
      "type": "other",
      "path": "evidence/robots.txt",
      "caption": "robots.txt response/body",
      "condition": "crawler",
      "findingIds": [
        "F-24"
      ]
    },
    {
      "type": "other",
      "path": "evidence/sitemap.xml",
      "caption": "sitemap.xml 404 response body",
      "condition": "crawler",
      "findingIds": [
        "F-24"
      ]
    }
  ],
  "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": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "Light and dark captures are byte-identical (123,680 bytes), and the rendered CSS probe found no prefers-color-scheme rule. The site forces one dark palette instead of following the user setting.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-light.png",
        "evidence/home-dark.png"
      ],
      "findingIds": [
        "F-01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "On the detail page, prefers-reduced-motion: reduce matched, but two 1,500 ms animations remained running and no reduced-motion rule was present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/detail-reduced-motion.json",
        "evidence/detail-probe.json"
      ],
      "findingIds": [
        "F-02"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "Forced-colors capture kept all gate text and controls visible; Lighthouse contrast passed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-forced-colors.png"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The cross-path CSS probe found no view-transition rules, and route/listing requests swap or redirect abruptly.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/detail-probe.json"
      ],
      "findingIds": [
        "F-03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "No scroll-linked animation was observed and the CSS probe found no main-thread scroll animation implementation.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/detail-probe.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "The audited feed uses native scrolling; no custom pointer-driven gesture that fights the platform was observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "DOM/CSS inspection found no scroll-state query, progress indicator, or position-aware header behavior on the long feed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F-04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "No tooltip or edge-positioned popover was present in the exercised guest path, and no detached menu drift was observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The listing, categories, search, and invalid-route probes all ended at the homepage without an explanatory state or attention cue.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/categories-probe.json",
        "evidence/search-probe.json",
        "evidence/error-route.json"
      ],
      "findingIds": [
        "F-05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "The entry interruption communicates a legally relevant age decision with clear enter and exit actions; it is task-relevant rather than promotional.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The gate is exposed only as role=dialog; DOM inspection found zero native dialog, popover, or details elements. Focus remained on a background link after activation.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/age-cookie-flow.json",
        "evidence/home-axe.json"
      ],
      "findingIds": [
        "F-06"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The homepage loaded 31 TrafficJunky image-ad requests and 100 third-party requests; ad iframes are interleaved throughout the content feed, reducing content density.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trackers.json",
        "evidence/home-lighthouse-summary.json"
      ],
      "findingIds": [
        "F-07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "At 360x800, the mandatory age gate is visibly clipped on both sides: its heading, notice control, explanatory copy, and under-18 action extend beyond the visible area. The page clips rather than reporting document overflow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-layout-mobile.json"
      ],
      "findingIds": [
        "F-08"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "CSS inspection across homepage and detail found no container queries; the fixed-width gate does not adapt to its narrow containing viewport.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/detail-probe.json"
      ],
      "findingIds": [
        "F-09"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The probe found 87 visible targets below 24 px and focused the first link with outline:none and no box shadow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/home-lighthouse-summary.json"
      ],
      "findingIds": [
        "F-10"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "The first viewport clearly states that this is an adult site and presents explicit over-18 entry and under-18 exit actions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "The over-18 control activated and exposed the next cookie-choice state without a dead-end.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/age-cookie-flow.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "Listing, categories, search, and a deliberately invalid route silently resolved to the homepage, with no error, empty, or recovery explanation.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/search-probe.json",
        "evidence/error-route.json"
      ],
      "findingIds": [
        "F-11"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "Lighthouse measured LCP 7.2 s and CLS 0.965 (performance 47). The independent trace measured LCP 2.93 s, showing variability, while the Lighthouse result is far outside good thresholds.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-layout-desktop.json"
      ],
      "findingIds": [
        "F-12"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "Lighthouse measured CLS 0.965; the independent desktop layout observer also captured CLS 0.0618 from a late shift around 2.06 s.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-lighthouse-summary.json",
        "evidence/home-layout-desktop.json"
      ],
      "findingIds": [
        "F-13"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "Trace reported zero long tasks and 0 ms total blocking time; Lighthouse TBT was 30 ms.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "HAR captured 171 requests and 5.43 MB transferred, with many parser-inserted VeryHigh-priority stylesheets and 100 third-party requests.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F-14"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The gate/homepage loaded 39 scripts and 11 stylesheets before the primary content, while third parties transferred 2.03 MB.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-lighthouse-summary.json"
      ],
      "findingIds": [
        "F-15"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "axe reported 30 serious frame-title violations and 116 region violations; detail inspection also found an image without alt and an unlabeled textarea.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-axe.json",
        "evidence/home-lighthouse-summary.json",
        "evidence/detail-probe.json"
      ],
      "findingIds": [
        "F-16"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "Lighthouse contrast passed and forced-colors capture preserved visible text and controls.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-forced-colors.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The homepage has no h1 and only a header landmark; the first focused link had no visible outline, and focus stayed on a background Notice link during the gate flow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/age-cookie-flow.json",
        "evidence/home-axe.json"
      ],
      "findingIds": [
        "F-17"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The 360 px screenshot shows mandatory gate copy and heading cropped at both edges, making sentences and actions unreadable.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F-18"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The narrow reflow capture clips essential controls; 87 targets were under 24 px. The detail page exposed videos with no caption/subtitle tracks in the DOM.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/listing-probe.json",
        "evidence/detail-probe.json"
      ],
      "findingIds": [
        "F-19"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "Lighthouse captured an uncaught TypeError in setInstallButton while reading addEventListener from null.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-lighthouse-summary.json"
      ],
      "findingIds": [
        "F-20"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The image audit found 3 images without dimensions, 33 without srcset, and 21 legacy-format assets; the page did include a valid viewport and document.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-images.json",
        "evidence/home-layout-desktop.json"
      ],
      "findingIds": [
        "F-21"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "No notification prompt appeared on load, viewport metadata is valid, and the observed best-practice failure was isolated to the separately reported console exception.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/listing-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The homepage and detail both use the generic title Pornhub; probes found no meta description, and the homepage has no h1.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/detail-probe.json",
        "evidence/home-discoverability.json"
      ],
      "findingIds": [
        "F-22"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The probe counted 36 non-crawlable/javascript links; Lighthouse failed crawlable anchors, and the mobile gate is clipped despite a viewport meta tag.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/home-lighthouse-summary.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F-23"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "Both homepage and detail declare noindex,nofollow; the detail canonical points to the homepage, representative listing/search URLs redirect to home, and /sitemap.xml returned 404.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/detail-probe.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "findingIds": [
        "F-24"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The public video detail has zero JSON-LD and zero Open Graph tags despite representing a rich media entity.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/detail-probe.json"
      ],
      "findingIds": [
        "F-25"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "HTTPS and strong HSTS are present, but CSP and X-Content-Type-Options are absent; cookie audit found rp without Secure and all seven cookies using SameSite=None.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json",
        "evidence/home-cookies.json"
      ],
      "findingIds": [
        "F-26"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The load contacted 11 third-party origins, including Google Tag Manager and DoubleClick, and sent 100 third-party requests totaling 2.03 MB.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trackers.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F-27"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "Notification permission remained default with no prompt on load; authentication was not required in the guest flow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/listing-probe.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "CSP, Referrer-Policy, Permissions-Policy, and nosniff are missing. X-Frame-Options and HSTS are present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json"
      ],
      "findingIds": [
        "F-28"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "Raw HTML returned 200 with substantial server-rendered content and the detail h1 survived without JavaScript; the site is not an empty JS shell.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/detail-discoverability.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The mandatory modal is clipped on mobile, and focus is not contained or moved into the active gate.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/age-cookie-flow.json"
      ],
      "findingIds": [
        "F-29"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative guest-path recon.",
      "evidence": "A streaming catalog is intrinsically network-dependent; installability/offline media was not treated as a required guest-web outcome.",
      "reason": "A streaming catalog is intrinsically network-dependent; installability/offline media was not treated as a required guest-web outcome."
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "A deliberately invalid route silently redirected to the homepage, as did listing/search probes, without explaining the failure or preserving the attempted task.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/error-route.json",
        "evidence/search-probe.json"
      ],
      "findingIds": [
        "F-30"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The document correctly declares lang=de, but CSS inspection found no logical properties and no direction declaration, increasing bidi and writing-mode risk.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/detail-probe.json"
      ],
      "findingIds": [
        "F-31"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative guest-path recon.",
      "evidence": "No user-facing dates, currencies, or locale-sensitive numeric data appeared on the audited guest surfaces.",
      "reason": "No user-facing dates, currencies, or locale-sensitive numeric data appeared on the audited guest surfaces."
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative guest-path recon.",
      "evidence": "No event scheduling or time-zone-sensitive data appeared on the audited guest surfaces.",
      "reason": "No event scheduling or time-zone-sensitive data appeared on the audited guest surfaces."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "The age decision offers explicit enter and exit choices, and the cookie state exposes Accept All, Essential Only, and Customize controls without confirmshaming.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative guest-path recon.",
      "evidence": "The representative guest search has no required/validated fields; no applicable validation error flow was present.",
      "reason": "The representative guest search has no required/validated fields; no applicable validation error flow was present."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "The only primary guest input is search; it has an accessible name and does not require sensitive autofill tokens.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/listing-probe.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative guest-path recon.",
      "evidence": "Authenticated subscription and account-management flows were outside the guest content journey and no commercial commitment occurred in scope.",
      "reason": "Authenticated subscription and account-management flows were outside the guest content journey and no commercial commitment occurred in scope."
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The image audit found 33/37 images without srcset and 21 legacy-format assets; the load transferred 1.2 MB of images.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-images.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F-32"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The initial gate/home load made 171 requests, including 37 fetch/XHR requests and 100 third-party requests before the user entered.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trackers.json"
      ],
      "findingIds": [
        "F-33"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "Third parties transferred 2.03 MB, including 31 TrafficJunky requests; this is disproportionate before the age-gate decision.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trackers.json"
      ],
      "findingIds": [
        "F-34"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative guest-path recon.",
      "evidence": "No declared agent-facing intent or transactional agent surface was present; this emerging capability is contextual.",
      "reason": "No declared agent-facing intent or transactional agent surface was present; this emerging capability is contextual."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative guest-path recon.",
      "evidence": "No summarisation, generation, or language task requiring on-device inference was present.",
      "reason": "No summarisation, generation, or language task requiring on-device inference was present."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "After entry plus ten repeated full-feed scroll cycles, heap self size grew about 0.84 MB (2.3%) and live DOM count stayed 1,466; this did not demonstrate unbounded growth.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-heap-post.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/runtime/network audit against the mapped check plan.",
      "evidence": "The baseline heap summary contained 534,358 heap nodes and 36.1 MB self size before the user entered; this is a large footprint for a gated first state.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-heap-baseline.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F-35"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime, or objective probe for this check.",
      "evidence": "Baseline/post summaries showed no Detached* constructor among top retained constructors, and live DOM count remained 1,466 after ten scroll cycles.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-memory-metrics.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-01",
        "F-02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-04",
        "F-05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-06",
        "F-07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-08",
        "F-09",
        "F-10"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-11"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-12",
        "F-13",
        "F-14",
        "F-15"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-16",
        "F-17",
        "F-18",
        "F-19"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-20",
        "F-21"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-22",
        "F-23",
        "F-24",
        "F-25"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-26",
        "F-27",
        "F-28"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F-29",
        "F-30"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F-31"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F-32",
        "F-33",
        "F-34"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "No declared agent-facing intent or transactional agent surface was present; this emerging capability is contextual. No summarisation, generation, or language task requiring on-device inference was present."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-35"
      ]
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and mandatory age/cookie entry journey; primary catalog archetype.",
      "url": "https://de.pornhub.com",
      "conditions": [
        "1440x1000",
        "360x800",
        "light/dark preference",
        "forced colors",
        "reduced motion",
        "keyboard focus",
        "JavaScript disabled"
      ],
      "result": "issues"
    },
    {
      "id": "listing",
      "description": "Video listing/category archetype; both /video and /categories redirected to the homepage in a clean guest session.",
      "url": "https://de.pornhub.com/video",
      "conditions": [
        "guest clean profile"
      ],
      "result": "issues"
    },
    {
      "id": "detail",
      "description": "Representative video detail/player archetype, including media metadata and motion checks.",
      "url": "https://de.pornhub.com/view_video.php?viewkey=6a32fe74187f2",
      "conditions": [
        "1440x1000",
        "360x800",
        "reduced motion",
        "JavaScript disabled"
      ],
      "result": "issues"
    },
    {
      "id": "search",
      "description": "Representative search route; the requested query redirected to the homepage without an explanatory state.",
      "url": "https://de.pornhub.com/video/search?search=interview",
      "conditions": [
        "guest clean profile"
      ],
      "result": "issues"
    },
    {
      "id": "error",
      "description": "Invalid-route recovery behavior; request silently redirected to the homepage.",
      "url": "https://de.pornhub.com/this-route-should-not-exist-web-uplift",
      "conditions": [
        "guest clean profile"
      ],
      "result": "issues"
    }
  ],
  "findings": [
    {
      "id": "F-01",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "severity": "medium",
      "confidence": "high",
      "summary": "Honours prefers-color-scheme: a usable dark mode exists and is driven by the user's preference (color-scheme / prefers-color-scheme / light-dark()), not hard-coded light only.",
      "evidence": "Light and dark captures are byte-identical (123,680 bytes), and the rendered CSS probe found no prefers-color-scheme rule. The site forces one dark palette instead of following the user setting.",
      "artifacts": [
        "evidence/home-light.png",
        "evidence/home-dark.png"
      ],
      "suggestedFix": "Declare color-scheme and use prefers-color-scheme or light-dark() so the interface follows the user preference.",
      "effort": "small"
    },
    {
      "id": "F-02",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-reduced-motion",
      "guidanceId": "accessibility",
      "severity": "medium",
      "confidence": "high",
      "summary": "Honours prefers-reduced-motion: non-essential animations and auto-advance are reduced or removed when the user asks for less motion.",
      "evidence": "On the detail page, prefers-reduced-motion: reduce matched, but two 1,500 ms animations remained running and no reduced-motion rule was present.",
      "artifacts": [
        "evidence/detail-reduced-motion.json",
        "evidence/detail-probe.json"
      ],
      "suggestedFix": "Disable non-essential motion inside @media (prefers-reduced-motion: reduce).",
      "effort": "small"
    },
    {
      "id": "F-03",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "severity": "low",
      "confidence": "high",
      "summary": "State and route changes use View Transitions (including same-document, cross-document and scroll-driven/staggered) rather than instant, jarring swaps.",
      "evidence": "The cross-path CSS probe found no view-transition rules, and route/listing requests swap or redirect abruptly.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/detail-probe.json"
      ],
      "suggestedFix": "Use same-document or cross-document View Transitions for route and major state changes, while honoring reduced motion.",
      "effort": "small"
    },
    {
      "id": "F-04",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "shrinking-header-on-scroll",
      "severity": "low",
      "confidence": "high",
      "summary": "Sticky/affixed UI reacts to scroll state and position (e.g. the new scroll-state(scrolled) query, shrinking headers, progress indicators) so chrome responds to position instead of static or JS-driven toggling.",
      "evidence": "DOM/CSS inspection found no scroll-state query, progress indicator, or position-aware header behavior on the long feed.",
      "artifacts": [
        "evidence/home-dom.json"
      ],
      "suggestedFix": "Add a lightweight scroll-state affordance such as a shrinking header or progress cue where it improves orientation.",
      "effort": "small"
    },
    {
      "id": "F-05",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "directs-attention",
      "guidanceId": "directional-navigation-transitions",
      "severity": "medium",
      "confidence": "high",
      "summary": "Navigation and in-page jumps guide attention (highlight effects, scroll/carousel markers, directional transitions, drill-down and drawer navigation) so the user can follow where focus moved.",
      "evidence": "The listing, categories, search, and invalid-route probes all ended at the homepage without an explanatory state or attention cue.",
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/categories-probe.json",
        "evidence/search-probe.json",
        "evidence/error-route.json"
      ],
      "suggestedFix": "Preserve route intent and visibly explain redirects or unavailable states; direct focus to the resulting message.",
      "effort": "small"
    },
    {
      "id": "F-06",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "severity": "medium",
      "confidence": "high",
      "summary": "Overlays and rich controls use the right primitive: popover (with declarative light-dismiss) for transient UI, dialog for modal flows, details for disclosure, native-but-branded selects and pickers, rather than ad-hoc divs.",
      "evidence": "The gate is exposed only as role=dialog; DOM inspection found zero native dialog, popover, or details elements. Focus remained on a background link after activation.",
      "artifacts": [
        "evidence/age-cookie-flow.json",
        "evidence/home-axe.json"
      ],
      "suggestedFix": "Use a modal <dialog>, move focus into it, return focus on close, and use declarative controls for dismissal.",
      "effort": "small"
    },
    {
      "id": "F-07",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "reduced-chrome",
      "guidanceId": "reduce-style-repetition",
      "severity": "high",
      "confidence": "high",
      "summary": "Minimise non-content chrome and borders so the content is the focus, not the application frame; expressive/decorative visuals serve the content rather than crowd it.",
      "evidence": "The homepage loaded 31 TrafficJunky image-ad requests and 100 third-party requests; ad iframes are interleaved throughout the content feed, reducing content density.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trackers.json",
        "evidence/home-lighthouse-summary.json"
      ],
      "suggestedFix": "Reduce repeated ad slots and defer non-visible commercial chrome so primary content dominates the viewport.",
      "effort": "medium"
    },
    {
      "id": "F-08",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "responsive-no-horizontal-scroll",
      "guidanceId": "fluid-scaling",
      "severity": "critical",
      "confidence": "high",
      "summary": "Layout adapts to narrow viewports with no horizontal overflow and no fixed pixel widths forcing a desktop layout on mobile; viewport meta present; fluid scaling and intrinsic sizing rather than brittle breakpoints.",
      "evidence": "At 360x800, the mandatory age gate is visibly clipped on both sides: its heading, notice control, explanatory copy, and under-18 action extend beyond the visible area. The page clips rather than reporting document overflow.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-layout-mobile.json"
      ],
      "suggestedFix": "Make the gate intrinsically responsive with max-inline-size:100%, fluid padding/type, wrapping actions, and no overflow clipping.",
      "effort": "medium"
    },
    {
      "id": "F-09",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "severity": "medium",
      "confidence": "high",
      "summary": "Components adapt to their container with container queries (incl. anchored container queries) and content/state-based styling where reused at different sizes, not only global viewport breakpoints.",
      "evidence": "CSS inspection across homepage and detail found no container queries; the fixed-width gate does not adapt to its narrow containing viewport.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/detail-probe.json"
      ],
      "suggestedFix": "Use container queries and intrinsic sizing for reusable cards and the gate, with viewport rules only for page-level composition.",
      "effort": "small"
    },
    {
      "id": "F-10",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Touch targets are adequately sized and hover-only affordances have a non-hover fallback, and keyboard focus is visible, so the UI works for touch, pointer and keyboard alike.",
      "evidence": "The probe found 87 visible targets below 24 px and focused the first link with outline:none and no box shadow.",
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/home-lighthouse-summary.json"
      ],
      "suggestedFix": "Provide visible :focus-visible styles, keep keyboard order logical, and enlarge touch targets to at least the applicable WCAG target-size baseline.",
      "effort": "medium"
    },
    {
      "id": "F-11",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "support-core-task-success",
      "principleCheckId": "clear-system-state-and-recovery",
      "guidanceId": "persistent-toast-notifications",
      "severity": "medium",
      "confidence": "high",
      "summary": "Loading, empty, success, error, offline, and partial-completion states are visible and actionable; users can retry, undo, cancel, go back, or continue without losing context.",
      "evidence": "Listing, categories, search, and a deliberately invalid route silently resolved to the homepage, with no error, empty, or recovery explanation.",
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/search-probe.json",
        "evidence/error-route.json"
      ],
      "suggestedFix": "Render an explicit unavailable/empty/error state with retry, back, or corrected-search actions instead of silently redirecting.",
      "effort": "small"
    },
    {
      "id": "F-12",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "severity": "critical",
      "confidence": "high",
      "summary": "Core Web Vitals are in the good range: LCP is fast, interaction latency (INP) is low, and CLS is minimal; work is prioritised and deferred sensibly.",
      "evidence": "Lighthouse measured LCP 7.2 s and CLS 0.965 (performance 47). The independent trace measured LCP 2.93 s, showing variability, while the Lighthouse result is far outside good thresholds.",
      "artifacts": [
        "evidence/home-lighthouse-summary.json",
        "evidence/home-trace-summary.json",
        "evidence/home-layout-desktop.json"
      ],
      "suggestedFix": "Prioritize the LCP element, reserve all late content space, and reduce initial network/third-party work; verify with field and repeat lab data.",
      "effort": "medium"
    },
    {
      "id": "F-13",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "visual-stability",
      "guidanceId": "visually-stable-font-fallbacks",
      "severity": "critical",
      "confidence": "high",
      "summary": "No cumulative layout shift from late content (images, banners, fonts) that arrives without reserved space.",
      "evidence": "Lighthouse measured CLS 0.965; the independent desktop layout observer also captured CLS 0.0618 from a late shift around 2.06 s.",
      "artifacts": [
        "evidence/home-lighthouse-summary.json",
        "evidence/home-layout-desktop.json"
      ],
      "suggestedFix": "Reserve dimensions for ads, images, and banners and use stable font fallbacks so late content cannot displace the gate or feed.",
      "effort": "medium"
    },
    {
      "id": "F-14",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-preload-priority",
      "severity": "high",
      "confidence": "high",
      "summary": "Critical resources are delivered efficiently: cache headers are useful, render-blocking chains are short, fonts do not block or shift text, HTTP delivery is modern, and network dependency trees do not delay the main content.",
      "evidence": "HAR captured 171 requests and 5.43 MB transferred, with many parser-inserted VeryHigh-priority stylesheets and 100 third-party requests.",
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Shorten critical request chains, consolidate critical CSS, preload only proven critical assets, and lazy-load offscreen third-party resources.",
      "effort": "medium"
    },
    {
      "id": "F-15",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "severity": "high",
      "confidence": "high",
      "summary": "The page does not ship large unused or duplicated JavaScript/CSS, avoidable legacy bundles, or third-party code that dominates the load without user value.",
      "evidence": "The gate/homepage loaded 39 scripts and 11 stylesheets before the primary content, while third parties transferred 2.03 MB.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-lighthouse-summary.json"
      ],
      "suggestedFix": "Audit coverage and remove unused or duplicated bundles; conditionally load ad and feature code only when its surface is reached.",
      "effort": "medium"
    },
    {
      "id": "F-16",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Interactive elements have accessible names, correct roles, and form fields have labels; images have alt text where meaningful; canvas/expressive content is exposed to assistive technology.",
      "evidence": "axe reported 30 serious frame-title violations and 116 region violations; detail inspection also found an image without alt and an unlabeled textarea.",
      "artifacts": [
        "evidence/home-axe.json",
        "evidence/home-lighthouse-summary.json",
        "evidence/detail-probe.json"
      ],
      "suggestedFix": "Name every meaningful iframe, mark decorative frames presentational, label form controls, provide meaningful alt text, and put content inside landmarks.",
      "effort": "medium"
    },
    {
      "id": "F-17",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Heading and landmark structure is logical, focus order follows reading order, keyboard focus is always visible, and interactive state survives DOM moves.",
      "evidence": "The homepage has no h1 and only a header landmark; the first focused link had no visible outline, and focus stayed on a background Notice link during the gate flow.",
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/age-cookie-flow.json",
        "evidence/home-axe.json"
      ],
      "suggestedFix": "Add a logical h1/landmark structure, visible focus indicators, modal focus containment, and focus restoration.",
      "effort": "medium"
    },
    {
      "id": "F-18",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-inclusive",
      "principleCheckId": "legible-text",
      "guidanceId": "improve-text-layout-and-legibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Text is legible and inclusively rendered: comfortable line layout, precise alignment, stable rendering across mixed fonts, no clipping or cramped wrapping that harms comprehension.",
      "evidence": "The 360 px screenshot shows mandatory gate copy and heading cropped at both edges, making sentences and actions unreadable.",
      "artifacts": [
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Use fluid type, sensible measure, wrapping controls, and responsive inline padding so all gate text remains readable.",
      "effort": "medium"
    },
    {
      "id": "F-19",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "fluid-scaling",
      "severity": "high",
      "confidence": "high",
      "summary": "The experience remains usable when zoomed or reflowed, touch targets are large enough, media has captions or equivalents where needed, and the viewport does not prevent user scaling.",
      "evidence": "The narrow reflow capture clips essential controls; 87 targets were under 24 px. The detail page exposed videos with no caption/subtitle tracks in the DOM.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/listing-probe.json",
        "evidence/detail-probe.json"
      ],
      "suggestedFix": "Fix narrow reflow and target sizes, preserve user zoom, and provide caption or transcript equivalents for spoken media.",
      "effort": "medium"
    },
    {
      "id": "F-20",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "follow-best-practices",
      "principleCheckId": "no-console-errors",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "The page loads without console errors or uncaught exceptions.",
      "evidence": "Lighthouse captured an uncaught TypeError in setInstallButton while reading addEventListener from null.",
      "artifacts": [
        "evidence/home-lighthouse-summary.json"
      ],
      "suggestedFix": "Guard optional install controls before binding and add regression coverage for the guest/home state.",
      "effort": "small"
    },
    {
      "id": "F-21",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "optimize-image-priority",
      "severity": "medium",
      "confidence": "high",
      "summary": "Valid doctype and charset, images sized with correct aspect ratio, no deprecated APIs misused, and CSS/HTML are well structured and not needlessly repetitive. (HTTPS, CSP and permission hygiene are judged under be-private-and-secure, not here.)",
      "evidence": "The image audit found 3 images without dimensions, 33 without srcset, and 21 legacy-format assets; the page did include a valid viewport and document.",
      "artifacts": [
        "evidence/home-images.json",
        "evidence/home-layout-desktop.json"
      ],
      "suggestedFix": "Add intrinsic dimensions and responsive sources, and serve modern formats where supported.",
      "effort": "small"
    },
    {
      "id": "F-22",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-discoverable",
      "principleCheckId": "title-and-description",
      "guidanceId": "html",
      "severity": "high",
      "confidence": "high",
      "summary": "The page has a unique, descriptive <title> and a meta description.",
      "evidence": "The homepage and detail both use the generic title Pornhub; probes found no meta description, and the homepage has no h1.",
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/detail-probe.json",
        "evidence/home-discoverability.json"
      ],
      "suggestedFix": "Give each route a unique descriptive title, meta description, and page-level h1 matching visible content.",
      "effort": "medium"
    },
    {
      "id": "F-23",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "html",
      "severity": "high",
      "confidence": "high",
      "summary": "Links are crawlable (real href), there is a viewport meta tag, robots does not block indexing, and link text is descriptive.",
      "evidence": "The probe counted 36 non-crawlable/javascript links; Lighthouse failed crawlable anchors, and the mobile gate is clipped despite a viewport meta tag.",
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/home-lighthouse-summary.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Use real href destinations for every navigational card and repair responsive reflow.",
      "effort": "medium"
    },
    {
      "id": "F-24",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "severity": "high",
      "confidence": "high",
      "summary": "Public pages expose the indexing signals search engines need: successful HTTP status, canonical URL when appropriate, hreflang for localized variants, robots/sitemap consistency, and no accidental noindex/noarchive policy.",
      "evidence": "Both homepage and detail declare noindex,nofollow; the detail canonical points to the homepage, representative listing/search URLs redirect to home, and /sitemap.xml returned 404.",
      "artifacts": [
        "evidence/detail-probe.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "suggestedFix": "Align robots, status, canonical, hreflang, and sitemap signals for indexable public routes; use self-canonicals on detail pages.",
      "effort": "medium"
    },
    {
      "id": "F-25",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "Where the page represents an article, product, organization, event, place or other rich entity, structured data and share-preview metadata accurately describe the visible content.",
      "evidence": "The public video detail has zero JSON-LD and zero Open Graph tags despite representing a rich media entity.",
      "artifacts": [
        "evidence/detail-probe.json"
      ],
      "suggestedFix": "Add accurate VideoObject JSON-LD and Open Graph metadata that matches the visible title, thumbnail, duration, and canonical URL.",
      "effort": "small"
    },
    {
      "id": "F-26",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "severity": "high",
      "confidence": "high",
      "summary": "Served over HTTPS with a sensible Content-Security-Policy and secure, SameSite cookies; no mixed content or obvious transport/header smells.",
      "evidence": "HTTPS and strong HSTS are present, but CSP and X-Content-Type-Options are absent; cookie audit found rp without Secure and all seven cookies using SameSite=None.",
      "artifacts": [
        "evidence/home-headers.json",
        "evidence/home-cookies.json"
      ],
      "suggestedFix": "Deploy a restrictive CSP and nosniff, mark all transport-sensitive cookies Secure, and narrow SameSite where cross-site use is not required.",
      "effort": "medium"
    },
    {
      "id": "F-27",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "severity": "high",
      "confidence": "high",
      "summary": "No over-collection of user data, no leaky third parties, and analytics/background data collection is minimised and batched rather than chatty or session-wide by default.",
      "evidence": "The load contacted 11 third-party origins, including Google Tag Manager and DoubleClick, and sent 100 third-party requests totaling 2.03 MB.",
      "artifacts": [
        "evidence/home-trackers.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Reduce third parties, delay optional analytics/ads until consent and need, and document a data-minimised purpose for each remaining origin.",
      "effort": "medium"
    },
    {
      "id": "F-28",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "severity": "high",
      "confidence": "high",
      "summary": "Browser-enforced defenses are configured where appropriate: HSTS, clickjacking protection (frame-ancestors / X-Frame-Options), Trusted Types for XSS-sensitive apps, origin isolation, privacy-preserving third-party cookie posture, and sensible Referrer-Policy / Permissions-Policy.",
      "evidence": "CSP, Referrer-Policy, Permissions-Policy, and nosniff are missing. X-Frame-Options and HSTS are present.",
      "artifacts": [
        "evidence/home-headers.json"
      ],
      "suggestedFix": "Add CSP with frame-ancestors, Referrer-Policy, Permissions-Policy, and X-Content-Type-Options; evaluate Trusted Types for script-sensitive surfaces.",
      "effort": "medium"
    },
    {
      "id": "F-29",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-resilient",
      "principleCheckId": "resilient-runtime-behaviour",
      "guidanceId": "resilient-context-menus-and-nested-dropdowns",
      "severity": "high",
      "confidence": "high",
      "summary": "The page behaves robustly at runtime: overlays and menus never get cut off, DOM state survives moves, background work and async dependencies are sequenced and conditional rather than fragile, and initial visibility state is detected correctly.",
      "evidence": "The mandatory modal is clipped on mobile, and focus is not contained or moved into the active gate.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/age-cookie-flow.json"
      ],
      "suggestedFix": "Use a native responsive dialog with bounded sizing, overflow-safe content, and robust focus lifecycle.",
      "effort": "medium"
    },
    {
      "id": "F-30",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-resilient",
      "principleCheckId": "network-and-http-failure-states",
      "guidanceId": "persistent-toast-notifications",
      "severity": "medium",
      "confidence": "high",
      "summary": "HTTP errors, network failures, timeouts and stale data states are handled intentionally: users see useful recovery options rather than blank screens, infinite spinners, broken shells, or misleading success states.",
      "evidence": "A deliberately invalid route silently redirected to the homepage, as did listing/search probes, without explaining the failure or preserving the attempted task.",
      "artifacts": [
        "evidence/error-route.json",
        "evidence/search-probe.json"
      ],
      "suggestedFix": "Return an intentional 404/error state with useful recovery links and preserve search/listing state when a request cannot be fulfilled.",
      "effort": "small"
    },
    {
      "id": "F-31",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "translator",
      "severity": "medium",
      "confidence": "high",
      "summary": "Correct lang and dir attributes, logical CSS properties (inline/block) rather than physical left/right, and translation-ready markup so the layout and reading order survive other languages and writing modes.",
      "evidence": "The document correctly declares lang=de, but CSS inspection found no logical properties and no direction declaration, increasing bidi and writing-mode risk.",
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/detail-probe.json"
      ],
      "suggestedFix": "Keep the correct lang and migrate physical layout rules to logical properties; derive dir when translated RTL content is possible.",
      "effort": "small"
    },
    {
      "id": "F-32",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "severity": "high",
      "confidence": "high",
      "summary": "Images and decorative assets are optimised and served at appropriate resolutions; decorative pseudo-element imagery and heavy decorative images are resolution-optimised rather than oversized.",
      "evidence": "The image audit found 33/37 images without srcset and 21 legacy-format assets; the load transferred 1.2 MB of images.",
      "artifacts": [
        "evidence/home-images.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Serve responsive AVIF/WebP sources at displayed dimensions and reserve intrinsic space.",
      "effort": "medium"
    },
    {
      "id": "F-33",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "deprioritize-background-fetches",
      "severity": "high",
      "confidence": "high",
      "summary": "Background work and fetching are not wasteful: background processing is efficient and de-prioritised, and the lightest technique that achieves the result is preferred over heavy or redundant work.",
      "evidence": "The initial gate/home load made 171 requests, including 37 fetch/XHR requests and 100 third-party requests before the user entered.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trackers.json"
      ],
      "suggestedFix": "Defer background and commercial fetching until after consent and interaction; cancel work for hidden or exited surfaces.",
      "effort": "medium"
    },
    {
      "id": "F-34",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "efficient-background-processing",
      "severity": "high",
      "confidence": "high",
      "summary": "Third-party scripts, fonts, video, audio, animation and heavy media are proportionate to the user value they provide; autoplay or background media is avoided unless essential and resource use is cached or deferred where possible.",
      "evidence": "Third parties transferred 2.03 MB, including 31 TrafficJunky requests; this is disproportionate before the age-gate decision.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trackers.json"
      ],
      "suggestedFix": "Set a third-party budget, load ads only after entry/consent and near viewport, and cache/defer media proportionately.",
      "effort": "medium"
    },
    {
      "id": "F-35",
      "pathId": "home",
      "url": "https://de.pornhub.com",
      "principleId": "be-memory-efficient",
      "principleCheckId": "bounded-footprint",
      "guidanceId": "identify-heavy-scripts",
      "severity": "medium",
      "confidence": "high",
      "summary": "Heap size and DOM node count are reasonable for what the page is; the footprint is proportionate rather than bloated.",
      "evidence": "The baseline heap summary contained 534,358 heap nodes and 36.1 MB self size before the user entered; this is a large footprint for a gated first state.",
      "artifacts": [
        "evidence/home-heap-baseline.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Conditionally load feed, ad, and player code after entry and measure heap budgets for the gate, feed, and player separately.",
      "effort": "small"
    }
  ],
  "taskList": [
    {
      "id": "T-01",
      "title": "Fix the mandatory mobile gate and modal focus lifecycle",
      "priority": 1,
      "findingIds": [
        "F-08",
        "F-06",
        "F-18",
        "F-19",
        "F-29"
      ],
      "guidanceId": "fluid-scaling",
      "status": "open"
    },
    {
      "id": "T-02",
      "title": "Eliminate severe layout shift and improve LCP",
      "priority": 2,
      "findingIds": [
        "F-12",
        "F-13",
        "F-14"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T-03",
      "title": "Reduce third-party, ad, script, and background load",
      "priority": 3,
      "findingIds": [
        "F-07",
        "F-15",
        "F-27",
        "F-33",
        "F-34"
      ],
      "guidanceId": "deprioritize-background-fetches",
      "status": "open"
    },
    {
      "id": "T-04",
      "title": "Restore keyboard and assistive-technology semantics",
      "priority": 4,
      "findingIds": [
        "F-10",
        "F-16",
        "F-17"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T-05",
      "title": "Repair titles, crawlable URLs, canonicals, and rich metadata",
      "priority": 5,
      "findingIds": [
        "F-22",
        "F-23",
        "F-24",
        "F-25"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T-06",
      "title": "Deploy missing security and privacy controls",
      "priority": 6,
      "findingIds": [
        "F-26",
        "F-27",
        "F-28"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T-07",
      "title": "Make redirects and failure states explicit",
      "priority": 7,
      "findingIds": [
        "F-05",
        "F-11",
        "F-30"
      ],
      "guidanceId": "persistent-toast-notifications",
      "status": "open"
    },
    {
      "id": "T-08",
      "title": "Optimize responsive image delivery",
      "priority": 8,
      "findingIds": [
        "F-21",
        "F-32"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T-09",
      "title": "Respect theme and motion preferences",
      "priority": 9,
      "findingIds": [
        "F-01",
        "F-02"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T-10",
      "title": "Reduce initial heap footprint",
      "priority": 10,
      "findingIds": [
        "F-35"
      ],
      "guidanceId": "identify-heavy-scripts",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 5,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-22T23-49-41-002Z"
}
