{
  "url": "https://ar.xhamster.com",
  "auditedAt": "2026-07-22T09:52:51.686Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete audit of seven representative guest paths/templates. Not covered: registration completion, authenticated account management, payment/subscription checkout, upload and live-chat flows because they require account creation, personal data or commercial commitment.",
  "page": {
    "appType": "mpa",
    "framework": "server-rendered multi-page application",
    "notes": "Public localized adult-media site with listing, search, detail and account templates; meaningful raw HTML is available without JavaScript."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "lighthouse",
    "curl robots/sitemap"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "fluid-scaling",
    "forms",
    "performance",
    "security",
    "privacy",
    "html",
    "optimize-image-priority",
    "identify-heavy-scripts",
    "improve-text-layout-and-legibility",
    "persistent-toast-notifications",
    "translator",
    "webmcp",
    "manage-recurring-intervals"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/category-desktop.png",
      "caption": "category desktop png",
      "findingIds": [
        "F15"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/category-dom.json",
      "caption": "category dom json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies json",
      "findingIds": [
        "F09"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/detail-desktop.png",
      "caption": "detail desktop png",
      "findingIds": [
        "F03",
        "F15"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/detail-dom.json",
      "caption": "detail dom json",
      "findingIds": [
        "F12"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-crawler.png",
      "caption": "discoverability crawler png",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-rendered.png",
      "caption": "discoverability rendered png",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability.json",
      "caption": "discoverability json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers json",
      "findingIds": [
        "F09"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.json",
      "caption": "heap baseline json",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-post-scroll.json",
      "caption": "heap post scroll json",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark png",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop png",
      "findingIds": [
        "F03",
        "F10"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom json",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout json",
      "findingIds": [
        "F01",
        "F08"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile png",
      "findingIds": [
        "F01",
        "F07"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary json",
      "findingIds": [
        "F10",
        "F14"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary json",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace json",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home har",
      "findingIds": [
        "F10"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "images json",
      "findingIds": [
        "F05"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "lighthouse json",
      "findingIds": [
        "F04",
        "F05",
        "F06",
        "F07",
        "F08",
        "F14",
        "F16"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/login-desktop.png",
      "caption": "login desktop png",
      "findingIds": [
        "F11"
      ]
    },
    {
      "type": "other",
      "path": "evidence/login-probe.json",
      "caption": "login probe json",
      "findingIds": [
        "F11"
      ]
    },
    {
      "type": "other",
      "path": "evidence/not-found-probe.json",
      "caption": "not found probe json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/platform-probe.json",
      "caption": "platform probe json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/preferences-motion.json",
      "caption": "preferences motion json",
      "findingIds": [
        "F02",
        "F15"
      ]
    },
    {
      "type": "other",
      "path": "evidence/quality-probe.json",
      "caption": "quality probe json",
      "findingIds": [
        "F03",
        "F06",
        "F12",
        "F16"
      ]
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "recon json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/robots-headers.txt",
      "caption": "robots headers txt",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/robots.txt",
      "caption": "robots txt",
      "findingIds": [
        "F13"
      ]
    },
    {
      "type": "other",
      "path": "evidence/routes-meta.json",
      "caption": "routes meta json",
      "findingIds": [
        "F13"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/search-desktop.png",
      "caption": "search desktop png",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/search-dom.json",
      "caption": "search dom json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/search-probe.json",
      "caption": "search probe json",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/search-results.png",
      "caption": "search results png",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/sitemap-headers.txt",
      "caption": "sitemap headers txt",
      "findingIds": [
        "F13"
      ]
    },
    {
      "type": "other",
      "path": "evidence/sitemap.xml",
      "caption": "sitemap xml",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers json",
      "findingIds": [
        "F10"
      ]
    }
  ],
  "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": "Active review of evidence/home-dark.png, evidence/preferences-motion.json across home",
      "evidence": "Under prefers-color-scheme: dark, computed root colors were black and the retained CSS contained explicit dark/light media-query token sets; the dark screenshot remained usable.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/preferences-motion.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/home-dark.png, evidence/preferences-motion.json across home",
      "evidence": "With prefers-reduced-motion: reduce emulated, document.getAnimations() returned eight running shimmer animations, each with a 2000ms duration.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/preferences-motion.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/home-dark.png, evidence/preferences-motion.json across home",
      "evidence": "Lighthouse found age-banner text at 2.15:1 and secondary banner text at 1.75:1 against green, plus repeated metadata text at 3.29:1 against the dark surface; expected minimum is 4.5:1 for this text.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/preferences-motion.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/preferences-motion.json, evidence/detail-desktop.png across home, detail",
      "evidence": "CSS inspection across the loaded styles found no view-transition rules or names, while browsing moved between separate listing, search and detail documents.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/preferences-motion.json",
        "evidence/detail-desktop.png"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Active review of evidence/preferences-motion.json, evidence/detail-desktop.png across home, detail",
      "evidence": "No scroll-linked animation was present on the representative listing, search, login, or detail templates, so there is no implementation to classify.",
      "reason": "No scroll-linked animation was present on the representative listing, search, login, or detail templates, so there is no implementation to classify."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Active review of evidence/preferences-motion.json, evidence/detail-desktop.png across home, detail",
      "evidence": "No custom swipe, pull-to-reveal, or gesture-driven primary interaction was present on the audited desktop and mobile paths.",
      "reason": "No custom swipe, pull-to-reveal, or gesture-driven primary interaction was present on the audited desktop and mobile paths."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/home-desktop.png, evidence/search-results.png across home, search, detail",
      "evidence": "Desktop and search screenshots show persistent, consistent two-tier navigation and an active section marker while moving across long listing states.",
      "pathIds": [
        "home",
        "search",
        "detail"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/search-results.png"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Active review of evidence/home-desktop.png, evidence/search-results.png across home, search, detail",
      "evidence": "No tooltip or transient anchored overlay was required to complete the audited browsing, search, login, or detail journeys.",
      "reason": "No tooltip or transient anchored overlay was required to complete the audited browsing, search, login, or detail journeys."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/home-desktop.png, evidence/search-results.png across home, search, detail",
      "evidence": "The screenshots show an active Videos marker, clear H1 labels and stable navigation hierarchy across home, search and detail templates.",
      "pathIds": [
        "home",
        "search",
        "detail"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/search-results.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/home-desktop.png, evidence/quality-probe.json across home, detail",
      "evidence": "Desktop screenshots of the home and detail templates show the cookie panel centered over most primary content. DOM inspection found no dialog, popover, role=dialog or aria-modal semantics for this interruption.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/quality-probe.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/home-desktop.png, evidence/quality-probe.json across home, detail",
      "evidence": "Desktop screenshots of the home and detail templates show the cookie panel centered over most primary content. DOM inspection found no dialog, popover, role=dialog or aria-modal semantics for this interruption.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/quality-probe.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/home-desktop.png, evidence/quality-probe.json across home, detail",
      "evidence": "Desktop screenshots of the home and detail templates show the cookie panel centered over most primary content. DOM inspection found no dialog, popover, role=dialog or aria-modal semantics for this interruption.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/quality-probe.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/home-mobile.png, evidence/home-mobile-layout.json, evidence/quality-probe.json across home-mobile",
      "evidence": "At 360x800, layout measured scrollWidth 1024px against clientWidth 360px, 664px horizontal overflow. The screenshot shows the left rail and clipped content instead of a reflowed mobile layout.",
      "pathIds": [
        "home-mobile"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json",
        "evidence/quality-probe.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/home-mobile.png, evidence/home-mobile-layout.json, evidence/quality-probe.json across home-mobile",
      "evidence": "At 360x800, layout measured scrollWidth 1024px against clientWidth 360px, 664px horizontal overflow. The screenshot shows the left rail and clipped content instead of a reflowed mobile layout.",
      "pathIds": [
        "home-mobile"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json",
        "evidence/quality-probe.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/home-mobile.png, evidence/home-mobile-layout.json, evidence/quality-probe.json across home-mobile",
      "evidence": "Lighthouse found user-scalable=no in the effective mobile viewport meta and target-size failures, including a 194x20 link. The 360px screenshot also fails reflow due to 664px overflow. Programmatic focus inspection found the search input and button with outline-style none, outline width 0 and no box-shadow; Lighthouse separately flagged target-size failures.",
      "pathIds": [
        "home-mobile"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json",
        "evidence/quality-probe.json"
      ],
      "findingIds": [
        "F16",
        "F08"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/category-desktop.png, evidence/search-results.png, evidence/detail-desktop.png, evidence/not-found-probe.json across home, category, search, detail, not-found",
      "evidence": "Each representative page exposes a descriptive H1/title and direct content cards or sign-in action in the first viewport.",
      "pathIds": [
        "home",
        "category",
        "search",
        "detail",
        "not-found"
      ],
      "artifacts": [
        "evidence/category-desktop.png",
        "evidence/search-results.png",
        "evidence/detail-desktop.png",
        "evidence/not-found-probe.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/category-desktop.png, evidence/search-results.png, evidence/detail-desktop.png, evidence/not-found-probe.json across home, category, search, detail, not-found",
      "evidence": "The audit navigated from listing to category, search results, a detail page and login; each destination rendered its intended content without a dead end.",
      "pathIds": [
        "home",
        "category",
        "search",
        "detail",
        "not-found"
      ],
      "artifacts": [
        "evidence/category-desktop.png",
        "evidence/search-results.png",
        "evidence/detail-desktop.png",
        "evidence/not-found-probe.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/category-desktop.png, evidence/search-results.png, evidence/detail-desktop.png, evidence/not-found-probe.json across home, category, search, detail, not-found",
      "evidence": "The intentional missing route rendered a localized “Página no encontrada” state with a clear link back to the home page.",
      "pathIds": [
        "home",
        "category",
        "search",
        "detail",
        "not-found"
      ],
      "artifacts": [
        "evidence/category-desktop.png",
        "evidence/search-results.png",
        "evidence/detail-desktop.png",
        "evidence/not-found-probe.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/home-trace-summary.json, evidence/home-summary.json, evidence/lighthouse.json, evidence/images.json across home",
      "evidence": "Lighthouse measured LCP 3.9s and scored performance 0.85. The independent trace was faster at 1.16s, indicating variable but materially slow throttled mobile loading.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json",
        "evidence/lighthouse.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/home-trace-summary.json, evidence/home-summary.json, evidence/lighthouse.json, evidence/images.json across home",
      "evidence": "Layout observer reported CLS 0 and no shifts; Lighthouse independently measured CLS 0.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json",
        "evidence/lighthouse.json",
        "evidence/images.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/home-trace-summary.json, evidence/home-summary.json, evidence/lighthouse.json, evidence/images.json across home",
      "evidence": "Trace recorded two long tasks, 154ms longest and 106.5ms total blocking time; Lighthouse measured 0ms TBT in its separate run, acceptable for initial browsing.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json",
        "evidence/lighthouse.json",
        "evidence/images.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/home-trace-summary.json, evidence/home-summary.json, evidence/lighthouse.json, evidence/images.json across home",
      "evidence": "Lighthouse measured LCP 3.9s and scored performance 0.85. The independent trace was faster at 1.16s, indicating variable but materially slow throttled mobile loading. The image primitive found 29 of 36 images without explicit dimensions, 13 oversized, 8 below-fold images not lazy-loaded and 15 legacy-format resources. Lighthouse also flagged unsized images and estimated 21KiB image savings.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json",
        "evidence/lighthouse.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F05",
        "F04"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/home-trace-summary.json, evidence/home-summary.json, evidence/lighthouse.json, evidence/images.json across home",
      "evidence": "The load transferred 1.76MB across 143 requests; 62 scripts accounted for 1.01MB and one index bundle was 400KB. Lighthouse estimated 56KiB unused CSS, 26KiB unused JavaScript and 11KiB legacy JavaScript.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json",
        "evidence/lighthouse.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/lighthouse.json, evidence/quality-probe.json, evidence/home-mobile.png across home-mobile, login",
      "evidence": "Lighthouse accessibility score was 0.75 and reported an unnamed button, accessible-name/visible-label mismatches on media cards, and invalid direct children inside a ul. The custom consent overlay had no dialog semantics.",
      "pathIds": [
        "home-mobile",
        "login"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/quality-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/lighthouse.json, evidence/quality-probe.json, evidence/home-mobile.png across home-mobile, login",
      "evidence": "Lighthouse found age-banner text at 2.15:1 and secondary banner text at 1.75:1 against green, plus repeated metadata text at 3.29:1 against the dark surface; expected minimum is 4.5:1 for this text.",
      "pathIds": [
        "home-mobile",
        "login"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/quality-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/lighthouse.json, evidence/quality-probe.json, evidence/home-mobile.png across home-mobile, login",
      "evidence": "Lighthouse accessibility score was 0.75 and reported an unnamed button, accessible-name/visible-label mismatches on media cards, and invalid direct children inside a ul. The custom consent overlay had no dialog semantics. Programmatic focus inspection found the search input and button with outline-style none, outline width 0 and no box-shadow; Lighthouse separately flagged target-size failures.",
      "pathIds": [
        "home-mobile",
        "login"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/quality-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F06",
        "F16"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/lighthouse.json, evidence/quality-probe.json, evidence/home-mobile.png across home-mobile, login",
      "evidence": "Lighthouse found age-banner text at 2.15:1 and secondary banner text at 1.75:1 against green, plus repeated metadata text at 3.29:1 against the dark surface; expected minimum is 4.5:1 for this text.",
      "pathIds": [
        "home-mobile",
        "login"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/quality-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/lighthouse.json, evidence/quality-probe.json, evidence/home-mobile.png across home-mobile, login",
      "evidence": "Lighthouse found user-scalable=no in the effective mobile viewport meta and target-size failures, including a 194x20 link. The 360px screenshot also fails reflow due to 664px overflow.",
      "pathIds": [
        "home-mobile",
        "login"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/quality-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/lighthouse.json, evidence/images.json, evidence/quality-probe.json across home",
      "evidence": "Lighthouse errors-in-console audit passed and reported no console-error items.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/images.json",
        "evidence/quality-probe.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/lighthouse.json, evidence/images.json, evidence/quality-probe.json across home",
      "evidence": "The image primitive found 29 of 36 images without explicit dimensions, 13 oversized, 8 below-fold images not lazy-loaded and 15 legacy-format resources. Lighthouse also flagged unsized images and estimated 21KiB image savings.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/images.json",
        "evidence/quality-probe.json"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/lighthouse.json, evidence/images.json, evidence/quality-probe.json across home",
      "evidence": "Lighthouse best-practices score was 1.0; no console/deprecation failure or on-load permission prompt was observed, and permission states remained prompt.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/images.json",
        "evidence/quality-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/discoverability.json, evidence/routes-meta.json, evidence/robots.txt, evidence/sitemap-headers.txt across home, category, detail",
      "evidence": "DOM probe found a descriptive localized title and meta description; discoverability confirmed both are present in raw HTML.",
      "pathIds": [
        "home",
        "category",
        "detail"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/routes-meta.json",
        "evidence/robots.txt",
        "evidence/sitemap-headers.txt"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/discoverability.json, evidence/routes-meta.json, evidence/robots.txt, evidence/sitemap-headers.txt across home, category, detail",
      "evidence": "Real href links, viewport metadata, indexable robots configuration and 86% no-JS content coverage were directly observed; Lighthouse SEO scored 1.0.",
      "pathIds": [
        "home",
        "category",
        "detail"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/routes-meta.json",
        "evidence/robots.txt",
        "evidence/sitemap-headers.txt"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/discoverability.json, evidence/routes-meta.json, evidence/robots.txt, evidence/sitemap-headers.txt across home, category, detail",
      "evidence": "The page exposes dozens of language/region variants, html lang is es-AR and canonical is present, but the link[rel=alternate] probe returned no hreflang entries. /sitemap.xml returned HTTP 404.",
      "pathIds": [
        "home",
        "category",
        "detail"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/routes-meta.json",
        "evidence/robots.txt",
        "evidence/sitemap-headers.txt"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/discoverability.json, evidence/routes-meta.json, evidence/robots.txt, evidence/sitemap-headers.txt across home, category, detail",
      "evidence": "Home DOM probes found zero JSON-LD blocks and no Open Graph metadata despite the page representing a large media listing; the inspected detail template likewise supplied no evidence of structured metadata in the retained DOM artifact.",
      "pathIds": [
        "home",
        "category",
        "detail"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/routes-meta.json",
        "evidence/robots.txt",
        "evidence/sitemap-headers.txt"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/headers.json, evidence/cookies.json, evidence/trackers.json, evidence/secrets.json, evidence/home-summary.json across home, login",
      "evidence": "Headers showed CSP limited to frame-ancestors, with no nosniff or Referrer-Policy. Cookie inspection found settings and x_csrf_token without Secure; settings also uses SameSite=None.",
      "pathIds": [
        "home",
        "login"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json",
        "evidence/secrets.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/headers.json, evidence/cookies.json, evidence/trackers.json, evidence/secrets.json, evidence/home-summary.json across home, login",
      "evidence": "The HAR captured 143 requests, 117 classified third-party and 1.65MB third-party transfer, including Google Accounts and an ad-syndication endpoint, while the consent overlay was still awaiting a choice. Tracker enumeration found 13 third-party origins.",
      "pathIds": [
        "home",
        "login"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json",
        "evidence/secrets.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/headers.json, evidence/cookies.json, evidence/trackers.json, evidence/secrets.json, evidence/home-summary.json across home, login",
      "evidence": "Permission states remained prompt on fresh load, with no geolocation/notification prompt displayed; login offers federated authentication and correctly identifies username, though password input assistance is separately flagged.",
      "pathIds": [
        "home",
        "login"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json",
        "evidence/secrets.json",
        "evidence/home-summary.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/headers.json, evidence/cookies.json, evidence/trackers.json, evidence/secrets.json, evidence/home-summary.json across home, login",
      "evidence": "Headers showed CSP limited to frame-ancestors, with no nosniff or Referrer-Policy. Cookie inspection found settings and x_csrf_token without Secure; settings also uses SameSite=None.",
      "pathIds": [
        "home",
        "login"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json",
        "evidence/secrets.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/discoverability.json, evidence/not-found-probe.json, evidence/platform-probe.json across home, not-found",
      "evidence": "Discoverability fetched HTTP 200 raw HTML with title, H1, description and 86% rendered-word coverage; the crawler screenshot retained meaningful content.",
      "pathIds": [
        "home",
        "not-found"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/not-found-probe.json",
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/discoverability.json, evidence/not-found-probe.json, evidence/platform-probe.json across home, not-found",
      "evidence": "Listing, search, login and detail documents rendered without broken overlay clipping at desktop width, and navigation to each independent document completed.",
      "pathIds": [
        "home",
        "not-found"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/not-found-probe.json",
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/discoverability.json, evidence/not-found-probe.json, evidence/platform-probe.json across home, not-found",
      "evidence": "A manifest link is present and navigator.serviceWorker had an active controller, directly establishing install/offline infrastructure on the loaded page.",
      "pathIds": [
        "home",
        "not-found"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/not-found-probe.json",
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/discoverability.json, evidence/not-found-probe.json, evidence/platform-probe.json across home, not-found",
      "evidence": "A synthetic missing route produced a localized not-found page with explanatory copy and a home recovery link rather than a blank shell.",
      "pathIds": [
        "home",
        "not-found"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/not-found-probe.json",
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/routes-meta.json, evidence/quality-probe.json across home, login",
      "evidence": "The localized page declares html lang=es-AR and exposes equivalent language/region links; Spanish headings and controls render in the retained screenshots.",
      "pathIds": [
        "home",
        "login"
      ],
      "artifacts": [
        "evidence/routes-meta.json",
        "evidence/quality-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Active review of evidence/routes-meta.json, evidence/quality-probe.json across home, login",
      "evidence": "The inspected guest templates display no dates, prices, currency, durations requiring locale formatting beyond already-localized strings.",
      "reason": "The inspected guest templates display no dates, prices, currency, durations requiring locale formatting beyond already-localized strings."
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Active review of evidence/routes-meta.json, evidence/quality-probe.json across home, login",
      "evidence": "The inspected guest templates expose no scheduled event or time-zone-sensitive flow.",
      "reason": "The inspected guest templates expose no scheduled event or time-zone-sensitive flow."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/home-desktop.png, evidence/login-probe.json, evidence/login-desktop.png across home, login",
      "evidence": "The observed consent panel presents Accept and Reject with equal visual weight and links to cookie/privacy details; the login page exposes password recovery and free registration without preselected commercial commitment.",
      "pathIds": [
        "home",
        "login"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/login-probe.json",
        "evidence/login-desktop.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Active review of evidence/home-desktop.png, evidence/login-probe.json, evidence/login-desktop.png across home, login",
      "evidence": "No validation-heavy data-entry flow is required for guest browsing; the only audited account form is a basic sign-in with a recovery link.",
      "reason": "No validation-heavy data-entry flow is required for guest browsing; the only audited account form is a basic sign-in with a recovery link."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/home-desktop.png, evidence/login-probe.json, evidence/login-desktop.png across home, login",
      "evidence": "On /login, the username input uses autocomplete=username but the sign-in password input uses autocomplete=new-password, which can obstruct password-manager autofill for returning users.",
      "pathIds": [
        "home",
        "login"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/login-probe.json",
        "evidence/login-desktop.png"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/home-desktop.png, evidence/login-probe.json, evidence/login-desktop.png across home, login",
      "evidence": "The inspected login page clearly separates Google, X and password sign-in, includes “remember me” and password recovery, and makes no purchase or subscription commitment.",
      "pathIds": [
        "home",
        "login"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/login-probe.json",
        "evidence/login-desktop.png"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/home-summary.json, evidence/images.json, evidence/lighthouse.json across home",
      "evidence": "The image primitive found 29 of 36 images without explicit dimensions, 13 oversized, 8 below-fold images not lazy-loaded and 15 legacy-format resources. Lighthouse also flagged unsized images and estimated 21KiB image savings.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/images.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/home-summary.json, evidence/images.json, evidence/lighthouse.json across home",
      "evidence": "The load transferred 1.76MB across 143 requests; 62 scripts accounted for 1.01MB and one index bundle was 400KB. Lighthouse estimated 56KiB unused CSS, 26KiB unused JavaScript and 11KiB legacy JavaScript.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/images.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Active review of evidence/home-summary.json, evidence/images.json, evidence/lighthouse.json across home",
      "evidence": "The HAR captured 143 requests, 117 classified third-party and 1.65MB third-party transfer, including Google Accounts and an ad-syndication endpoint, while the consent overlay was still awaiting a choice. Tracker enumeration found 13 third-party origins. The load transferred 1.76MB across 143 requests; 62 scripts accounted for 1.01MB and one index bundle was 400KB. Lighthouse estimated 56KiB unused CSS, 26KiB unused JavaScript and 11KiB legacy JavaScript.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/images.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F14",
        "F10"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Active review of evidence/discoverability.json, evidence/quality-probe.json across home",
      "evidence": "This public media browsing site exposes no declared agent-facing task surface; emerging WebMCP capability is contextual and not required for this audit.",
      "reason": "This public media browsing site exposes no declared agent-facing task surface; emerging WebMCP capability is contextual and not required for this audit."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Active review of evidence/discoverability.json, evidence/quality-probe.json across home",
      "evidence": "No summarisation or language-model task is part of the inspected guest journeys; on-device inference is contextual.",
      "reason": "No summarisation or language-model task is part of the inspected guest journeys; on-device inference is contextual."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/heap-baseline.json, evidence/heap-post-scroll.json across home",
      "evidence": "After ten full-page scroll down/up cycles, heap self-size changed from 36,634,431 to 37,303,870 bytes (+1.8%) and node count +2.3%; bounded small growth does not establish an unbounded leak.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post-scroll.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/heap-baseline.json, evidence/heap-post-scroll.json across home",
      "evidence": "Baseline heap summary measured 36.6MB self-size on a media-rich listing; the post-interaction state remained 37.3MB, proportionate and bounded in this sample.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post-scroll.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Active review of evidence/heap-baseline.json, evidence/heap-post-scroll.json across home",
      "evidence": "Neither heap summary’s top constructors contained Detached* populations, and repeated scrolling caused only 1.8% heap-size growth; no accumulating detached-DOM signal was observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post-scroll.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F02",
        "F07"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01",
        "F16",
        "F08"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04",
        "F05",
        "F14"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06",
        "F07",
        "F16",
        "F08"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F13",
        "F12"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F09",
        "F10"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F05",
        "F14",
        "F10"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "This public media browsing site exposes no declared agent-facing task surface; emerging WebMCP capability is contextual and not required for this audit. No summarisation or language-model task is part of the inspected guest journeys; on-device inference is contextual."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and primary listing template; covers global chrome, consent, discovery and initial-load quality.",
      "url": "https://ar.xhamster.com/",
      "conditions": [
        "desktop 1440x900",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce"
      ],
      "result": "issues"
    },
    {
      "id": "home-mobile",
      "description": "Homepage at narrow mobile width; covers reflow, zoom, target sizing and mobile accessibility.",
      "url": "https://ar.xhamster.com/",
      "conditions": [
        "viewport 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "category",
      "description": "Representative category/listing archetype.",
      "url": "https://ar.xhamster.com/categories/amateur",
      "conditions": [
        "desktop 1440x900"
      ],
      "result": "issues"
    },
    {
      "id": "search",
      "description": "Search-results and filtering journey for a representative query.",
      "url": "https://ar.xhamster.com/search/amateur",
      "conditions": [
        "desktop 1440x900"
      ],
      "result": "issues"
    },
    {
      "id": "detail",
      "description": "Representative media-detail template and listing-to-detail journey.",
      "url": "https://ar.xhamster.com/videos/french-pegging-femdom-humiliation-strapon-double-fist-hot-wax-cold-water-jet-and-cei-xhZl6tZ",
      "conditions": [
        "desktop 1440x900"
      ],
      "result": "issues"
    },
    {
      "id": "login",
      "description": "Account sign-in template, input assistance and account-flow trust.",
      "url": "https://ar.xhamster.com/login",
      "conditions": [
        "desktop 1440x900"
      ],
      "result": "issues"
    },
    {
      "id": "not-found",
      "description": "Synthetic missing route to inspect HTTP/navigation failure recovery.",
      "url": "https://ar.xhamster.com/this-route-should-not-exist-web-uplift",
      "conditions": [
        "desktop"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "critical",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "responsive-no-horizontal-scroll",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "css",
      "summary": "The desktop layout is forced into the mobile viewport.",
      "evidence": "At 360x800, layout measured scrollWidth 1024px against clientWidth 360px, 664px horizontal overflow. The screenshot shows the left rail and clipped content instead of a reflowed mobile layout.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json"
      ],
      "suggestedFix": "Serve a genuinely responsive layout: remove fixed desktop minimum widths, collapse the left rail and top navigation, and use intrinsic/fluid sizing that fits 360 CSS pixels.",
      "effort": "large",
      "confidence": "high",
      "pathId": "home-mobile",
      "url": "https://ar.xhamster.com/"
    },
    {
      "id": "F02",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-reduced-motion",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Loading shimmer animation continues under reduced motion.",
      "evidence": "With prefers-reduced-motion: reduce emulated, document.getAnimations() returned eight running shimmer animations, each with a 2000ms duration.",
      "artifacts": [
        "evidence/preferences-motion.json"
      ],
      "suggestedFix": "Disable shimmer and other non-essential looping animation in @media (prefers-reduced-motion: reduce), replacing it with a static loading state.",
      "effort": "small",
      "confidence": "high",
      "pathId": "home",
      "url": "https://ar.xhamster.com/"
    },
    {
      "id": "F03",
      "severity": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "A large consent overlay obscures the primary content on every fresh visit.",
      "evidence": "Desktop screenshots of the home and detail templates show the cookie panel centered over most primary content. DOM inspection found no dialog, popover, role=dialog or aria-modal semantics for this interruption.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/detail-desktop.png",
        "evidence/quality-probe.json"
      ],
      "suggestedFix": "Keep consent necessary and neutral, but implement it as an accessible dialog with labelled purpose, managed focus and non-obscuring presentation where legally possible.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://ar.xhamster.com/"
    },
    {
      "id": "F04",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "summary": "Mobile LCP misses the good Core Web Vitals threshold.",
      "evidence": "Lighthouse measured LCP 3.9s and scored performance 0.85. The independent trace was faster at 1.16s, indicating variable but materially slow throttled mobile loading.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-trace-summary.json",
        "evidence/home-trace.json"
      ],
      "suggestedFix": "Profile the LCP dependency chain, prioritise the LCP asset, and reduce render-blocking CSS and startup JavaScript.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://ar.xhamster.com/"
    },
    {
      "id": "F05",
      "severity": "medium",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "summary": "Image sizing and delivery waste bytes and create avoidable stability risk.",
      "evidence": "The image primitive found 29 of 36 images without explicit dimensions, 13 oversized, 8 below-fold images not lazy-loaded and 15 legacy-format resources. Lighthouse also flagged unsized images and estimated 21KiB image savings.",
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Add width/height or aspect-ratio, correct responsive srcset/sizes selection, lazy-load below-fold media, and prefer AVIF/WebP where supported.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://ar.xhamster.com/"
    },
    {
      "id": "F06",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Interactive controls and content structures have accessibility-tree defects.",
      "evidence": "Lighthouse accessibility score was 0.75 and reported an unnamed button, accessible-name/visible-label mismatches on media cards, and invalid direct children inside a ul. The custom consent overlay had no dialog semantics.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/quality-probe.json"
      ],
      "suggestedFix": "Name every control, align visible and accessible names, repair list semantics, and expose modal state with a native dialog or equivalent complete semantics.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home-mobile",
      "url": "https://ar.xhamster.com/"
    },
    {
      "id": "F07",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Important banner and metadata text fail WCAG contrast.",
      "evidence": "Lighthouse found age-banner text at 2.15:1 and secondary banner text at 1.75:1 against green, plus repeated metadata text at 3.29:1 against the dark surface; expected minimum is 4.5:1 for this text.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Adjust the green banner and muted text tokens to meet at least 4.5:1, and distinguish inline links with more than colour alone.",
      "effort": "small",
      "confidence": "high",
      "pathId": "home-mobile",
      "url": "https://ar.xhamster.com/"
    },
    {
      "id": "F08",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "css",
      "summary": "The mobile page prevents normal zoom and has undersized or crowded targets.",
      "evidence": "Lighthouse found user-scalable=no in the effective mobile viewport meta and target-size failures, including a 194x20 link. The 360px screenshot also fails reflow due to 664px overflow.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-mobile-layout.json"
      ],
      "suggestedFix": "Remove user-scalable=no, preserve at least 5x zoom, make targets at least 24x24 CSS pixels with spacing, and fix mobile reflow.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home-mobile",
      "url": "https://ar.xhamster.com/"
    },
    {
      "id": "F09",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "Transport is HTTPS, but browser defenses and cookie flags are incomplete.",
      "evidence": "Headers showed CSP limited to frame-ancestors, with no nosniff or Referrer-Policy. Cookie inspection found settings and x_csrf_token without Secure; settings also uses SameSite=None.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Deploy a full restrictive CSP, add nosniff and a suitable Referrer-Policy, and mark all HTTPS cookies Secure with the narrowest viable SameSite and HttpOnly settings.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://ar.xhamster.com/"
    },
    {
      "id": "F10",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "summary": "The fresh load contacts a broad third-party surface before consent is chosen.",
      "evidence": "The HAR captured 143 requests, 117 classified third-party and 1.65MB third-party transfer, including Google Accounts and an ad-syndication endpoint, while the consent overlay was still awaiting a choice. Tracker enumeration found 13 third-party origins.",
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json",
        "evidence/trackers.json",
        "evidence/home-desktop.png"
      ],
      "suggestedFix": "Gate non-essential identity, advertising and analytics requests until consent; consolidate origins, batch telemetry and document each third party’s necessity.",
      "effort": "large",
      "confidence": "high",
      "pathId": "home",
      "url": "https://ar.xhamster.com/"
    },
    {
      "id": "F11",
      "severity": "medium",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "forms",
      "guidanceCategory": "forms",
      "summary": "The existing-password field advertises the wrong autocomplete purpose.",
      "evidence": "On /login, the username input uses autocomplete=username but the sign-in password input uses autocomplete=new-password, which can obstruct password-manager autofill for returning users.",
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/login-desktop.png"
      ],
      "suggestedFix": "Use autocomplete=current-password on login and retain username. Offer WebAuthn/passkeys alongside federated and password sign-in.",
      "effort": "trivial",
      "confidence": "high",
      "pathId": "login",
      "url": "https://ar.xhamster.com/login"
    },
    {
      "id": "F12",
      "severity": "medium",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Rich media pages lack structured and social-preview metadata.",
      "evidence": "Home DOM probes found zero JSON-LD blocks and no Open Graph metadata despite the page representing a large media listing; the inspected detail template likewise supplied no evidence of structured metadata in the retained DOM artifact.",
      "artifacts": [
        "evidence/quality-probe.json",
        "evidence/detail-dom.json"
      ],
      "suggestedFix": "Add accurate VideoObject and collection/breadcrumb JSON-LD where applicable plus Open Graph/Twitter preview metadata matching visible content.",
      "effort": "medium",
      "confidence": "medium",
      "pathId": "detail",
      "url": "https://ar.xhamster.com/videos/french-pegging-femdom-humiliation-strapon-double-fist-hot-wax-cold-water-jet-and-cei-xhZl6tZ"
    },
    {
      "id": "F13",
      "severity": "medium",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Localized variants are linked in-page but hreflang discovery signals are absent.",
      "evidence": "The page exposes dozens of language/region variants, html lang is es-AR and canonical is present, but the link[rel=alternate] probe returned no hreflang entries. /sitemap.xml returned HTTP 404.",
      "artifacts": [
        "evidence/routes-meta.json",
        "evidence/sitemap-headers.txt",
        "evidence/robots.txt"
      ],
      "suggestedFix": "Publish reciprocal hreflang alternates for localized equivalents and expose sitemap locations consistently in robots.txt.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home",
      "url": "https://ar.xhamster.com/"
    },
    {
      "id": "F14",
      "severity": "medium",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "summary": "Startup JavaScript and third-party delivery are heavy for the listing shell.",
      "evidence": "The load transferred 1.76MB across 143 requests; 62 scripts accounted for 1.01MB and one index bundle was 400KB. Lighthouse estimated 56KiB unused CSS, 26KiB unused JavaScript and 11KiB legacy JavaScript.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Set a template budget, split and conditionally load the listing bundle, remove unused/legacy code, and defer non-critical third-party features.",
      "effort": "large",
      "confidence": "high",
      "pathId": "home",
      "url": "https://ar.xhamster.com/"
    },
    {
      "id": "F15",
      "severity": "low",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Navigation swaps pages without declarative view-transition support.",
      "evidence": "CSS inspection across the loaded styles found no view-transition rules or names, while browsing moved between separate listing, search and detail documents.",
      "artifacts": [
        "evidence/preferences-motion.json",
        "evidence/category-desktop.png",
        "evidence/detail-desktop.png"
      ],
      "suggestedFix": "Add same-origin cross-document view transitions for route changes, with a reduced-motion override and graceful fallback.",
      "effort": "medium",
      "confidence": "medium",
      "pathId": "detail",
      "url": "https://ar.xhamster.com/"
    },
    {
      "id": "F16",
      "severity": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Keyboard focus is not visibly exposed on key controls.",
      "evidence": "Programmatic focus inspection found the search input and button with outline-style none, outline width 0 and no box-shadow; Lighthouse separately flagged target-size failures.",
      "artifacts": [
        "evidence/quality-probe.json",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Provide a high-contrast :focus-visible indicator for every interactive element and keep touch targets adequately sized and spaced.",
      "effort": "small",
      "confidence": "high",
      "pathId": "home",
      "url": "https://ar.xhamster.com/"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Rebuild the narrow-screen layout and restore zoom/focus usability",
      "priority": 1,
      "findingIds": [
        "F01",
        "F08",
        "F16"
      ],
      "guidanceId": "fluid-scaling",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Gate non-essential third parties until consent",
      "priority": 2,
      "findingIds": [
        "F10"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Repair accessible names, semantics and contrast",
      "priority": 3,
      "findingIds": [
        "F03",
        "F06",
        "F07"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Harden CSP, headers and cookie flags",
      "priority": 4,
      "findingIds": [
        "F09"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Improve LCP and resource delivery",
      "priority": 5,
      "findingIds": [
        "F04",
        "F05",
        "F14"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Correct login autocomplete and add passkey support",
      "priority": 6,
      "findingIds": [
        "F11"
      ],
      "guidanceId": "forms",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Publish hreflang and rich media metadata",
      "priority": 7,
      "findingIds": [
        "F12",
        "F13"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Respect reduced motion",
      "priority": 8,
      "findingIds": [
        "F02"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Add reduced-motion-safe route transitions",
      "priority": 9,
      "findingIds": [
        "F15"
      ],
      "guidanceId": "html",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 7,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-22T09-52-51-686Z"
}
