{
  "url": "https://cn.pornhub.com",
  "auditedAt": "2026-07-23T10:31:57.425Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete audit of the age gate, post-confirmation browse surface, representative detail page, direct route/recovery behaviour and cross-cutting security/performance/accessibility conditions.",
  "page": {
    "appType": "mpa",
    "framework": "server-rendered multi-page site with extensive client-side enhancement",
    "notes": "The localized domain exposes a mandatory age gate. Direct listing/categories/search/login/unknown URLs resolved to the homepage in this environment; this behaviour was recorded rather than silently omitted. Not covered: authenticated account state, payment/subscription completion, creator upload, and actual media playback, because these require credentials, payment, or unnecessary explicit-media playback."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "images",
    "secrets",
    "heap-summary",
    "lighthouse"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "component-specific-light-dark-theme",
    "accessibility",
    "adapt-scrollbar-to-contrast-preferences",
    "same-document-transitions",
    "cross-document-transitions",
    "group-element-transitions",
    "faster-spa-view-transitions",
    "scrollytelling",
    "parallax-scroll-effects",
    "scroll-entry-exit-effects",
    "carousel-slide-effects",
    "physics-based-easing",
    "individual-transform-properties",
    "animate-element-entry-exit",
    "animate-to-from-top-layer",
    "animate-to-intrinsic-sizes",
    "dynamic-sibling-animations",
    "interactive-content-reveal",
    "pull-to-reveal",
    "swipe-to-remove",
    "shrinking-header-on-scroll",
    "scroll-progress-indicator",
    "scroll-position-aware-elements",
    "scroll-snap-realtime-feedback",
    "scroll-snap-state-sync",
    "scroll-target-on-load",
    "soft-edge-content-fade",
    "scrollability-affordance-hints",
    "anchor-positioning-tab-underline",
    "position-aware-tooltips",
    "interest-triggered-tooltips",
    "interest-triggered-action-previews",
    "directional-navigation-transitions",
    "carousel-snap-highlights",
    "navigation-drawer",
    "stack-drill-down",
    "persistent-app-tours",
    "persistent-toast-notifications",
    "light-dismiss-a-dialog",
    "platform-controls-dismiss-dialog",
    "declarative-dialog-popover-control",
    "animated-select-picker",
    "branded-select-styling",
    "brand-consistent-forms",
    "custom-select-picker-layouts",
    "rich-media-picker",
    "complex-shapes",
    "shaped-cutouts",
    "overflow-clipping-control",
    "visually-texture-content",
    "apply-webgl-shaders",
    "interactive-content-in-3d-scenes",
    "highlight-text-ranges",
    "prevent-text-wrapping",
    "customize-scrollbar-color-and-thickness",
    "export-html-media-from-canvas",
    "fluid-scaling",
    "calculate-with-intrinsic-sizes",
    "css-layout",
    "size-aware-styling",
    "content-based-styling",
    "child-state-based-styling",
    "design-token-reactivity",
    "dynamic-sibling-styling",
    "form-fields-automatically-fit-contents",
    "improve-text-layout-and-legibility",
    "forms",
    "custom-button-actions",
    "accessible-error-announcement",
    "required-field-feedback",
    "validate-input-after-interaction",
    "identify-inp-causes",
    "schedule-tasks-by-priority",
    "optimize-preload-priority",
    "improve-next-page-load-performance",
    "interactions-in-complex-layouts",
    "performance",
    "visually-stable-font-fallbacks",
    "break-up-long-tasks",
    "identify-heavy-scripts",
    "optimize-script-priority",
    "defer-rendering-heavy-content",
    "defer-work-until-scroll-ends",
    "optimize-image-priority",
    "conditional-async-dependencies",
    "expose-canvas-content-to-browser-features",
    "move-dom-element-without-losing-state",
    "precise-text-alignment",
    "visually-stable-mixed-fonts",
    "css",
    "html",
    "reduce-style-repetition",
    "security",
    "privacy",
    "batch-analytics-events",
    "full-session-analytics",
    "calculate-total-foreground-time",
    "passkeys",
    "passkey-registration",
    "passkey-authentication",
    "passkey-reauthentication",
    "passkey-conditional-create",
    "passkey-management",
    "flicker-free-client-side-ab-testing",
    "consistent-cross-document-transitions",
    "stabilize-reactive-state",
    "resilient-context-menus-and-nested-dropdowns",
    "persistent-top-layer-ui",
    "detect-initial-visibility-state",
    "sequence-distributed-events",
    "translator",
    "language-detection",
    "support-global-calendar-systems",
    "capture-location-agnostic-data",
    "format-human-readable-durations",
    "manage-recurring-intervals",
    "calculate-event-differentials",
    "coordinate-global-events",
    "model-partial-time-concepts",
    "search-hidden-content",
    "select-menu-interaction",
    "style-parent-with-has",
    "autofill-address-form",
    "autofill-payment-form",
    "autofill-sign-in-form",
    "autofill-sign-up-form",
    "autofill-highlight-inputs",
    "deliver-optimized-decorative-images",
    "resolution-optimized-pseudo-elements",
    "deprioritize-background-fetches",
    "efficient-background-processing",
    "webmcp",
    "agentic-forms",
    "agentic-javascript-tools",
    "language-model",
    "summarizer"
  ],
  "artifacts": [
    {
      "type": "other",
      "path": "evidence/categories-probe.json",
      "caption": "categories probe",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "other",
      "path": "evidence/contrast-probe.json",
      "caption": "contrast probe",
      "condition": "forced-colors: active / prefers-contrast: more"
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies",
      "findingIds": [
        "F25"
      ]
    },
    {
      "type": "other",
      "path": "evidence/crawl-metadata-probe.json",
      "caption": "crawl metadata probe",
      "findingIds": [
        "F22",
        "F23",
        "F24",
        "F31"
      ]
    },
    {
      "type": "other",
      "path": "evidence/dark-probe.json",
      "caption": "dark probe",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/detail-discoverability-crawler.png",
      "caption": "detail discoverability crawler",
      "findingIds": [
        "F29"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/detail-discoverability-rendered.png",
      "caption": "detail discoverability rendered"
    },
    {
      "type": "discoverability",
      "path": "evidence/detail-discoverability.json",
      "caption": "detail discoverability",
      "findingIds": [
        "F29"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/detail-gate.png",
      "caption": "detail gate"
    },
    {
      "type": "other",
      "path": "evidence/detail-probe.json",
      "caption": "detail probe",
      "findingIds": [
        "F02",
        "F08",
        "F14",
        "F21",
        "F23",
        "F32",
        "F34",
        "F35"
      ]
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers",
      "findingIds": [
        "F25",
        "F28"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "heap baseline",
      "findingIds": [
        "F40"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-post.heapsnapshot",
      "caption": "heap post"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "home discoverability crawler",
      "findingIds": [
        "F29"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "home discoverability rendered"
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "home discoverability",
      "findingIds": [
        "F29"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-dom.json",
      "caption": "home dom",
      "findingIds": [
        "F05",
        "F15",
        "F27"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F06",
        "F11",
        "F30"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F06",
        "F07",
        "F08",
        "F16",
        "F17",
        "F30"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": [
        "F12",
        "F13",
        "F26",
        "F33",
        "F38",
        "F39"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": [
        "F10",
        "F12"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace",
      "findingIds": [
        "F10"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home",
      "findingIds": [
        "F12",
        "F26",
        "F39"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "images",
      "findingIds": [
        "F19",
        "F37"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home.json",
      "caption": "lighthouse home",
      "findingIds": [
        "F08",
        "F10",
        "F11",
        "F13",
        "F14",
        "F15",
        "F17",
        "F18",
        "F19",
        "F20",
        "F22",
        "F32",
        "F34"
      ]
    },
    {
      "type": "other",
      "path": "evidence/listing-probe.json",
      "caption": "listing probe",
      "findingIds": [
        "F02",
        "F03",
        "F04",
        "F07",
        "F09",
        "F15",
        "F21",
        "F22",
        "F35"
      ]
    },
    {
      "type": "other",
      "path": "evidence/login-probe.json",
      "caption": "login probe",
      "findingIds": [
        "F04",
        "F27",
        "F36"
      ]
    },
    {
      "type": "other",
      "path": "evidence/notfound-probe.json",
      "caption": "notfound probe",
      "findingIds": [
        "F04",
        "F09",
        "F31"
      ]
    },
    {
      "type": "other",
      "path": "evidence/recon-after-age-gate.json",
      "caption": "recon after age gate",
      "findingIds": [
        "F33",
        "F36"
      ]
    },
    {
      "type": "other",
      "path": "evidence/reduced-motion-probe.json",
      "caption": "reduced motion probe",
      "condition": "prefers-reduced-motion: reduce"
    },
    {
      "type": "other",
      "path": "evidence/search-probe.json",
      "caption": "search probe",
      "findingIds": [
        "F04",
        "F09"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets"
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers",
      "findingIds": [
        "F26",
        "F33",
        "F38"
      ]
    }
  ],
  "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": "medium",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Under emulated dark preference the body remains fixed black and computed `color-scheme` is `normal`; there is no adaptive color-scheme declaration.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/dark-probe.json",
        "evidence/home-dark.png"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct representative-path visual, DOM, interaction or objective probe for this exact outcome.",
      "evidence": "Reduced-motion emulation matched and the page exposed no active animations; no nonessential motion or auto-advance was observed on the gate.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/reduced-motion-probe.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct representative-path visual, DOM, interaction or objective probe for this exact outcome.",
      "evidence": "Forced-colors/high-contrast probe showed visible white controls and yellow links on black with preserved borders; Lighthouse did not fail color contrast.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/contrast-probe.json",
        "evidence/lighthouse-home.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "medium",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "DOM probes found the View Transition API available but no view-transition CSS or authored transition use on homepage/detail surfaces.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/detail-probe.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-path applicability judgement.",
      "evidence": "No scroll-linked animation, parallax or reveal interaction was present on the audited surfaces, so implementation technique does not apply.",
      "reason": "No scroll-linked animation, parallax or reveal interaction was present on the audited surfaces, so implementation technique does not apply."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-path applicability judgement.",
      "evidence": "No swipe, pull, drag, carousel gesture or equivalent physical interaction was present in the audited guest journeys.",
      "reason": "No swipe, pull, drag, carousel gesture or equivalent physical interaction was present in the audited guest journeys."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "medium",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The rendered CSS/DOM probe found no scroll-state/container-query or progress treatment on the long browse surface.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/listing-probe.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-path applicability judgement.",
      "evidence": "No tooltip, anchored menu or edge-positioned popover was present in the representative paths.",
      "reason": "No tooltip, anchored menu or edge-positioned popover was present in the representative paths."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Direct tests of `/video`, `/categories`, search, login and an unknown URL all resolved to the homepage without route-specific heading or recovery message.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/categories-probe.json",
        "evidence/search-probe.json",
        "evidence/login-probe.json",
        "evidence/notfound-probe.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct representative-path visual, DOM, interaction or objective probe for this exact outcome.",
      "evidence": "The blocking age notice is necessary to the site purpose and provides explicit enter/exit choices; the cookie surface includes essential-only and customise options.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "DOM inspection found zero `<dialog>` and zero popover elements while a blocking age gate and cookie controls are presented.",
      "pathIds": [
        "age-gate"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct representative-path visual, DOM, interaction or objective probe for this exact outcome.",
      "evidence": "Desktop screenshot shows a focused legal decision surface with minimal decorative chrome.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The 360x800 screenshot cuts off the heading, body text, law-enforcement link and the second decision button; layout reports no horizontal scrolling, so clipped content cannot be reached sideways.",
      "pathIds": [
        "age-gate"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "At 360px, fixed/minimum control sizing produces clipped copy and side-by-side decision controls; probes found no container-query support.",
      "pathIds": [
        "age-gate"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/listing-probe.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Lighthouse found visible-label/accessibility-name mismatches, while the mobile gate clips a primary button and several computed focused controls rely on minimal/default outlines.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-mobile.png",
        "evidence/detail-probe.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct representative-path visual, DOM, interaction or objective probe for this exact outcome.",
      "evidence": "The first viewport clearly states that this is an adult site and exposes explicit over-18 enter and under-18 exit decisions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon-after-age-gate.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct representative-path visual, DOM, interaction or objective probe for this exact outcome.",
      "evidence": "Programmatic activation of the over-18 control revealed homepage navigation and working links to representative content, including a detail page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon-after-age-gate.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The synthetic 404, `/video`, `/categories`, search and `/login` probes all landed on the generic homepage, with no not-found, loading or recovery explanation.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/notfound-probe.json",
        "evidence/listing-probe.json",
        "evidence/search-probe.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Lighthouse measured LCP 6.51s and CLS 0.887 (performance score 0.45); the independent trace measured LCP 5.39s.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json",
        "evidence/home-trace.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Lighthouse measured CLS 0.887 and the mobile layout observer independently recorded a 0.101 shift at about 4.25s.",
      "pathIds": [
        "age-gate"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-mobile-layout.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct representative-path visual, DOM, interaction or objective probe for this exact outcome.",
      "evidence": "Trace measured zero long tasks and zero blocking time; Lighthouse TBT was 34ms.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The HAR captured 172 requests and 5.94MB transferred, including seven parser-inserted high-priority stylesheets and multiple parser-inserted scripts requiring deferral review.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/home-trace-summary.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The HAR records 39 scripts (663KB) and 101 third-party requests (2.32MB), including about 303KB from Tag Manager scripts.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Lighthouse failed iframe-title and visible-label/name matching; the detail probe found multiple unlabeled text, checkbox and textarea controls.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/detail-probe.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct representative-path visual, DOM, interaction or objective probe for this exact outcome.",
      "evidence": "Forced-colors probe preserved control/text contrast, and Lighthouse did not report a WCAG color-contrast failure.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/contrast-probe.json",
        "evidence/lighthouse-home.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Lighthouse reports invalid html lang and label/name issues; the homepage begins with empty/H3 headings rather than a logical H1, and custom overlays are not semantic dialogs.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/listing-probe.json",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The mobile screenshot visibly clips multiple lines at both edges and truncates the primary heading and link text.",
      "pathIds": [
        "age-gate"
      ],
      "artifacts": [
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Lighthouse reports `user-scalable=no` or a maximum scale below 5, and the 360px screenshot shows clipped legal copy and actions.",
      "pathIds": [
        "age-gate"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Lighthouse failed `errors-in-console` during the audited load.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The image probe found 3 images without dimensions, 33 without responsive sources and 16 legacy-format assets; Lighthouse also reported two deprecated-API warnings.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Lighthouse found two deprecation warnings, inspector issues and four back/forward-cache failure reasons.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The homepage and representative detail page both report title `Pornhub`; probes found no meta description on rendered pages, so the detail is not uniquely described.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/detail-probe.json"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Lighthouse found non-crawlable anchors and 4,071 robots.txt parse errors; 18 visible homepage links use `javascript:` and `/robots.txt` redirects to the HTML homepage.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/crawl-metadata-probe.json",
        "evidence/listing-probe.json"
      ],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The detail page canonical points to the homepage, rendered robots is `noindex, nofollow`, there are no hreflang links, and sitemap.xml returns 404.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/detail-probe.json",
        "evidence/crawl-metadata-probe.json"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The metadata probe found no JSON-LD, Open Graph, Twitter Card or hreflang entries on the representative video page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/crawl-metadata-probe.json"
      ],
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "HTTPS and HSTS are present, but CSP and X-Content-Type-Options are missing; cookie audit flags `rp` as not Secure and all seven cookies as SameSite=None.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F25"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Tracker evidence found 12 third-party origins including Tag Manager and DoubleClick; the HAR records 101 third-party requests and 2.32MB transferred while the consent UI is present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F26"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The visible login destination and direct `/login` test resolve to the generic homepage, and the inspected DOM contains no WebAuthn/passkey affordance.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F27"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Headers show no CSP/frame-ancestors policy, no Referrer-Policy, no Permissions-Policy and no X-Content-Type-Options; X-Frame-Options and HSTS are present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F28"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Discoverability measured only 31% raw/rendered word overlap on home and 20% on detail; the age confirmation button requires JavaScript to reveal the primary experience.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-discoverability-crawler.png",
        "evidence/detail-discoverability.json",
        "evidence/detail-discoverability-crawler.png"
      ],
      "findingIds": [
        "F29"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "At 360px the age gate clips mandatory text and an exit decision, with no horizontal recovery.",
      "pathIds": [
        "age-gate"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json"
      ],
      "findingIds": [
        "F30"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-path applicability judgement.",
      "evidence": "This public media/content site was judged not to be an installable app; offline media playback is not required for the representative web journey.",
      "reason": "This public media/content site was judged not to be an installable app; offline media playback is not required for the representative web journey."
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "A synthetic unknown route resolves to the generic homepage rather than a useful 404/recovery state, while sitemap.xml returns a bare openresty 404.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/notfound-probe.json",
        "evidence/crawl-metadata-probe.json"
      ],
      "findingIds": [
        "F31"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The document reports `lang=\"cn\"`; Lighthouse fails html-lang-valid. `cn` is a region code, not the BCP 47 language code for Chinese.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/detail-probe.json"
      ],
      "findingIds": [
        "F32"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-path applicability judgement.",
      "evidence": "No user-facing dates, currencies, durations or locale-sensitive numeric data appeared in the representative guest paths.",
      "reason": "No user-facing dates, currencies, durations or locale-sensitive numeric data appeared in the representative guest paths."
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-path applicability judgement.",
      "evidence": "No event scheduling, recurring time or cross-zone time data appeared in the representative paths.",
      "reason": "No event scheduling, recurring time or cross-zone time data appeared in the representative paths."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Visible nav labels such as LIVE CAMS and DATING 18+ point to TrafficJunky advertising URLs, while tracker evidence shows Google/DoubleClick activity during the initial consent/age surface.",
      "pathIds": [
        "age-gate"
      ],
      "artifacts": [
        "evidence/recon-after-age-gate.json",
        "evidence/trackers.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F33"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The detail probe found unlabeled text, checkbox and textarea fields; accessible error association cannot be reliable without names/labels.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/detail-probe.json",
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F34"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The primary search field sets autocomplete off, and detail controls lack labels/autocomplete semantics.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/detail-probe.json"
      ],
      "findingIds": [
        "F35"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The visible login link/direct `/login` journey resolves to the homepage, hiding authentication requirements and recovery until a script-driven state is found.",
      "pathIds": [
        "age-gate"
      ],
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/recon-after-age-gate.json"
      ],
      "findingIds": [
        "F36"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Image inspection found 33 of 37 images without srcset, 16 legacy-format assets, 3 missing dimensions and 2 below-fold images not lazy-loaded.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json"
      ],
      "findingIds": [
        "F37"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "The HAR captures 172 requests including 38 fetch/XHR requests and 101 third-party requests during a gate/consent-first experience.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F38"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Third parties account for 101 requests and 2.32MB; advertising image origins and Tag Manager are among the largest contributors.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F39"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-path applicability judgement.",
      "evidence": "This public adult-media browse experience does not declare an agent-facing capability or agentic-commerce intent; emerging WebMCP exposure is therefore not required.",
      "reason": "This public adult-media browse experience does not declare an agent-facing capability or agentic-commerce intent; emerging WebMCP exposure is therefore not required."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and representative-path applicability judgement.",
      "evidence": "No summarisation, language-model or other inference feature is part of the representative journey, so on-device inference is not applicable.",
      "reason": "No summarisation, language-model or other inference feature is part of the representative journey, so on-device inference is not applicable."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct representative-path visual, DOM, interaction or objective probe for this exact outcome.",
      "evidence": "Across baseline and post-interaction heap summaries after ten repeated scroll cycles, self size grew about 0.55MB (1.5%) and node count about 0.34%, not evidence of unbounded growth.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "issues",
      "confidence": "high",
      "method": "Targeted visual/DOM/CDP/Lighthouse evidence for this exact check across the representative paths.",
      "evidence": "Baseline heap summary reports 557,496 nodes and 36.86MB self size for a gated browse page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot"
      ],
      "findingIds": [
        "F40"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct representative-path visual, DOM, interaction or objective probe for this exact outcome.",
      "evidence": "No Detached* constructor appeared in either top-constructor summary; closures increased only 103 and overall nodes remained nearly stable after repeated interaction.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03",
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06",
        "F07",
        "F08"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F10",
        "F11",
        "F12",
        "F13"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F14",
        "F15",
        "F16",
        "F17"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F18",
        "F19",
        "F20"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F21",
        "F22",
        "F23",
        "F24"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F25",
        "F26",
        "F27",
        "F28"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F29",
        "F30",
        "F31"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F32"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F33",
        "F34",
        "F35",
        "F36"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F37",
        "F38",
        "F39"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "This public adult-media browse experience does not declare an agent-facing capability or agentic-commerce intent; emerging WebMCP exposure is therefore not required. No summarisation, language-model or other inference feature is part of the representative journey, so on-device inference is not applicable."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F40"
      ]
    }
  ],
  "paths": [
    {
      "id": "age-gate",
      "description": "Entry and legally required age-confirmation journey on the first visit; tested at desktop, 360x800 mobile, dark, reduced-motion and forced-colors conditions.",
      "url": "https://cn.pornhub.com/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "forced-colors: active",
        "keyboard focus"
      ],
      "result": "issues"
    },
    {
      "id": "home",
      "description": "Post-confirmation homepage/feed, representing the primary browse journey and shared navigation/card template.",
      "url": "https://cn.pornhub.com/",
      "conditions": [
        "age confirmation activated",
        "network/performance trace",
        "no-JavaScript crawler"
      ],
      "result": "issues"
    },
    {
      "id": "detail",
      "description": "Representative video-detail/content page, including heading, media metadata, interaction controls and forms.",
      "url": "https://cn.pornhub.com/view_video.php?viewkey=ph5e946908bdbfc",
      "conditions": [
        "age confirmation activated",
        "no-JavaScript crawler"
      ],
      "result": "issues"
    },
    {
      "id": "routes",
      "description": "Listing, categories, search, login and synthetic 404 URLs, used to test navigation continuity and recovery. These URLs redirected to the homepage in this environment, so the shared homepage template represents them and the redirect behaviour is itself evidence.",
      "url": "https://cn.pornhub.com/video",
      "conditions": [
        "direct navigation",
        "search query",
        "login URL",
        "unknown URL"
      ],
      "result": "issues"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "severity": "low",
      "confidence": "medium",
      "summary": "The page does not declare or respond to the user color scheme",
      "evidence": "Under emulated dark preference the body remains fixed black and computed `color-scheme` is `normal`; there is no adaptive color-scheme declaration.",
      "artifacts": [
        "evidence/dark-probe.json",
        "evidence/home-dark.png"
      ],
      "suggestedFix": "Declare supported schemes at the root and use preference-aware color tokens so native controls and the initial canvas follow the user.",
      "effort": "small"
    },
    {
      "id": "F02",
      "pathId": "detail",
      "url": "https://cn.pornhub.com/view_video.php?viewkey=ph5e946908bdbfc",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "cross-document-transitions",
      "severity": "low",
      "confidence": "medium",
      "summary": "Route and state changes do not use View Transitions",
      "evidence": "DOM probes found the View Transition API available but no view-transition CSS or authored transition use on homepage/detail surfaces.",
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/detail-probe.json"
      ],
      "suggestedFix": "Add progressive cross-document or same-document View Transitions for primary browse-to-detail changes, with a reduced-motion fallback.",
      "effort": "small"
    },
    {
      "id": "F03",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "shrinking-header-on-scroll",
      "severity": "low",
      "confidence": "medium",
      "summary": "Navigation chrome is not scroll-state aware",
      "evidence": "The rendered CSS/DOM probe found no scroll-state/container-query or progress treatment on the long browse surface.",
      "artifacts": [
        "evidence/listing-probe.json"
      ],
      "suggestedFix": "Use CSS scroll-state queries or a lightweight progress affordance for sticky navigation where it helps orientation.",
      "effort": "small"
    },
    {
      "id": "F04",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "directs-attention",
      "guidanceId": "directional-navigation-transitions",
      "severity": "medium",
      "confidence": "high",
      "summary": "Several visible navigation destinations do not preserve route context",
      "evidence": "Direct tests of `/video`, `/categories`, search, login and an unknown URL all resolved to the homepage without route-specific heading or recovery message.",
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/categories-probe.json",
        "evidence/search-probe.json",
        "evidence/login-probe.json",
        "evidence/notfound-probe.json"
      ],
      "suggestedFix": "Preserve destination state and visibly orient the user with route headings, selected navigation state and explicit error/recovery states.",
      "effort": "small"
    },
    {
      "id": "F05",
      "pathId": "age-gate",
      "url": "https://cn.pornhub.com/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "severity": "medium",
      "confidence": "high",
      "summary": "The age and cookie overlays use custom containers instead of semantic top-layer primitives",
      "evidence": "DOM inspection found zero `<dialog>` and zero popover elements while a blocking age gate and cookie controls are presented.",
      "artifacts": [
        "evidence/home-dom.json"
      ],
      "suggestedFix": "Use `<dialog>` for the modal age decision and semantic buttons/forms, with managed focus and platform dismissal behaviour where legally appropriate.",
      "effort": "small"
    },
    {
      "id": "F06",
      "pathId": "age-gate",
      "url": "https://cn.pornhub.com/",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "responsive-no-horizontal-scroll",
      "guidanceId": "css-layout",
      "severity": "critical",
      "confidence": "high",
      "summary": "The mandatory age gate is clipped on a 360px viewport",
      "evidence": "The 360x800 screenshot cuts off the heading, body text, law-enforcement link and the second decision button; layout reports no horizontal scrolling, so clipped content cannot be reached sideways.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json"
      ],
      "suggestedFix": "Reflow the gate to one fluid column, wrap text and stack both decision buttons within the viewport using intrinsic sizing.",
      "effort": "medium"
    },
    {
      "id": "F07",
      "pathId": "age-gate",
      "url": "https://cn.pornhub.com/",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "fluid-scaling",
      "severity": "medium",
      "confidence": "high",
      "summary": "The age-gate component does not adapt to its narrow container",
      "evidence": "At 360px, fixed/minimum control sizing produces clipped copy and side-by-side decision controls; probes found no container-query support.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/listing-probe.json"
      ],
      "suggestedFix": "Use container queries or intrinsic flex/grid sizing to stack controls and scale spacing based on available inline size.",
      "effort": "small"
    },
    {
      "id": "F08",
      "pathId": "detail",
      "url": "https://cn.pornhub.com/view_video.php?viewkey=ph5e946908bdbfc",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "severity": "medium",
      "confidence": "high",
      "summary": "Focus and touch support are inconsistent",
      "evidence": "Lighthouse found visible-label/accessibility-name mismatches, while the mobile gate clips a primary button and several computed focused controls rely on minimal/default outlines.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-mobile.png",
        "evidence/detail-probe.json"
      ],
      "suggestedFix": "Keep all touch targets in view and add consistent `:focus-visible` styles with accessible names matching visible labels.",
      "effort": "small"
    },
    {
      "id": "F09",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "support-core-task-success",
      "principleCheckId": "clear-system-state-and-recovery",
      "guidanceId": "persistent-toast-notifications",
      "severity": "high",
      "confidence": "high",
      "summary": "Unknown and route-specific URLs fail without an explanatory state",
      "evidence": "The synthetic 404, `/video`, `/categories`, search and `/login` probes all landed on the generic homepage, with no not-found, loading or recovery explanation.",
      "artifacts": [
        "evidence/notfound-probe.json",
        "evidence/listing-probe.json",
        "evidence/search-probe.json"
      ],
      "suggestedFix": "Return meaningful status codes and show route-specific empty/error states with retry, home and search actions.",
      "effort": "medium"
    },
    {
      "id": "F10",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "severity": "high",
      "confidence": "high",
      "summary": "Core Web Vitals are poor on the entry experience",
      "evidence": "Lighthouse measured LCP 6.51s and CLS 0.887 (performance score 0.45); the independent trace measured LCP 5.39s.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json",
        "evidence/home-trace.json"
      ],
      "suggestedFix": "Prioritise the LCP element, reserve late content space, and defer noncritical scripts/styles and third-party work.",
      "effort": "medium"
    },
    {
      "id": "F11",
      "pathId": "age-gate",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "visual-stability",
      "guidanceId": "visually-stable-font-fallbacks",
      "severity": "high",
      "confidence": "high",
      "summary": "The page shifts substantially during load",
      "evidence": "Lighthouse measured CLS 0.887 and the mobile layout observer independently recorded a 0.101 shift at about 4.25s.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-mobile-layout.json"
      ],
      "suggestedFix": "Reserve dimensions for late UI/media and use stable font fallbacks so banners and content do not move after paint.",
      "effort": "medium"
    },
    {
      "id": "F12",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-image-priority",
      "severity": "high",
      "confidence": "high",
      "summary": "The critical delivery path is heavy and has many blocking candidates",
      "evidence": "The HAR captured 172 requests and 5.94MB transferred, including seven parser-inserted high-priority stylesheets and multiple parser-inserted scripts requiring deferral review.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/home-trace-summary.json"
      ],
      "suggestedFix": "Inline only critical styles, defer noncritical CSS/scripts, prioritise the true LCP asset and improve cache/dependency ordering.",
      "effort": "medium"
    },
    {
      "id": "F13",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "severity": "medium",
      "confidence": "high",
      "summary": "Third-party and script payloads dominate a large load",
      "evidence": "The HAR records 39 scripts (663KB) and 101 third-party requests (2.32MB), including about 303KB from Tag Manager scripts.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/lighthouse-home.json"
      ],
      "suggestedFix": "Audit code coverage, remove duplicate/unused bundles and load advertising/analytics only after consent and when needed.",
      "effort": "small"
    },
    {
      "id": "F14",
      "pathId": "detail",
      "url": "https://cn.pornhub.com/view_video.php?viewkey=ph5e946908bdbfc",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Some controls and embedded content lack robust accessible names",
      "evidence": "Lighthouse failed iframe-title and visible-label/name matching; the detail probe found multiple unlabeled text, checkbox and textarea controls.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/detail-probe.json"
      ],
      "suggestedFix": "Give every field a persistent `<label>`, title embedded frames, and ensure accessible names match visible control labels.",
      "effort": "medium"
    },
    {
      "id": "F15",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "severity": "medium",
      "confidence": "high",
      "summary": "Document language, heading structure and focus semantics are inconsistent",
      "evidence": "Lighthouse reports invalid html lang and label/name issues; the homepage begins with empty/H3 headings rather than a logical H1, and custom overlays are not semantic dialogs.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/listing-probe.json",
        "evidence/home-dom.json"
      ],
      "suggestedFix": "Use `lang=\"zh\"`/an appropriate BCP 47 tag, one logical H1, ordered headings/landmarks, and a dialog focus lifecycle with visible focus.",
      "effort": "small"
    },
    {
      "id": "F16",
      "pathId": "age-gate",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "legible-text",
      "guidanceId": "improve-text-layout-and-legibility",
      "severity": "critical",
      "confidence": "high",
      "summary": "Age-gate text is not legible in the narrow viewport",
      "evidence": "The mobile screenshot visibly clips multiple lines at both edges and truncates the primary heading and link text.",
      "artifacts": [
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Use fluid max-inline-size, natural wrapping and single-column controls so all legal and decision copy remains readable.",
      "effort": "medium"
    },
    {
      "id": "F17",
      "pathId": "age-gate",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Viewport scaling is restricted and narrow reflow fails",
      "evidence": "Lighthouse reports `user-scalable=no` or a maximum scale below 5, and the 360px screenshot shows clipped legal copy and actions.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Remove scaling restrictions and ensure content reflows at narrow/zoomed widths without clipping or loss of controls.",
      "effort": "medium"
    },
    {
      "id": "F18",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "follow-best-practices",
      "principleCheckId": "no-console-errors",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "The page logs browser errors",
      "evidence": "Lighthouse failed `errors-in-console` during the audited load.",
      "artifacts": [
        "evidence/lighthouse-home.json"
      ],
      "suggestedFix": "Resolve the logged network/runtime errors and add production error monitoring that does not itself create console noise.",
      "effort": "small"
    },
    {
      "id": "F19",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "Document and asset hygiene has avoidable defects",
      "evidence": "The image probe found 3 images without dimensions, 33 without responsive sources and 16 legacy-format assets; Lighthouse also reported two deprecated-API warnings.",
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse-home.json"
      ],
      "suggestedFix": "Add intrinsic dimensions and responsive sources, modernise legacy assets/APIs, and preserve aspect ratios.",
      "effort": "small"
    },
    {
      "id": "F20",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "Deprecated APIs, inspector issues and BFCache blockers remain",
      "evidence": "Lighthouse found two deprecation warnings, inspector issues and four back/forward-cache failure reasons.",
      "artifacts": [
        "evidence/lighthouse-home.json"
      ],
      "suggestedFix": "Remove deprecated calls, address DevTools Issues, and eliminate unload/cache blockers so history navigation can use BFCache.",
      "effort": "small"
    },
    {
      "id": "F21",
      "pathId": "detail",
      "url": "https://cn.pornhub.com/view_video.php?viewkey=ph5e946908bdbfc",
      "principleId": "be-discoverable",
      "principleCheckId": "title-and-description",
      "guidanceId": "html",
      "severity": "high",
      "confidence": "high",
      "summary": "Public pages use generic metadata",
      "evidence": "The homepage and representative detail page both report title `Pornhub`; probes found no meta description on rendered pages, so the detail is not uniquely described.",
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/detail-probe.json"
      ],
      "suggestedFix": "Give each public template a unique descriptive title and concise meta description matching visible content.",
      "effort": "medium"
    },
    {
      "id": "F22",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "html",
      "severity": "high",
      "confidence": "high",
      "summary": "Crawlability signals are broken",
      "evidence": "Lighthouse found non-crawlable anchors and 4,071 robots.txt parse errors; 18 visible homepage links use `javascript:` and `/robots.txt` redirects to the HTML homepage.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/crawl-metadata-probe.json",
        "evidence/listing-probe.json"
      ],
      "suggestedFix": "Serve a valid text/plain robots.txt and replace JavaScript pseudo-links with real href destinations.",
      "effort": "medium"
    },
    {
      "id": "F23",
      "pathId": "detail",
      "url": "https://cn.pornhub.com/view_video.php?viewkey=ph5e946908bdbfc",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "severity": "high",
      "confidence": "high",
      "summary": "Localized/detail pages expose contradictory indexing signals",
      "evidence": "The detail page canonical points to the homepage, rendered robots is `noindex, nofollow`, there are no hreflang links, and sitemap.xml returns 404.",
      "artifacts": [
        "evidence/detail-probe.json",
        "evidence/crawl-metadata-probe.json"
      ],
      "suggestedFix": "Set self-referential canonicals where appropriate, deliberate index policy, valid hreflang for locales, and publish consistent robots/sitemap files.",
      "effort": "medium"
    },
    {
      "id": "F24",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "The content detail has no structured or social metadata",
      "evidence": "The metadata probe found no JSON-LD, Open Graph, Twitter Card or hreflang entries on the representative video page.",
      "artifacts": [
        "evidence/crawl-metadata-probe.json"
      ],
      "suggestedFix": "Add accurate VideoObject JSON-LD and social preview metadata that describes the visible content and maturity.",
      "effort": "small"
    },
    {
      "id": "F25",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "severity": "high",
      "confidence": "high",
      "summary": "Security headers and one cookie posture are incomplete",
      "evidence": "HTTPS and HSTS are present, but CSP and X-Content-Type-Options are missing; cookie audit flags `rp` as not Secure and all seven cookies as SameSite=None.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Deploy a restrictive CSP, `nosniff`, and secure least-permissive SameSite cookie settings.",
      "effort": "medium"
    },
    {
      "id": "F26",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "severity": "high",
      "confidence": "high",
      "summary": "The first load has a large tracking and advertising footprint",
      "evidence": "Tracker evidence found 12 third-party origins including Tag Manager and DoubleClick; the HAR records 101 third-party requests and 2.32MB transferred while the consent UI is present.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "suggestedFix": "Default to essential-only requests until consent, minimise vendors/events, batch analytics and document each third party.",
      "effort": "medium"
    },
    {
      "id": "F27",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "in-context-permissions-and-modern-auth",
      "guidanceId": "passkeys",
      "severity": "medium",
      "confidence": "high",
      "summary": "The account entry path does not expose a verifiable modern-auth flow",
      "evidence": "The visible login destination and direct `/login` test resolve to the generic homepage, and the inspected DOM contains no WebAuthn/passkey affordance.",
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/home-dom.json"
      ],
      "suggestedFix": "Provide a stable sign-in route and offer passkeys/WebAuthn alongside recovery options; request permissions only from explicit user actions.",
      "effort": "small"
    },
    {
      "id": "F28",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "severity": "high",
      "confidence": "high",
      "summary": "Defensive browser policies are incomplete",
      "evidence": "Headers show no CSP/frame-ancestors policy, no Referrer-Policy, no Permissions-Policy and no X-Content-Type-Options; X-Frame-Options and HSTS are present.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "suggestedFix": "Add CSP with frame-ancestors and Trusted Types where feasible, plus nosniff, Referrer-Policy and least-privilege Permissions-Policy.",
      "effort": "medium"
    },
    {
      "id": "F29",
      "pathId": "detail",
      "url": "https://cn.pornhub.com/view_video.php?viewkey=ph5e946908bdbfc",
      "principleId": "be-resilient",
      "principleCheckId": "progressive-enhancement",
      "guidanceId": "consistent-cross-document-transitions",
      "severity": "high",
      "confidence": "high",
      "summary": "Core browse content is only partially available without JavaScript",
      "evidence": "Discoverability measured only 31% raw/rendered word overlap on home and 20% on detail; the age confirmation button requires JavaScript to reveal the primary experience.",
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-discoverability-crawler.png",
        "evidence/detail-discoverability.json",
        "evidence/detail-discoverability-crawler.png"
      ],
      "suggestedFix": "Server-render meaningful route content and make the age decision a progressively enhanced form/navigation flow.",
      "effort": "medium"
    },
    {
      "id": "F30",
      "pathId": "age-gate",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-resilient",
      "principleCheckId": "resilient-runtime-behaviour",
      "guidanceId": "css-layout",
      "severity": "critical",
      "confidence": "high",
      "summary": "The blocking overlay fails at a common adverse viewport",
      "evidence": "At 360px the age gate clips mandatory text and an exit decision, with no horizontal recovery.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json"
      ],
      "suggestedFix": "Build the overlay with semantic dialog and intrinsic responsive sizing, and test all viewport edges and zoom states.",
      "effort": "medium"
    },
    {
      "id": "F31",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-resilient",
      "principleCheckId": "network-and-http-failure-states",
      "guidanceId": "persistent-toast-notifications",
      "severity": "high",
      "confidence": "high",
      "summary": "HTTP and missing-route recovery is not intentional",
      "evidence": "A synthetic unknown route resolves to the generic homepage rather than a useful 404/recovery state, while sitemap.xml returns a bare openresty 404.",
      "artifacts": [
        "evidence/notfound-probe.json",
        "evidence/crawl-metadata-probe.json"
      ],
      "suggestedFix": "Return correct HTTP statuses and helpful branded recovery states with search/home/retry actions.",
      "effort": "medium"
    },
    {
      "id": "F32",
      "pathId": "detail",
      "url": "https://cn.pornhub.com/view_video.php?viewkey=ph5e946908bdbfc",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "translator",
      "severity": "high",
      "confidence": "high",
      "summary": "The Chinese locale uses an invalid language tag",
      "evidence": "The document reports `lang=\"cn\"`; Lighthouse fails html-lang-valid. `cn` is a region code, not the BCP 47 language code for Chinese.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/detail-probe.json"
      ],
      "suggestedFix": "Use an appropriate language tag such as `zh-CN`, set direction explicitly where needed, and use logical CSS properties for locale-safe layout.",
      "effort": "medium"
    },
    {
      "id": "F33",
      "pathId": "age-gate",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "privacy",
      "severity": "high",
      "confidence": "high",
      "summary": "Advertising destinations are disguised as primary navigation and tracking starts on the consent surface",
      "evidence": "Visible nav labels such as LIVE CAMS and DATING 18+ point to TrafficJunky advertising URLs, while tracker evidence shows Google/DoubleClick activity during the initial consent/age surface.",
      "artifacts": [
        "evidence/recon-after-age-gate.json",
        "evidence/trackers.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Label sponsored/external destinations clearly and prevent nonessential advertising/analytics requests before an affirmative choice.",
      "effort": "medium"
    },
    {
      "id": "F34",
      "pathId": "detail",
      "url": "https://cn.pornhub.com/view_video.php?viewkey=ph5e946908bdbfc",
      "principleId": "be-trustworthy",
      "principleCheckId": "humane-error-handling",
      "guidanceId": "forms",
      "severity": "medium",
      "confidence": "high",
      "summary": "Interactive forms do not consistently expose humane, accessible validation",
      "evidence": "The detail probe found unlabeled text, checkbox and textarea fields; accessible error association cannot be reliable without names/labels.",
      "artifacts": [
        "evidence/detail-probe.json",
        "evidence/lighthouse-home.json"
      ],
      "suggestedFix": "Add persistent labels, delayed `:user-invalid` feedback, `aria-describedby` messages and announced recovery instructions.",
      "effort": "small"
    },
    {
      "id": "F35",
      "pathId": "detail",
      "url": "https://cn.pornhub.com/view_video.php?viewkey=ph5e946908bdbfc",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "forms",
      "severity": "medium",
      "confidence": "high",
      "summary": "Input assistance is disabled or absent",
      "evidence": "The primary search field sets autocomplete off, and detail controls lack labels/autocomplete semantics.",
      "artifacts": [
        "evidence/listing-probe.json",
        "evidence/detail-probe.json"
      ],
      "suggestedFix": "Use meaningful autocomplete tokens where applicable and retain browser assistance unless there is a documented security reason not to.",
      "effort": "small"
    },
    {
      "id": "F36",
      "pathId": "age-gate",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-trustworthy",
      "principleCheckId": "safe-commercial-and-account-flows",
      "guidanceId": "autofill-sign-in-form",
      "severity": "high",
      "confidence": "high",
      "summary": "The account flow has no stable, inspectable entry route",
      "evidence": "The visible login link/direct `/login` journey resolves to the homepage, hiding authentication requirements and recovery until a script-driven state is found.",
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/recon-after-age-gate.json"
      ],
      "suggestedFix": "Provide a stable, predictable sign-in URL with clear commitment/recovery language, correct autocomplete and passkey support.",
      "effort": "medium"
    },
    {
      "id": "F37",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "optimize-image-priority",
      "severity": "medium",
      "confidence": "high",
      "summary": "Image delivery is not consistently responsive or modern",
      "evidence": "Image inspection found 33 of 37 images without srcset, 16 legacy-format assets, 3 missing dimensions and 2 below-fold images not lazy-loaded.",
      "artifacts": [
        "evidence/images.json"
      ],
      "suggestedFix": "Serve AVIF/WebP responsive sources sized to display, include dimensions and lazy-load noncritical imagery.",
      "effort": "small"
    },
    {
      "id": "F38",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "deprioritize-background-fetches",
      "severity": "high",
      "confidence": "high",
      "summary": "The first view performs substantial background/network work",
      "evidence": "The HAR captures 172 requests including 38 fetch/XHR requests and 101 third-party requests during a gate/consent-first experience.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "suggestedFix": "Defer background fetches, pause offscreen work and batch telemetry until consent and user need.",
      "effort": "medium"
    },
    {
      "id": "F39",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "efficient-background-processing",
      "severity": "high",
      "confidence": "high",
      "summary": "Third-party resource cost is disproportionate on the entry surface",
      "evidence": "Third parties account for 101 requests and 2.32MB; advertising image origins and Tag Manager are among the largest contributors.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "suggestedFix": "Set a third-party budget, remove low-value vendors and defer/cancel media and advertising work until visible and consented.",
      "effort": "medium"
    },
    {
      "id": "F40",
      "pathId": "home",
      "url": "https://cn.pornhub.com/",
      "principleId": "be-memory-efficient",
      "principleCheckId": "bounded-footprint",
      "guidanceId": "defer-rendering-heavy-content",
      "severity": "medium",
      "confidence": "high",
      "summary": "The entry page has a large in-memory footprint before sustained use",
      "evidence": "Baseline heap summary reports 557,496 nodes and 36.86MB self size for a gated browse page.",
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot"
      ],
      "suggestedFix": "Virtualise/defer offscreen feed content, reduce retained native nodes and audit large closures/caches.",
      "effort": "small"
    }
  ],
  "taskList": [
    {
      "id": "T1",
      "title": "Rebuild the age gate for mobile reflow, zoom and semantic dialog behaviour",
      "priority": 1,
      "findingIds": [
        "F06",
        "F07",
        "F17",
        "F30"
      ],
      "guidanceId": "css-layout",
      "status": "open"
    },
    {
      "id": "T2",
      "title": "Fix LCP, CLS and the critical resource path",
      "priority": 2,
      "findingIds": [
        "F10",
        "F11",
        "F12",
        "F13"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T3",
      "title": "Repair robots, canonical, metadata and route recovery signals",
      "priority": 3,
      "findingIds": [
        "F21",
        "F22",
        "F23",
        "F24",
        "F31"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T4",
      "title": "Reduce and consent-gate third-party tracking",
      "priority": 4,
      "findingIds": [
        "F26",
        "F33",
        "F38"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T5",
      "title": "Complete CSP, cookie and browser-policy defenses",
      "priority": 5,
      "findingIds": [
        "F25",
        "F27",
        "F28"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T6",
      "title": "Correct language, labels, focus and document structure",
      "priority": 6,
      "findingIds": [
        "F14",
        "F15",
        "F16",
        "F17",
        "F32"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T7",
      "title": "Optimise responsive assets and third-party resource budgets",
      "priority": 7,
      "findingIds": [
        "F19",
        "F37",
        "F38",
        "F39"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T8",
      "title": "Stabilise account, search, navigation and failure routes",
      "priority": 8,
      "findingIds": [
        "F03",
        "F04",
        "F09",
        "F33",
        "F34",
        "F35",
        "F36"
      ],
      "guidanceId": "forms",
      "status": "open"
    },
    {
      "id": "T9",
      "title": "Reduce the initial DOM/heap footprint",
      "priority": 9,
      "findingIds": [
        "F40"
      ],
      "guidanceId": "defer-rendering-heavy-content",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 4,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-23T10-31-57-425Z"
}
