{
  "url": "https://xhamster.com",
  "auditedAt": "2026-07-20T01:16:51.227Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete representative-template audit; no source changes requested.",
  "page": {
    "appType": "mpa",
    "framework": "server-rendered application with client hydration",
    "notes": "Public adult-media catalogue. Audited home, listing, category, detail, search, signup and 404 templates. Playback, authenticated account settings, upload, payment and cancellation were not covered because they require media interaction, authentication or commercial commitment."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "trace",
    "har",
    "heap-summary",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "lighthouse",
    "robots.txt",
    "manifest"
  ],
  "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",
    "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": "screenshot",
      "path": "evidence/categories-discoverability-crawler.png",
      "caption": "categories discoverability crawler"
    },
    {
      "type": "screenshot",
      "path": "evidence/categories-discoverability-rendered.png",
      "caption": "categories discoverability rendered"
    },
    {
      "type": "discoverability",
      "path": "evidence/categories-discoverability.json",
      "caption": "categories discoverability"
    },
    {
      "type": "dom",
      "path": "evidence/categories-dom.json",
      "caption": "categories dom",
      "findingIds": [
        "F02",
        "F03"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/detail-dom.json",
      "caption": "detail dom",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/detail.png",
      "caption": "detail",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "other",
      "path": "evidence/guidance-explicit-ids.txt",
      "caption": "guidance explicit ids"
    },
    {
      "type": "other",
      "path": "evidence/guidance-retrieve-failures.txt",
      "caption": "guidance retrieve failures"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-adapt-to-the-form-factor.json",
      "caption": "guidance search adapt to the form factor"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-be-agent-ready.json",
      "caption": "guidance search be agent ready"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-be-discoverable.json",
      "caption": "guidance search be discoverable"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-be-fast-and-stable.json",
      "caption": "guidance search be fast and stable"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-be-inclusive.json",
      "caption": "guidance search be inclusive"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-be-internationalised.json",
      "caption": "guidance search be internationalised"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-be-memory-efficient.json",
      "caption": "guidance search be memory efficient"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-be-private-and-secure.json",
      "caption": "guidance search be private and secure"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-be-resilient.json",
      "caption": "guidance search be resilient"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-be-sustainable.json",
      "caption": "guidance search be sustainable"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-be-trustworthy.json",
      "caption": "guidance search be trustworthy"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-follow-best-practices.json",
      "caption": "guidance search follow best practices"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-implement-natural-interactions.json",
      "caption": "guidance search implement natural interactions"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-maximize-content-reduce-noise.json",
      "caption": "guidance search maximize content reduce noise"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-provide-guided-navigation.json",
      "caption": "guidance search provide guided navigation"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-respect-user-preferences.json",
      "caption": "guidance search respect user preferences"
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-support-core-task-success.json",
      "caption": "guidance search support core task success"
    },
    {
      "type": "heap",
      "path": "evidence/heap-comparison.json",
      "caption": "heap comparison"
    },
    {
      "type": "other",
      "path": "evidence/home-cookies.json",
      "caption": "home cookies",
      "findingIds": [
        "F14"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark-reduce.png",
      "caption": "home dark reduce",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": [
        "F04",
        "F05"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "home discoverability crawler"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "home discoverability rendered"
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "home discoverability"
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-focus-targets.json",
      "caption": "home focus targets",
      "findingIds": [
        "F08"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-headers.json",
      "caption": "home headers",
      "findingIds": [
        "F14"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/home-heap-baseline.json",
      "caption": "home heap baseline"
    },
    {
      "type": "heap",
      "path": "evidence/home-heap-post.json",
      "caption": "home heap post"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-high-contrast.png",
      "caption": "home high contrast",
      "findingIds": [
        "F12"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-images.json",
      "caption": "home images",
      "findingIds": [
        "F16"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-light.png",
      "caption": "home light"
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout",
      "findingIds": [
        "F07",
        "F13"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "findingIds": [
        "F03",
        "F06",
        "F07",
        "F13"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-platform-probe.json",
      "caption": "home platform probe"
    },
    {
      "type": "other",
      "path": "evidence/home-recon.json",
      "caption": "home recon",
      "findingIds": [
        "F05"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-reduced-motion.json",
      "caption": "home reduced motion",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-secrets.json",
      "caption": "home secrets"
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": [
        "F10",
        "F15"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": [
        "F09"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace"
    },
    {
      "type": "other",
      "path": "evidence/home-trackers.json",
      "caption": "home trackers",
      "findingIds": [
        "F15"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home",
      "findingIds": [
        "F10",
        "F15"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-detail.json",
      "caption": "lighthouse detail",
      "findingIds": [
        "F11",
        "F12",
        "F13"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-opportunities.json",
      "caption": "lighthouse opportunities"
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-summary.json",
      "caption": "lighthouse summary",
      "findingIds": [
        "F09",
        "F11"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "lighthouse",
      "findingIds": [
        "F08",
        "F09",
        "F10",
        "F11",
        "F12"
      ]
    },
    {
      "type": "other",
      "path": "evidence/manifest.webmanifest",
      "caption": "manifest"
    },
    {
      "type": "screenshot",
      "path": "evidence/newest.png",
      "caption": "newest",
      "findingIds": [
        "F03",
        "F06"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/not-found.png",
      "caption": "not found",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "other",
      "path": "evidence/robots-headers.txt",
      "caption": "robots headers"
    },
    {
      "type": "other",
      "path": "evidence/robots.txt",
      "caption": "robots"
    },
    {
      "type": "screenshot",
      "path": "evidence/search-results.png",
      "caption": "search results"
    },
    {
      "type": "dom",
      "path": "evidence/signup-dom.json",
      "caption": "signup dom"
    },
    {
      "type": "other",
      "path": "evidence/signup-probe.json",
      "caption": "signup probe"
    },
    {
      "type": "screenshot",
      "path": "evidence/signup.png",
      "caption": "signup",
      "findingIds": [
        "F04"
      ]
    }
  ],
  "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": "pass",
      "confidence": "high",
      "method": "Direct multimodal evidence review.",
      "evidence": "Light and dark emulation produced deliberately retinted light and dark themes with readable content.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-light.png",
        "evidence/home-dark-reduce.png"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "The reduced-motion evaluate probe found eight running 2,000 ms placeholder animations and zero accessible prefers-reduced-motion rules while the emulated preference was active.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-reduced-motion.json",
        "evidence/home-dark-reduce.png"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct multimodal evidence review.",
      "evidence": "Under prefers-contrast: more, controls and text remained visible; the capture showed no disappearing essential affordances.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-high-contrast.png"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "DOM snapshots identify a multi-page site with ordinary links, while route screenshots show independent full loads and no view-transition declaration was present in the rendered document.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/categories-dom.json",
        "evidence/detail-dom.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon.",
      "evidence": "No parallax, scrollytelling, or scroll-linked animation was present on the audited listing, detail, search, signup, or error templates.",
      "reason": "No parallax, scrollytelling, or scroll-linked animation was present on the audited listing, detail, search, signup, or error templates."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon.",
      "evidence": "The audited core paths use links, buttons, search, and native scrolling; no swipe, pull, carousel, or gesture-driven control was present.",
      "reason": "The audited core paths use links, buttons, search, and native scrolling; no swipe, pull, carousel, or gesture-driven control was present."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "The categories DOM computed nav as position: sticky with a fixed 40 px height; mobile and desktop captures show the same large two-row header regardless of content depth.",
      "pathIds": [
        "categories"
      ],
      "artifacts": [
        "evidence/categories-dom.json",
        "evidence/home-mobile.png",
        "evidence/newest.png"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon.",
      "evidence": "No tooltip, transient popover, or edge-positioned menu was encountered in the representative paths.",
      "reason": "No tooltip, transient popover, or edge-positioned menu was encountered in the representative paths."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Direct multimodal evidence review.",
      "evidence": "Active navigation uses a clear red underline/highlight, the newest page highlights its selected destination, and the 404 state exposes a Return to Home action.",
      "pathIds": [
        "newest",
        "not-found"
      ],
      "artifacts": [
        "evidence/newest.png",
        "evidence/not-found.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "Desktop, detail, search, signup, and 404 screenshots show a large centered consent panel covering the page before interaction; on the default viewport it occupies most of the usable content area.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/detail.png",
        "evidence/signup.png",
        "evidence/not-found.png"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "The screenshot shows modal behavior, but the recon probe found no dialog element and no element with role=dialog; keyboard and assistive-technology modal semantics therefore are not inherent.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-recon.json",
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "The desktop and mobile screenshots devote substantial first-viewport area to two navigation rows, a bright age-verification banner, a promotion strip, a permanent category rail, and the consent overlay.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/newest.png",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "The mobile layout primitive measured scrollWidth 1,024 px against a 360 px visual viewport, 664 px of horizontal overflow; the screenshot shows the sidebar consuming most of the screen and clipped content.",
      "pathIds": [
        "home-mobile"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Narrow-viewport layout metrics and screenshot comparison.",
      "evidence": "At 360 px the same 1,024 px desktop body, permanent sidebar, and content grid remain, demonstrating that reused layout components do not adapt to their available container.",
      "pathIds": [
        "home-mobile"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "The focus probe focused the first visible link and computed outline: none and box-shadow: none; it also counted 53 visible targets under 24 px in at least one dimension. Lighthouse separately failed target-size.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-focus-targets.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Direct multimodal evidence review.",
      "evidence": "The first viewport clearly identifies a media catalogue, exposes search and category navigation, and presents recognizable content cards.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct multimodal evidence review.",
      "evidence": "A listing route, category index, individual detail route, search request, and signup entry route all loaded without a dead end.",
      "pathIds": [
        "newest",
        "categories",
        "detail",
        "search",
        "signup"
      ],
      "artifacts": [
        "evidence/newest.png",
        "evidence/categories-dom.json",
        "evidence/detail.png",
        "evidence/signup.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Direct multimodal evidence review.",
      "evidence": "An invalid URL produced a clear Page not found state with explanatory copy, a Return to Home action, and alternative content.",
      "pathIds": [
        "not-found"
      ],
      "artifacts": [
        "evidence/not-found.png"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "Lighthouse measured FCP 10.3 s, LCP 10.6 s and Speed Index 12.5 s (performance score 0.55); the first-party trace also measured LCP 3.58 s, above the 2.5 s good threshold.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/lighthouse.json",
        "evidence/home-trace-summary.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Direct multimodal evidence review.",
      "evidence": "The layout observer recorded CLS 0 with no shifts, and Lighthouse independently reported CLS 0.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct multimodal evidence review.",
      "evidence": "The trace recorded two long tasks, 101 ms total blocking time and a 139 ms longest task; Lighthouse measured 0 ms TBT under its run.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "The HAR recorded 154 requests and 1,959,472 transferred bytes, including 65 scripts totaling 1,167,373 bytes and three parser-inserted VeryHigh-priority stylesheets. Lighthouse estimated 26 KiB unused JS and 57 KiB unused CSS.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse code-opportunity audit plus HAR summary.",
      "evidence": "Lighthouse estimated 26 KiB unused JavaScript and 57 KiB unused CSS while the HAR recorded 65 script requests and 1.17 MB of script transfer.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "Lighthouse accessibility scored 0.72 and found two unnamed buttons, two unnamed links, and nine visible-label/accessibility-name mismatches.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/lighthouse-detail.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "Lighthouse found 13 contrast failures, including age-verification copy at 2.15:1 and 1.75:1 and video metadata at 3.29:1, below the required 4.5:1 for normal text.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-detail.json",
        "evidence/lighthouse.json",
        "evidence/home-high-contrast.png"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse structure audit and programmatic keyboard-focus probe.",
      "evidence": "Lighthouse found invalid list structure and the keyboard probe computed no outline or box shadow on the first focused interactive element.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-focus-targets.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "issues",
      "confidence": "high",
      "method": "Visual narrow-viewport review and Lighthouse contrast audit.",
      "evidence": "Lighthouse found 13 low-contrast text instances and the narrow capture shows clipped, cramped content beside a fixed sidebar.",
      "pathIds": [
        "home-mobile"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/lighthouse-detail.json"
      ],
      "findingIds": [
        "F12",
        "F07"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "Lighthouse failed meta-viewport because the served mobile metadata includes user-scalable=no; the independent 360 px layout test also found 664 px horizontal overflow.",
      "pathIds": [
        "home-mobile"
      ],
      "artifacts": [
        "evidence/lighthouse-detail.json",
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Direct multimodal evidence review.",
      "evidence": "Lighthouse errors-in-console scored 1 with no collected console error items.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-detail.json",
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "pass",
      "confidence": "high",
      "method": "Direct multimodal evidence review.",
      "evidence": "Rendered DOM has an HTML doctype, UTF-8 charset and viewport metadata; Lighthouse passed image aspect ratio and responsive image sizing.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/lighthouse-detail.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct multimodal evidence review.",
      "evidence": "Lighthouse best-practices scored 1.0 and no permission prompt appeared on load across fresh sessions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Direct multimodal evidence review.",
      "evidence": "Home, category and detail DOM snapshots contain unique descriptive titles; home and detail expose descriptive meta descriptions.",
      "pathIds": [
        "home",
        "categories",
        "detail"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/categories-dom.json",
        "evidence/detail-dom.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Direct multimodal evidence review.",
      "evidence": "Lighthouse SEO scored 1.0, crawlable anchors and robots passed, and DOM snapshots contain viewport metadata and real href links.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-recon.json",
        "evidence/robots.txt"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "Direct multimodal evidence review.",
      "evidence": "Home and detail expose canonical links, robots.txt is reachable and permits public catalogue paths, and both discoverability fetches returned HTTP 200.",
      "pathIds": [
        "home",
        "detail",
        "categories"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/detail-dom.json",
        "evidence/robots.txt",
        "evidence/home-discoverability.json",
        "evidence/categories-discoverability.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct multimodal evidence review.",
      "evidence": "The detail DOM contains accurate Open Graph and Twitter title, description, image, URL and video-type metadata matching visible content.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/detail-dom.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "The headers primitive found no CSP, HSTS, nosniff, clickjacking, Referrer-Policy, or Permissions-Policy headers. The cookies primitive found three cookies without Secure, including two SameSite=None cookies.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json",
        "evidence/home-cookies.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "The tracker primitive observed 13 third-party origins among 17 total and an active Google Tag Manager request; the HAR recorded 154 requests before any consent choice.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trackers.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct multimodal evidence review.",
      "evidence": "No permission prompt appeared on load; the signup surface offers federated/email choices and rendered markup includes passkey/WebAuthn capability text.",
      "pathIds": [
        "signup"
      ],
      "artifacts": [
        "evidence/signup.png",
        "evidence/signup-probe.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Main-document response-header inspection.",
      "evidence": "The header probe found no HSTS, clickjacking defense, Referrer-Policy, Permissions-Policy or CSP frame-ancestors policy.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Direct multimodal evidence review.",
      "evidence": "Raw HTML retained 89% of home content and 100% of category content; neither route was a JS shell and both retained title, H1 and description without JavaScript.",
      "pathIds": [
        "home",
        "categories"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-discoverability-crawler.png",
        "evidence/categories-discoverability.json",
        "evidence/categories-discoverability-crawler.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct multimodal evidence review.",
      "evidence": "Listing, category, detail, search, signup and error routes rendered stable content; the consent overlay remained contained within the desktop viewport.",
      "pathIds": [
        "newest",
        "detail",
        "signup",
        "not-found"
      ],
      "artifacts": [
        "evidence/newest.png",
        "evidence/detail.png",
        "evidence/signup.png",
        "evidence/not-found.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct multimodal evidence review.",
      "evidence": "The page links a complete web app manifest and a live service-worker registration at /pwa.js; continuous video delivery is intrinsically online, so the installability evidence is judged proportionally.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/manifest.webmanifest",
        "evidence/home-platform-probe.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Direct multimodal evidence review.",
      "evidence": "A deliberately invalid route returned a branded 404 with useful explanation, Return to Home recovery and alternative content rather than a blank shell.",
      "pathIds": [
        "not-found"
      ],
      "artifacts": [
        "evidence/not-found.png"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct multimodal evidence review.",
      "evidence": "All sampled templates declare lang=en, use implicit LTR direction, and expose a prominent language selector; text and controls remained ordered correctly.",
      "pathIds": [
        "home",
        "categories",
        "detail"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/categories-dom.json",
        "evidence/detail-dom.json",
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon.",
      "evidence": "The audited catalogue, search, signup and detail states did not expose dates, currency, numeric input, durations requiring localization, or calendar selection as user-entered locale-sensitive data.",
      "reason": "The audited catalogue, search, signup and detail states did not expose dates, currency, numeric input, durations requiring localization, or calendar selection as user-entered locale-sensitive data."
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon.",
      "evidence": "No scheduled events, user-entered times, recurring intervals, or time-zone-sensitive primary flow was present on the audited paths.",
      "reason": "No scheduled events, user-entered times, recurring intervals, or time-zone-sensitive primary flow was present on the audited paths."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "Direct multimodal evidence review.",
      "evidence": "The consent surface gives Accept and Reject equal visual prominence and links privacy/cookie policies; the signup surface clearly labels its choices.",
      "pathIds": [
        "home",
        "signup"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/signup.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct multimodal evidence review.",
      "evidence": "The only directly exercised error state was an invalid route, which used neutral explanatory language and provided immediate recovery rather than blame.",
      "pathIds": [
        "not-found"
      ],
      "artifacts": [
        "evidence/not-found.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct multimodal evidence review.",
      "evidence": "The search input has a descriptive placeholder and accessible label; the signup entry offers explicit sign-up methods rather than forcing hidden data entry.",
      "pathIds": [
        "home",
        "signup"
      ],
      "artifacts": [
        "evidence/home-recon.json",
        "evidence/signup.png",
        "evidence/signup-probe.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct multimodal evidence review.",
      "evidence": "The sampled account entry clearly offers social and email sign-up methods, while consent is reversible through a Manage cookies link and equal Reject action.",
      "pathIds": [
        "signup",
        "home"
      ],
      "artifacts": [
        "evidence/signup.png",
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct artifact inspection and objective probe.",
      "evidence": "The images primitive found 29 of 36 images without dimensions, 13 oversized images, 16 legacy-format resources, eight below-fold images not lazy-loaded, and three images without responsive sources.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-images.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "HAR and tracker network inspection.",
      "evidence": "The initial idle load issued 154 requests, including 65 scripts and known-tracker traffic, before the user selected a consent choice.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trackers.json"
      ],
      "findingIds": [
        "F10",
        "F15"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "HAR byte/origin accounting and tracker enumeration.",
      "evidence": "The initial catalogue transferred 1.96 MB and contacted 13 third-party origins; one uncached third-party image alone transferred 94 KB.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trackers.json"
      ],
      "findingIds": [
        "F15",
        "F16"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon.",
      "evidence": "No developer intent to expose agent-executable account, publishing, or commerce capabilities was available, and this emerging capability is not required for a public media catalogue.",
      "reason": "No developer intent to expose agent-executable account, publishing, or commerce capabilities was available, and this emerging capability is not required for a public media catalogue."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon.",
      "evidence": "No summarisation, generation, translation, or other inference task is part of the representative media-browsing and account-entry journeys.",
      "reason": "No summarisation, generation, translation, or other inference task is part of the representative media-browsing and account-entry journeys."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct multimodal evidence review.",
      "evidence": "After ten top-to-bottom scroll cycles, heap self-size was 42.08 MB versus a 40.59 MB baseline (+3.68%) and nodes were +3.15%; no Detached constructor appeared in either summary. The bounded increase is consistent with loaded feed content, not unbounded retention.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-heap-baseline.json",
        "evidence/home-heap-post.json",
        "evidence/heap-comparison.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct multimodal evidence review.",
      "evidence": "Heap summaries measured 40.59 MB baseline and 42.08 MB after repeated feed scrolling, proportionate to a media-rich catalogue with hundreds of interactive elements.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-heap-baseline.json",
        "evidence/home-heap-post.json",
        "evidence/heap-comparison.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct multimodal evidence review.",
      "evidence": "Neither heap summary contained a Detached constructor and repeated scrolling did not produce disproportionate node growth; nodes increased 3.15% after loading additional feed states.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-heap-baseline.json",
        "evidence/home-heap-post.json",
        "evidence/heap-comparison.json"
      ]
    }
  ],
  "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"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04",
        "F05",
        "F06"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F07",
        "F08"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F09",
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F11",
        "F12",
        "F08",
        "F07",
        "F13"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F14",
        "F15"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F16",
        "F10",
        "F15"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "No developer intent to expose agent-executable account, publishing, or commerce capabilities was available, and this emerging capability is not required for a public media catalogue. No summarisation, generation, translation, or other inference task is part of the representative media-browsing and account-entry journeys."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and first-load consent state; represents the primary catalogue entry and global chrome.",
      "url": "https://xhamster.com/",
      "conditions": [
        "desktop",
        "light theme",
        "dark theme",
        "prefers-reduced-motion: reduce",
        "prefers-contrast: more"
      ],
      "result": "issues"
    },
    {
      "id": "home-mobile",
      "description": "Homepage at 360x800; represents narrow viewport and touch form factor.",
      "url": "https://xhamster.com/",
      "conditions": [
        "viewport 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "newest",
      "description": "Newest listing; represents dated/filterable catalogue listings.",
      "url": "https://xhamster.com/newest",
      "conditions": [
        "desktop 1365x768"
      ],
      "result": "issues"
    },
    {
      "id": "categories",
      "description": "Category index; represents dense taxonomy/listing pages and no-JS crawlability.",
      "url": "https://xhamster.com/categories",
      "conditions": [
        "desktop",
        "JavaScript disabled crawler view"
      ],
      "result": "pass"
    },
    {
      "id": "detail",
      "description": "Individual media detail; represents the highest-value content template and share metadata.",
      "url": "https://xhamster.com/videos/big-in-the-niche-xhc2BAq",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "search",
      "description": "GET search request; represents the primary query flow.",
      "url": "https://xhamster.com/?q=test",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "signup",
      "description": "Signup entry; represents account/authentication choice.",
      "url": "https://xhamster.com/signup?source=audit",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "not-found",
      "description": "Invalid route; represents HTTP/navigation recovery.",
      "url": "https://xhamster.com/this-route-does-not-exist-web-uplift",
      "conditions": [
        "desktop"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "confidence": "high",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-reduced-motion",
      "guidanceId": "accessibility",
      "summary": "Loading placeholders continue animating when reduced motion is requested.",
      "evidence": "The reduced-motion evaluate probe found eight running 2,000 ms placeholder animations and zero accessible prefers-reduced-motion rules while the emulated preference was active.",
      "artifacts": [
        "evidence/home-reduced-motion.json",
        "evidence/home-dark-reduce.png"
      ],
      "suggestedFix": "Under prefers-reduced-motion: reduce, stop looping placeholder animation and replace it with a static state or near-instant opacity update.",
      "effort": "small",
      "pathId": "home",
      "url": "https://xhamster.com/"
    },
    {
      "id": "F02",
      "severity": "low",
      "confidence": "medium",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "cross-document-transitions",
      "summary": "Navigation uses abrupt full-document swaps without a declared cross-document transition.",
      "evidence": "DOM snapshots identify a multi-page site with ordinary links, while route screenshots show independent full loads and no view-transition declaration was present in the rendered document.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/categories-dom.json",
        "evidence/detail-dom.json"
      ],
      "suggestedFix": "Add an opt-in @view-transition rule for same-origin navigation and stable view-transition-name values for shared header/content elements, with reduced-motion handling.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xhamster.com/"
    },
    {
      "id": "F03",
      "severity": "low",
      "confidence": "high",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "shrinking-header-on-scroll",
      "summary": "Persistent navigation is sticky but does not adapt to scroll position.",
      "evidence": "The categories DOM computed nav as position: sticky with a fixed 40 px height; mobile and desktop captures show the same large two-row header regardless of content depth.",
      "artifacts": [
        "evidence/categories-dom.json",
        "evidence/home-mobile.png",
        "evidence/newest.png"
      ],
      "suggestedFix": "Use a scroll-state container query to compact persistent chrome after scrolling while retaining an obvious way back to the primary navigation.",
      "effort": "small",
      "pathId": "categories",
      "url": "https://xhamster.com/categories"
    },
    {
      "id": "F04",
      "severity": "medium",
      "confidence": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "summary": "The cookie prompt obscures the primary content on every fresh page load.",
      "evidence": "Desktop, detail, search, signup, and 404 screenshots show a large centered consent panel covering the page before interaction; on the default viewport it occupies most of the usable content area.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/detail.png",
        "evidence/signup.png",
        "evidence/not-found.png"
      ],
      "suggestedFix": "Reduce the consent surface to the minimum legally required copy, preserve equally prominent choices, and avoid repeatedly covering each route after a decision.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xhamster.com/"
    },
    {
      "id": "F05",
      "severity": "medium",
      "confidence": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "summary": "The blocking consent UI is not exposed as a dialog.",
      "evidence": "The screenshot shows modal behavior, but the recon probe found no dialog element and no element with role=dialog; keyboard and assistive-technology modal semantics therefore are not inherent.",
      "artifacts": [
        "evidence/home-recon.json",
        "evidence/home-desktop.png"
      ],
      "suggestedFix": "Implement the blocking consent flow with a native <dialog>, an accessible name, initial focus, Esc policy appropriate to consent requirements, and explicit Accept/Reject controls.",
      "effort": "small",
      "pathId": "home",
      "url": "https://xhamster.com/"
    },
    {
      "id": "F06",
      "severity": "medium",
      "confidence": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "reduced-chrome",
      "guidanceId": "overflow-clipping-control",
      "summary": "Navigation, promotion bars, side rails and consent chrome crowd the content.",
      "evidence": "The desktop and mobile screenshots devote substantial first-viewport area to two navigation rows, a bright age-verification banner, a promotion strip, a permanent category rail, and the consent overlay.",
      "artifacts": [
        "evidence/newest.png",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Collapse secondary destinations behind contextual menus, compact promotional chrome, and let the content grid own more of the first viewport.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xhamster.com/"
    },
    {
      "id": "F07",
      "severity": "high",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "responsive-no-horizontal-scroll",
      "guidanceId": "fluid-scaling",
      "summary": "The desktop layout is forced into a 360 px mobile viewport.",
      "evidence": "The mobile layout primitive measured scrollWidth 1,024 px against a 360 px visual viewport, 664 px of horizontal overflow; the screenshot shows the sidebar consuming most of the screen and clipped content.",
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Serve the mobile-responsive template for narrow visual viewports, remove fixed 1,024 px body/main widths, and use intrinsic grid sizing with minmax() and clamp().",
      "effort": "large",
      "pathId": "home-mobile",
      "url": "https://xhamster.com/"
    },
    {
      "id": "F08",
      "severity": "high",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "summary": "Keyboard focus is invisible and many targets are undersized.",
      "evidence": "The focus probe focused the first visible link and computed outline: none and box-shadow: none; it also counted 53 visible targets under 24 px in at least one dimension. Lighthouse separately failed target-size.",
      "artifacts": [
        "evidence/home-focus-targets.json",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Provide a strong :focus-visible ring and enlarge or space touch targets to at least 24 by 24 CSS px, preferably 44 by 44 for primary controls.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xhamster.com/"
    },
    {
      "id": "F09",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "summary": "Largest Contentful Paint is slow under a throttled mobile audit.",
      "evidence": "Lighthouse measured FCP 10.3 s, LCP 10.6 s and Speed Index 12.5 s (performance score 0.55); the first-party trace also measured LCP 3.58 s, above the 2.5 s good threshold.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/lighthouse.json",
        "evidence/home-trace-summary.json"
      ],
      "suggestedFix": "Prioritize the actual LCP asset, reduce critical CSS and startup script work, and avoid delaying meaningful content behind consent and initialization code.",
      "effort": "large",
      "pathId": "home",
      "url": "https://xhamster.com/"
    },
    {
      "id": "F10",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "identify-heavy-scripts",
      "summary": "The entry page ships a large, script-dominated request graph.",
      "evidence": "The HAR recorded 154 requests and 1,959,472 transferred bytes, including 65 scripts totaling 1,167,373 bytes and three parser-inserted VeryHigh-priority stylesheets. Lighthouse estimated 26 KiB unused JS and 57 KiB unused CSS.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Bundle by route and interaction, remove unused CSS/JS, defer nonessential third parties, and reduce the number of critical stylesheets.",
      "effort": "large",
      "pathId": "home",
      "url": "https://xhamster.com/"
    },
    {
      "id": "F11",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "summary": "Interactive controls have missing or mismatched accessible names.",
      "evidence": "Lighthouse accessibility scored 0.72 and found two unnamed buttons, two unnamed links, and nine visible-label/accessibility-name mismatches.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/lighthouse-detail.json",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Give every icon control a concise accessible name and ensure aria-label/aria-labelledby text includes the visible label.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xhamster.com/"
    },
    {
      "id": "F12",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "summary": "Important text does not meet minimum color contrast.",
      "evidence": "Lighthouse found 13 contrast failures, including age-verification copy at 2.15:1 and 1.75:1 and video metadata at 3.29:1, below the required 4.5:1 for normal text.",
      "artifacts": [
        "evidence/lighthouse-detail.json",
        "evidence/lighthouse.json",
        "evidence/home-high-contrast.png"
      ],
      "suggestedFix": "Adjust text and surface tokens to meet WCAG AA in every theme and verify the age banner, metadata, and link states with automated contrast tests.",
      "effort": "small",
      "pathId": "home",
      "url": "https://xhamster.com/"
    },
    {
      "id": "F13",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "fluid-scaling",
      "summary": "The mobile viewport disables user scaling and the page does not reflow.",
      "evidence": "Lighthouse failed meta-viewport because the served mobile metadata includes user-scalable=no; the independent 360 px layout test also found 664 px horizontal overflow.",
      "artifacts": [
        "evidence/lighthouse-detail.json",
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Remove user-scalable=no and restrictive maximum-scale settings, then make all primary templates reflow without two-dimensional scrolling at 320 CSS px and at 200% zoom.",
      "effort": "large",
      "pathId": "home-mobile",
      "url": "https://xhamster.com/"
    },
    {
      "id": "F14",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "summary": "Security headers are absent and three first-party cookies lack Secure.",
      "evidence": "The headers primitive found no CSP, HSTS, nosniff, clickjacking, Referrer-Policy, or Permissions-Policy headers. The cookies primitive found three cookies without Secure, including two SameSite=None cookies.",
      "artifacts": [
        "evidence/home-headers.json",
        "evidence/home-cookies.json"
      ],
      "suggestedFix": "Set HSTS, a restrictive CSP with frame-ancestors, nosniff, Referrer-Policy and Permissions-Policy; mark all HTTPS cookies Secure and justify any SameSite=None use.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xhamster.com/"
    },
    {
      "id": "F15",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "summary": "The initial load contacts a broad third-party surface before consent.",
      "evidence": "The tracker primitive observed 13 third-party origins among 17 total and an active Google Tag Manager request; the HAR recorded 154 requests before any consent choice.",
      "artifacts": [
        "evidence/home-trackers.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "suggestedFix": "Block nonessential analytics and advertising requests until opt-in, reduce third-party origins, and proxy or self-host essential static dependencies where practical.",
      "effort": "large",
      "pathId": "home",
      "url": "https://xhamster.com/"
    },
    {
      "id": "F16",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "summary": "Image delivery wastes bytes and omits layout dimensions.",
      "evidence": "The images primitive found 29 of 36 images without dimensions, 13 oversized images, 16 legacy-format resources, eight below-fold images not lazy-loaded, and three images without responsive sources.",
      "artifacts": [
        "evidence/home-images.json"
      ],
      "suggestedFix": "Emit width/height or aspect-ratio, select image variants close to rendered size, retain modern formats, and lazy-load below-fold media.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xhamster.com/"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Make all templates truly responsive and zoomable",
      "priority": 1,
      "findingIds": [
        "F07",
        "F13"
      ],
      "guidanceId": "fluid-scaling",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Restore accessible names, visible focus, target sizing and contrast",
      "priority": 2,
      "findingIds": [
        "F08",
        "F11",
        "F12"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Add security headers and secure cookie attributes",
      "priority": 3,
      "findingIds": [
        "F14"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Improve LCP and reduce startup CSS/JavaScript",
      "priority": 4,
      "findingIds": [
        "F09",
        "F10"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Replace and simplify the blocking consent overlay",
      "priority": 5,
      "findingIds": [
        "F04",
        "F05",
        "F06"
      ],
      "guidanceId": "declarative-dialog-popover-control",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Gate and reduce third-party traffic until consent",
      "priority": 6,
      "findingIds": [
        "F15"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Optimize image sizing, formats and lazy loading",
      "priority": 7,
      "findingIds": [
        "F16"
      ],
      "guidanceId": "deliver-optimized-decorative-images",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Respect reduced motion and improve navigation transitions",
      "priority": 8,
      "findingIds": [
        "F01",
        "F02",
        "F03"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 8,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-20T01-16-51-227Z"
}
