{
  "url": "https://ru.xhamster.com",
  "auditedAt": "2026-07-23T19:34:37.119Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete model-led audit of five representative paths. Direct robots.txt and sitemap.xml probes returned HTTP 403; this was recorded but did not prevent page-level indexing judgement.",
  "page": {
    "appType": "mpa",
    "framework": "unknown",
    "notes": "Server-rendered Russian media catalog with client enhancement, service worker, repeated consent and UK age-verification gates."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "lighthouse"
  ],
  "guidanceConsulted": [
    "accessibility",
    "dark-mode",
    "light-dismiss-a-dialog",
    "declarative-dialog-popover-control",
    "fluid-scaling",
    "size-aware-styling",
    "break-up-long-tasks",
    "identify-heavy-scripts",
    "optimize-image-priority",
    "security",
    "privacy",
    "batch-analytics-events",
    "validate-input-after-interaction",
    "efficient-background-processing",
    "manage-recurring-intervals"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "Homepage first viewport with cookie wall and age banner.",
      "condition": "1440x1000",
      "findingIds": [
        "F-03",
        "F-04",
        "F-05",
        "F-06",
        "F-26"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "Homepage clipped at a narrow viewport.",
      "condition": "360x800",
      "findingIds": [
        "F-07",
        "F-08",
        "F-18"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "Narrow viewport overflow and long-task metrics.",
      "condition": "360x800",
      "findingIds": [
        "F-07",
        "F-18"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-contrast.png",
      "caption": "Homepage under forced colors and increased contrast.",
      "condition": "forced-colors: active; prefers-contrast: more",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-light.png",
      "caption": "Homepage under light preference.",
      "condition": "prefers-color-scheme: light",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/reduced-motion.json",
      "caption": "Animation inventory under reduced motion.",
      "condition": "prefers-reduced-motion: reduce",
      "findingIds": [
        "F-01",
        "F-30"
      ]
    },
    {
      "type": "other",
      "path": "evidence/page-probe.json",
      "caption": "Document, accessibility, focus and platform probe.",
      "findingIds": [
        "F-02",
        "F-03",
        "F-05",
        "F-08",
        "F-09",
        "F-15",
        "F-17",
        "F-19",
        "F-23"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "Compact load trace timings and blocking work.",
      "findingIds": [
        "F-12"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "DevTools performance trace.",
      "findingIds": []
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "Compact request, bytes, third-party and critical-chain signals.",
      "findingIds": [
        "F-13",
        "F-14",
        "F-22",
        "F-30",
        "F-31"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "HAR 1.2 network capture.",
      "findingIds": [
        "F-13"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "Lighthouse performance, accessibility, best-practices and SEO audit.",
      "findingIds": [
        "F-09",
        "F-12",
        "F-13",
        "F-15",
        "F-16",
        "F-17",
        "F-18"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "Image dimensions, lazy loading, format and sizing audit.",
      "findingIds": [
        "F-19",
        "F-29"
      ]
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "Main-document security headers.",
      "findingIds": [
        "F-21",
        "F-24"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "Cookie security posture.",
      "findingIds": [
        "F-21"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "Third-party origin inventory.",
      "findingIds": [
        "F-22",
        "F-31"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "Client secret scan with no findings.",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability",
      "caption": "Raw HTML versus rendered content comparison.",
      "findingIds": [
        "F-25"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-crawler.png",
      "caption": "Crawler/no-JavaScript view.",
      "condition": "JavaScript disabled",
      "findingIds": [
        "F-25"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-rendered.png",
      "caption": "Rendered browser view.",
      "condition": "JavaScript enabled",
      "findingIds": [
        "F-25"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "Baseline heap summary.",
      "findingIds": [
        "F-32",
        "F-33"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-post-scroll.heapsnapshot",
      "caption": "Heap after ten repeated bottom/top traversals.",
      "findingIds": [
        "F-32"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/categories.png",
      "caption": "Category index first viewport.",
      "condition": "1440x1000",
      "findingIds": [
        "F-04"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/detail.png",
      "caption": "Representative video detail first viewport.",
      "condition": "1440x1000",
      "findingIds": [
        "F-04",
        "F-10"
      ]
    },
    {
      "type": "other",
      "path": "evidence/detail-probe.json",
      "caption": "Video detail metadata and media probe.",
      "findingIds": [
        "F-20"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/signup.png",
      "caption": "Registration first viewport with blank action panel.",
      "condition": "1440x1000",
      "findingIds": [
        "F-10",
        "F-11",
        "F-26",
        "F-27",
        "F-28"
      ]
    },
    {
      "type": "other",
      "path": "evidence/signup-probe.json",
      "caption": "Registration DOM text and forms inventory.",
      "findingIds": [
        "F-10",
        "F-11",
        "F-23",
        "F-26",
        "F-27",
        "F-28"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/404.png",
      "caption": "Invalid-route recovery page.",
      "condition": "1440x1000",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/404-probe.json",
      "caption": "Invalid-route message and recovery-link probe.",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/pwa-probe.json",
      "caption": "Manifest and service-worker probe.",
      "findingIds": []
    }
  ],
  "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": "evaluate computed colors and paired screenshots",
      "evidence": "Computed color and screenshots differ under light and dark emulation; the dark presentation remains usable.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-light.png"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "issues",
      "confidence": "high",
      "method": "getAnimations under reduced-motion emulation",
      "evidence": "Eight 2-second shimmer animations remained running under prefers-reduced-motion: reduce, and no matching reduced-motion rules were found.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/reduced-motion.json"
      ],
      "findingIds": [
        "F-01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "forced-colors screenshot review",
      "evidence": "Forced-colors and prefers-contrast screenshot retained visible text, controls, borders and content hierarchy.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-contrast.png"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "medium",
      "method": "DOM/CSS platform probe and route review",
      "evidence": "The platform probe found no View Transition naming or route transition support; page changes are abrupt full navigations.",
      "pathIds": [
        "home",
        "categories",
        "detail"
      ],
      "artifacts": [
        "evidence/page-probe.json"
      ],
      "findingIds": [
        "F-02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "visual scroll review and animation probe",
      "evidence": "No parallax, scrollytelling, reveal, or other scroll-linked motion was present on the representative paths.",
      "reason": "No parallax, scrollytelling, reveal, or other scroll-linked motion was present on the representative paths."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "medium",
      "method": "visual and DOM interaction review",
      "evidence": "Observed browsing uses native scrolling, links and controls without custom pointer-drag gestures that fight the platform.",
      "pathIds": [
        "home",
        "categories",
        "detail"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/categories.png"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "medium",
      "method": "scroll review and CSS/platform probe",
      "evidence": "The large navigation chrome remains static and consumes substantial space; no scroll-state query or responsive shrinking behavior was observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/page-probe.json"
      ],
      "findingIds": [
        "F-03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM overlay inventory",
      "evidence": "No tooltip or edge-positioned transient menu was opened or required by the representative flows.",
      "reason": "No tooltip or edge-positioned transient menu was opened or required by the representative flows."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "medium",
      "method": "screenshot hierarchy review",
      "evidence": "Active navigation is underlined and page headings clearly identify the current listing or detail context.",
      "pathIds": [
        "home",
        "categories",
        "detail"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/categories.png",
        "evidence/detail.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "first-load screenshots across templates",
      "evidence": "A centered cookie wall obscures primary content on every public template, while a separate full-width age-verification banner adds another interruption.",
      "pathIds": [
        "home",
        "categories",
        "detail"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/categories.png",
        "evidence/detail.png"
      ],
      "findingIds": [
        "F-04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "DOM overlay inventory and screenshots",
      "evidence": "The cookie wall is not exposed as dialog, role=dialog, popover, or details; the overlay inventory reported zero semantic dialog/popover primitives.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/page-probe.json"
      ],
      "findingIds": [
        "F-05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "medium",
      "method": "desktop screenshot review",
      "evidence": "Desktop first view combines two navigation rows, a persistent sidebar, age banner, cookie wall and dense promotional tiles, leaving content visually crowded.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F-06"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "issues",
      "confidence": "high",
      "method": "layout primitive and mobile screenshot",
      "evidence": "At a 360px visual viewport the page retained a 1024px layout and reported 664px horizontal overflow; content is clipped.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F-07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "CSS rule probe and mobile screenshot",
      "evidence": "The probe found zero container-query rules and the listing/sidebar composition stayed desktop-width at 360px.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/page-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F-08"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "target-size and focus computed-style probe",
      "evidence": "The probe counted 51 visible controls below 24px in one dimension, and programmatic focus on the first link had outline style none.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/page-probe.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F-09"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "first-viewport screenshots and heading probe",
      "evidence": "Headings, search, category links and video tiles communicate the site purpose and next actions immediately.",
      "pathIds": [
        "home",
        "categories",
        "detail"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/categories.png",
        "evidence/detail.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "issues",
      "confidence": "medium",
      "method": "task walkthrough screenshots",
      "evidence": "The viewing entry path is repeatedly interrupted by cookie and legal-age gates, and the registration screenshot renders its provider/action content effectively invisible inside a blank panel.",
      "pathIds": [
        "home",
        "detail",
        "signup"
      ],
      "artifacts": [
        "evidence/detail.png",
        "evidence/signup.png",
        "evidence/signup-probe.json"
      ],
      "findingIds": [
        "F-10"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "issues",
      "confidence": "high",
      "method": "signup screenshot compared with DOM text probe",
      "evidence": "The registration DOM contains provider and email choices, but the captured card presents a large blank state with no visible actionable choices or error explanation.",
      "pathIds": [
        "signup"
      ],
      "artifacts": [
        "evidence/signup.png",
        "evidence/signup-probe.json"
      ],
      "findingIds": [
        "F-11"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "medium",
      "method": "Lighthouse plus trace summary",
      "evidence": "Lighthouse measured LCP at 3.0s, outside the good threshold, although the trace run measured 1.78s; CLS was zero and TBT was modest.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-trace-summary.json"
      ],
      "findingIds": [
        "F-12"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "layout shift observer",
      "evidence": "The layout observer recorded CLS 0 with no shift entries during the capture.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "trace summary",
      "evidence": "Trace measured two long tasks, 156ms longest, and 119.64ms total blocking time, a bounded rather than dominant main-thread cost.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "HAR summary and Lighthouse dependency insight",
      "evidence": "The load made 142 requests and transferred 1.73MB; three parser-inserted stylesheets were high-priority render-blocking candidates and the largest script was 400KB.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F-13"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "HAR resource breakdown",
      "evidence": "Sixty-two scripts transferred 1.05MB, with a 400KB index bundle plus multiple locale/start bundles on the initial listing.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F-14"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility audits and DOM probe",
      "evidence": "Lighthouse failed button-name and label-content-name-mismatch; the cookie overlay also lacks a dialog role.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/page-probe.json"
      ],
      "findingIds": [
        "F-15"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility audits",
      "evidence": "Lighthouse failed color-contrast and link-in-text-block checks on the rendered page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F-16"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "focus/landmark probe and Lighthouse",
      "evidence": "Programmatic focus produced outline none, and Lighthouse reported malformed list structure and an ill-formed agent accessibility tree.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/page-probe.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F-17"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "medium",
      "method": "desktop screenshot review",
      "evidence": "Desktop body and heading text remain readable with consistent alignment and no observed clipping in the primary desktop templates.",
      "pathIds": [
        "home",
        "categories",
        "detail"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/categories.png",
        "evidence/detail.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "mobile layout and Lighthouse",
      "evidence": "The 360px capture does not reflow and has 664px overflow; Lighthouse also failed meta-viewport and target-size audits.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F-18"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse best-practices audit",
      "evidence": "Lighthouse best-practices scored 1.0 and did not report a console-error or runtime-exception failure.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "document probe and image audit",
      "evidence": "Document doctype/charset are valid, but 29 of 36 images lacked explicit dimensions and 15 were more than 2x displayed size.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/page-probe.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F-19"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse best-practices audit",
      "evidence": "Lighthouse best-practices scored 1.0 with no deprecated API, prompt-on-load or vulnerable-library failure surfaced.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "DOM metadata probes",
      "evidence": "Homepage and detail probes found descriptive titles and meta descriptions.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/discoverability",
        "evidence/detail-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "medium",
      "method": "DOM and discoverability primitive",
      "evidence": "Real href links, viewport metadata and 81% raw-HTML content coverage were present; public navigation was crawlable despite robots.txt returning 403 to the direct probe.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/discoverability",
        "evidence/discoverability-crawler.png"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "medium",
      "method": "metadata and network probes",
      "evidence": "Homepage and detail expose matching canonical URLs and return successful document responses; no accidental noindex was observed.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/detail-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "medium",
      "method": "detail metadata probe",
      "evidence": "The representative video detail has Open Graph metadata but no JSON-LD VideoObject or other schema.org block.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/detail-probe.json"
      ],
      "findingIds": [
        "F-20"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "headers and cookies primitives",
      "evidence": "HTTPS, HSTS and frame protections are present, but CSP only declares frame-ancestors, nosniff and Referrer-Policy are absent, and two cookies lack Secure.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F-21"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "trackers and HAR summary",
      "evidence": "The initial load contacted 14 third-party origins; 117 of 142 requests and 1.62MB of 1.73MB were classified off the page origin before consent interaction.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F-22"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "issues",
      "confidence": "medium",
      "method": "registration DOM probe and platform probe",
      "evidence": "No permission prompt fired on load, but registration exposes Google, X and email with no visible passkey/WebAuthn option.",
      "pathIds": [
        "signup"
      ],
      "artifacts": [
        "evidence/signup-probe.json",
        "evidence/page-probe.json"
      ],
      "findingIds": [
        "F-23"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "security-header primitive",
      "evidence": "HSTS and clickjacking defenses are present, but Referrer-Policy and nosniff are missing and Permissions-Policy only covers two client-hint directives.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F-24"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "issues",
      "confidence": "high",
      "method": "discoverability crawler/browser pair",
      "evidence": "Raw HTML retains 81% content, but the no-JS crawler view explicitly says JavaScript is required and the cookie controls show indefinite spinners, so core gating controls do not progressively enhance.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/discoverability",
        "evidence/discoverability-crawler.png",
        "evidence/discoverability-rendered.png"
      ],
      "findingIds": [
        "F-25"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "issues",
      "confidence": "medium",
      "method": "overlay and signup state review",
      "evidence": "The custom cookie overlay lacks platform dialog semantics, while the signup action content is present in DOM text but not visibly rendered in the captured card.",
      "pathIds": [
        "home",
        "signup"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/signup.png",
        "evidence/signup-probe.json"
      ],
      "findingIds": [
        "F-26"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "manifest and service-worker probe",
      "evidence": "The video service is intrinsically network-dependent. A manifest and controlling service worker exist, but an offline media experience is not a proportionate requirement.",
      "reason": "The video service is intrinsically network-dependent. A manifest and controlling service worker exist, but an offline media experience is not a proportionate requirement."
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "invalid-route screenshot and DOM probe",
      "evidence": "A deliberately invalid route shows a clear not-found message and a direct link back to the homepage rather than a blank shell.",
      "pathIds": [
        "not-found"
      ],
      "artifacts": [
        "evidence/404.png",
        "evidence/404-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "DOM language and locale navigation probe",
      "evidence": "The Russian page declares lang=ru and exposes a broad locale selector including RTL languages; visible reading order is coherent.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/page-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "medium",
      "method": "cross-template visual review",
      "evidence": "Locale-specific Russian labels and localized view-count formatting are consistently rendered across listing and detail templates.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/detail.png"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "content and DOM review",
      "evidence": "The audited public listing, category, detail and registration surfaces expose no scheduling or time-zone-sensitive user task.",
      "reason": "The audited public listing, category, detail and registration surfaces expose no scheduling or time-zone-sensitive user task."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "medium",
      "method": "consent screenshot review",
      "evidence": "The cookie wall presents Accept and Reject with equal visual weight and states the purpose of optional data use; the age gate explains its legal basis.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "issues",
      "confidence": "medium",
      "method": "registration screenshot and DOM comparison",
      "evidence": "The registration surface fails as a visually blank card without actionable error or recovery messaging even though choices exist in DOM text.",
      "pathIds": [
        "signup"
      ],
      "artifacts": [
        "evidence/signup.png",
        "evidence/signup-probe.json"
      ],
      "findingIds": [
        "F-27"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "pass",
      "confidence": "medium",
      "method": "controls inventory",
      "evidence": "The only directly exercised authored input is search, which has a descriptive accessible label and does not require sensitive autofill tokens.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/page-probe.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "issues",
      "confidence": "high",
      "method": "registration flow screenshot",
      "evidence": "The account-entry card hides the provider/email actions visually, preventing a clear and predictable registration choice.",
      "pathIds": [
        "signup"
      ],
      "artifacts": [
        "evidence/signup.png",
        "evidence/signup-probe.json"
      ],
      "findingIds": [
        "F-28"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "image audit",
      "evidence": "Fifteen images were oversized, 29 lacked dimensions, 14 used legacy formats and eight below-fold images were not lazy-loaded.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json"
      ],
      "findingIds": [
        "F-29"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "HAR and reduced-motion probe",
      "evidence": "The page loads 62 scripts and continues eight shimmer animations under reduced-motion; this is avoidable background and delivery work.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/reduced-motion.json"
      ],
      "findingIds": [
        "F-30"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "HAR and tracker inventory",
      "evidence": "Third-party-classified traffic accounts for 117 requests and 1.62MB, including Google identity and promotional/ad origins on initial load.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F-31"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "recon and platform probe",
      "evidence": "No declared agent-facing intent exists for this public media catalog; absence of WebMCP is treated as an emerging opportunity, not a failure.",
      "reason": "No declared agent-facing intent exists for this public media catalog; absence of WebMCP is treated as an emerging opportunity, not a failure."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "recon and platform probe",
      "evidence": "No summarisation or other inference task is exposed where built-in on-device AI is necessary to complete the audited journeys.",
      "reason": "No summarisation or other inference task is exposed where built-in on-device AI is necessary to complete the audited journeys."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "issues",
      "confidence": "medium",
      "method": "baseline and post-interaction heap summaries",
      "evidence": "After ten bottom/top feed traversals, heap self size increased from 36.90MB to 42.15MB and node count from 685,755 to 791,410. Some growth may be intentional lazy-feed caching, so confidence is medium.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post-scroll.heapsnapshot"
      ],
      "findingIds": [
        "F-32"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "issues",
      "confidence": "medium",
      "method": "baseline heap summary",
      "evidence": "The baseline page retained 685,755 heap nodes and 36.90MB self size before exercising the feed, a heavy footprint for a listing page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot"
      ],
      "findingIds": [
        "F-33"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "low",
      "method": "heap constructor comparison",
      "evidence": "Neither heap summary surfaced a Detached constructor among the largest populations; the summaries do not expose listener counts, so confidence is low.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post-scroll.heapsnapshot"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-01"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-02"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-03"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-04",
        "F-05",
        "F-06"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-07",
        "F-08",
        "F-09"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-10",
        "F-11"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-12",
        "F-13",
        "F-14"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-15",
        "F-16",
        "F-17",
        "F-18"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-19"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-20"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-21",
        "F-22",
        "F-23",
        "F-24"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F-25",
        "F-26"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-27",
        "F-28"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F-29",
        "F-30",
        "F-31"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "No declared agent-facing intent exists for this public media catalog; absence of WebMCP is treated as an emerging opportunity, not a failure. No summarisation or other inference task is exposed where built-in on-device AI is necessary to complete the audited journeys."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F-32",
        "F-33"
      ]
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and primary discovery listing; representative global navigation, consent, age gate and content feed.",
      "url": "https://ru.xhamster.com/",
      "conditions": [
        "desktop 1440x1000",
        "mobile 360x800",
        "light and dark preference",
        "forced colors",
        "reduced motion",
        "keyboard focus"
      ],
      "result": "issues"
    },
    {
      "id": "categories",
      "description": "Category index; representative taxonomy and listing template.",
      "url": "https://ru.xhamster.com/categories",
      "conditions": [
        "desktop 1440x1000"
      ],
      "result": "issues"
    },
    {
      "id": "detail",
      "description": "Representative video detail and viewing entry path, selected from homepage links.",
      "url": "https://ru.xhamster.com/videos/priyanka-sexy-aunty-dress-washing-in-bathrome-xh8quN1",
      "conditions": [
        "desktop 1440x1000",
        "legal age gate present"
      ],
      "result": "issues"
    },
    {
      "id": "signup",
      "description": "Registration/account entry flow, including third-party and email options.",
      "url": "https://ru.xhamster.com/signup?source=menuSignup",
      "conditions": [
        "desktop 1440x1000"
      ],
      "result": "issues"
    },
    {
      "id": "not-found",
      "description": "Deliberately invalid route used to inspect HTTP/navigation recovery.",
      "url": "https://ru.xhamster.com/this-route-should-not-exist-web-uplift",
      "conditions": [
        "desktop 1440x1000"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F-01",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-reduced-motion",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "severity": "medium",
      "confidence": "high",
      "summary": "Stop decorative shimmer under reduced motion",
      "evidence": "Eight 2-second shimmer animations remained running under prefers-reduced-motion: reduce, and no matching reduced-motion rules were found.",
      "artifacts": [
        "evidence/reduced-motion.json"
      ],
      "suggestedFix": "Stop decorative shimmer under reduced motion. Follow the retrieved accessibility guidance and verify under the same captured condition.",
      "effort": "small"
    },
    {
      "id": "F-02",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "dark-mode",
      "guidanceCategory": "modern-web-guidance",
      "severity": "low",
      "confidence": "medium",
      "summary": "Use progressive View Transitions for route/state changes",
      "evidence": "The platform probe found no View Transition naming or route transition support; page changes are abrupt full navigations.",
      "artifacts": [
        "evidence/page-probe.json"
      ],
      "suggestedFix": "Use progressive View Transitions for route/state changes. Follow the retrieved dark-mode guidance and verify under the same captured condition.",
      "effort": "small"
    },
    {
      "id": "F-03",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "modern-web-guidance",
      "severity": "low",
      "confidence": "medium",
      "summary": "Make heavy navigation chrome respond to scroll",
      "evidence": "The large navigation chrome remains static and consumes substantial space; no scroll-state query or responsive shrinking behavior was observed.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/page-probe.json"
      ],
      "suggestedFix": "Make heavy navigation chrome respond to scroll. Follow the retrieved size-aware-styling guidance and verify under the same captured condition.",
      "effort": "small"
    },
    {
      "id": "F-04",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "high",
      "summary": "Replace stacked first-load interruptions with a content-preserving consent and age flow",
      "evidence": "A centered cookie wall obscures primary content on every public template, while a separate full-width age-verification banner adds another interruption.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/categories.png",
        "evidence/detail.png"
      ],
      "suggestedFix": "Replace stacked first-load interruptions with a content-preserving consent and age flow. Follow the retrieved light-dismiss-a-dialog guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-05",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "high",
      "summary": "Implement consent with a semantic dialog and reliable light-dismiss/focus behavior",
      "evidence": "The cookie wall is not exposed as dialog, role=dialog, popover, or details; the overlay inventory reported zero semantic dialog/popover primitives.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/page-probe.json"
      ],
      "suggestedFix": "Implement consent with a semantic dialog and reliable light-dismiss/focus behavior. Follow the retrieved declarative-dialog-popover-control guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-06",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "reduced-chrome",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "modern-web-guidance",
      "severity": "medium",
      "confidence": "medium",
      "summary": "Reduce persistent navigation and promotional chrome",
      "evidence": "Desktop first view combines two navigation rows, a persistent sidebar, age banner, cookie wall and dense promotional tiles, leaving content visually crowded.",
      "artifacts": [
        "evidence/home-desktop.png"
      ],
      "suggestedFix": "Reduce persistent navigation and promotional chrome. Follow the retrieved size-aware-styling guidance and verify under the same captured condition.",
      "effort": "small"
    },
    {
      "id": "F-07",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "responsive-no-horizontal-scroll",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "modern-web-guidance",
      "severity": "critical",
      "confidence": "high",
      "summary": "Reflow the desktop layout at narrow viewports",
      "evidence": "At a 360px visual viewport the page retained a 1024px layout and reported 664px horizontal overflow; content is clipped.",
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Reflow the desktop layout at narrow viewports. Follow the retrieved fluid-scaling guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-08",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "high",
      "summary": "Add container-aware card and sidebar layouts",
      "evidence": "The probe found zero container-query rules and the listing/sidebar composition stayed desktop-width at 360px.",
      "artifacts": [
        "evidence/page-probe.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Add container-aware card and sidebar layouts. Follow the retrieved size-aware-styling guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-09",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "high",
      "summary": "Increase targets and restore visible keyboard focus",
      "evidence": "The probe counted 51 visible controls below 24px in one dimension, and programmatic focus on the first link had outline style none.",
      "artifacts": [
        "evidence/page-probe.json",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Increase targets and restore visible keyboard focus. Follow the retrieved accessibility guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-10",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "support-core-task-success",
      "principleCheckId": "primary-flow-completion",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "medium",
      "summary": "Remove avoidable interruptions and expose registration actions visibly",
      "evidence": "The viewing entry path is repeatedly interrupted by cookie and legal-age gates, and the registration screenshot renders its provider/action content effectively invisible inside a blank panel.",
      "artifacts": [
        "evidence/detail.png",
        "evidence/signup.png",
        "evidence/signup-probe.json"
      ],
      "suggestedFix": "Remove avoidable interruptions and expose registration actions visibly. Follow the retrieved light-dismiss-a-dialog guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-11",
      "pathId": "signup",
      "url": "https://ru.xhamster.com/signup?source=menuSignup",
      "principleId": "support-core-task-success",
      "principleCheckId": "clear-system-state-and-recovery",
      "guidanceId": "validate-input-after-interaction",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "high",
      "summary": "Render a clear actionable registration state or explicit recovery message",
      "evidence": "The registration DOM contains provider and email choices, but the captured card presents a large blank state with no visible actionable choices or error explanation.",
      "artifacts": [
        "evidence/signup.png",
        "evidence/signup-probe.json"
      ],
      "suggestedFix": "Render a clear actionable registration state or explicit recovery message. Follow the retrieved validate-input-after-interaction guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-12",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "modern-web-guidance",
      "severity": "medium",
      "confidence": "medium",
      "summary": "Improve mobile LCP below 2.5 seconds",
      "evidence": "Lighthouse measured LCP at 3.0s, outside the good threshold, although the trace run measured 1.78s; CLS was zero and TBT was modest.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-trace-summary.json"
      ],
      "suggestedFix": "Improve mobile LCP below 2.5 seconds. Follow the retrieved optimize-image-priority guidance and verify under the same captured condition.",
      "effort": "small"
    },
    {
      "id": "F-13",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "modern-web-guidance",
      "severity": "medium",
      "confidence": "high",
      "summary": "Shorten the critical request chain and split the initial bundle",
      "evidence": "The load made 142 requests and transferred 1.73MB; three parser-inserted stylesheets were high-priority render-blocking candidates and the largest script was 400KB.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Shorten the critical request chain and split the initial bundle. Follow the retrieved identify-heavy-scripts guidance and verify under the same captured condition.",
      "effort": "small"
    },
    {
      "id": "F-14",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "high",
      "summary": "Defer route-specific and third-party JavaScript",
      "evidence": "Sixty-two scripts transferred 1.05MB, with a 400KB index bundle plus multiple locale/start bundles on the initial listing.",
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Defer route-specific and third-party JavaScript. Follow the retrieved identify-heavy-scripts guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-15",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "high",
      "summary": "Fix accessible names, label matching and overlay role",
      "evidence": "Lighthouse failed button-name and label-content-name-mismatch; the cookie overlay also lacks a dialog role.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/page-probe.json"
      ],
      "suggestedFix": "Fix accessible names, label matching and overlay role. Follow the retrieved accessibility guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-16",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "high",
      "summary": "Correct failing text and link contrast combinations",
      "evidence": "Lighthouse failed color-contrast and link-in-text-block checks on the rendered page.",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Correct failing text and link contrast combinations. Follow the retrieved accessibility guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-17",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "high",
      "summary": "Restore visible focus and valid structural semantics",
      "evidence": "Programmatic focus produced outline none, and Lighthouse reported malformed list structure and an ill-formed agent accessibility tree.",
      "artifacts": [
        "evidence/page-probe.json",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Restore visible focus and valid structural semantics. Follow the retrieved accessibility guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-18",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "modern-web-guidance",
      "severity": "critical",
      "confidence": "high",
      "summary": "Support zoom/reflow and WCAG-sized touch targets",
      "evidence": "The 360px capture does not reflow and has 664px overflow; Lighthouse also failed meta-viewport and target-size audits.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Support zoom/reflow and WCAG-sized touch targets. Follow the retrieved fluid-scaling guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-19",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "modern-web-guidance",
      "severity": "medium",
      "confidence": "high",
      "summary": "Reserve image space and right-size image requests",
      "evidence": "Document doctype/charset are valid, but 29 of 36 images lacked explicit dimensions and 15 were more than 2x displayed size.",
      "artifacts": [
        "evidence/page-probe.json",
        "evidence/images.json"
      ],
      "suggestedFix": "Reserve image space and right-size image requests. Follow the retrieved optimize-image-priority guidance and verify under the same captured condition.",
      "effort": "small"
    },
    {
      "id": "F-20",
      "pathId": "detail",
      "url": "https://ru.xhamster.com/videos/priyanka-sexy-aunty-dress-washing-in-bathrome-xh8quN1",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "dark-mode",
      "guidanceCategory": "modern-web-guidance",
      "severity": "medium",
      "confidence": "medium",
      "summary": "Add accurate VideoObject JSON-LD on video details",
      "evidence": "The representative video detail has Open Graph metadata but no JSON-LD VideoObject or other schema.org block.",
      "artifacts": [
        "evidence/detail-probe.json"
      ],
      "suggestedFix": "Add accurate VideoObject JSON-LD on video details. Follow the retrieved dark-mode guidance and verify under the same captured condition.",
      "effort": "small"
    },
    {
      "id": "F-21",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "high",
      "summary": "Harden CSP, cookies and core response headers",
      "evidence": "HTTPS, HSTS and frame protections are present, but CSP only declares frame-ancestors, nosniff and Referrer-Policy are absent, and two cookies lack Secure.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Harden CSP, cookies and core response headers. Follow the retrieved security guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-22",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "high",
      "summary": "Minimise and defer third-party requests until consent",
      "evidence": "The initial load contacted 14 third-party origins; 117 of 142 requests and 1.62MB of 1.73MB were classified off the page origin before consent interaction.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Minimise and defer third-party requests until consent. Follow the retrieved privacy guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-23",
      "pathId": "signup",
      "url": "https://ru.xhamster.com/signup?source=menuSignup",
      "principleId": "be-private-and-secure",
      "principleCheckId": "in-context-permissions-and-modern-auth",
      "guidanceId": "security",
      "guidanceCategory": "modern-web-guidance",
      "severity": "medium",
      "confidence": "medium",
      "summary": "Offer passkeys alongside federated and email sign-in",
      "evidence": "No permission prompt fired on load, but registration exposes Google, X and email with no visible passkey/WebAuthn option.",
      "artifacts": [
        "evidence/signup-probe.json",
        "evidence/page-probe.json"
      ],
      "suggestedFix": "Offer passkeys alongside federated and email sign-in. Follow the retrieved security guidance and verify under the same captured condition.",
      "effort": "small"
    },
    {
      "id": "F-24",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "high",
      "summary": "Add nosniff, Referrer-Policy and a restrictive Permissions-Policy",
      "evidence": "HSTS and clickjacking defenses are present, but Referrer-Policy and nosniff are missing and Permissions-Policy only covers two client-hint directives.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "suggestedFix": "Add nosniff, Referrer-Policy and a restrictive Permissions-Policy. Follow the retrieved security guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-25",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-resilient",
      "principleCheckId": "progressive-enhancement",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "high",
      "summary": "Make core consent and age actions work without JavaScript",
      "evidence": "Raw HTML retains 81% content, but the no-JS crawler view explicitly says JavaScript is required and the cookie controls show indefinite spinners, so core gating controls do not progressively enhance.",
      "artifacts": [
        "evidence/discoverability",
        "evidence/discoverability-crawler.png",
        "evidence/discoverability-rendered.png"
      ],
      "suggestedFix": "Make core consent and age actions work without JavaScript. Follow the retrieved accessibility guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-26",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-resilient",
      "principleCheckId": "resilient-runtime-behaviour",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "modern-web-guidance",
      "severity": "medium",
      "confidence": "medium",
      "summary": "Use robust platform overlays and recover visible signup state",
      "evidence": "The custom cookie overlay lacks platform dialog semantics, while the signup action content is present in DOM text but not visibly rendered in the captured card.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/signup.png",
        "evidence/signup-probe.json"
      ],
      "suggestedFix": "Use robust platform overlays and recover visible signup state. Follow the retrieved declarative-dialog-popover-control guidance and verify under the same captured condition.",
      "effort": "small"
    },
    {
      "id": "F-27",
      "pathId": "signup",
      "url": "https://ru.xhamster.com/signup?source=menuSignup",
      "principleId": "be-trustworthy",
      "principleCheckId": "humane-error-handling",
      "guidanceId": "validate-input-after-interaction",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "medium",
      "summary": "Explain and recover from the blank registration state",
      "evidence": "The registration surface fails as a visually blank card without actionable error or recovery messaging even though choices exist in DOM text.",
      "artifacts": [
        "evidence/signup.png",
        "evidence/signup-probe.json"
      ],
      "suggestedFix": "Explain and recover from the blank registration state. Follow the retrieved validate-input-after-interaction guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-28",
      "pathId": "signup",
      "url": "https://ru.xhamster.com/signup?source=menuSignup",
      "principleId": "be-trustworthy",
      "principleCheckId": "safe-commercial-and-account-flows",
      "guidanceId": "validate-input-after-interaction",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "high",
      "summary": "Make registration choices visible and predictable",
      "evidence": "The account-entry card hides the provider/email actions visually, preventing a clear and predictable registration choice.",
      "artifacts": [
        "evidence/signup.png",
        "evidence/signup-probe.json"
      ],
      "suggestedFix": "Make registration choices visible and predictable. Follow the retrieved validate-input-after-interaction guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-29",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "modern-web-guidance",
      "severity": "medium",
      "confidence": "high",
      "summary": "Serve dimensioned, responsive modern-format thumbnails",
      "evidence": "Fifteen images were oversized, 29 lacked dimensions, 14 used legacy formats and eight below-fold images were not lazy-loaded.",
      "artifacts": [
        "evidence/images.json"
      ],
      "suggestedFix": "Serve dimensioned, responsive modern-format thumbnails. Follow the retrieved optimize-image-priority guidance and verify under the same captured condition.",
      "effort": "small"
    },
    {
      "id": "F-30",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "efficient-background-processing",
      "guidanceCategory": "modern-web-guidance",
      "severity": "medium",
      "confidence": "high",
      "summary": "Cut unused scripts and suppress nonessential background animation",
      "evidence": "The page loads 62 scripts and continues eight shimmer animations under reduced-motion; this is avoidable background and delivery work.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/reduced-motion.json"
      ],
      "suggestedFix": "Cut unused scripts and suppress nonessential background animation. Follow the retrieved efficient-background-processing guidance and verify under the same captured condition.",
      "effort": "small"
    },
    {
      "id": "F-31",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "privacy",
      "guidanceCategory": "modern-web-guidance",
      "severity": "high",
      "confidence": "high",
      "summary": "Set and enforce a consent-aware third-party budget",
      "evidence": "Third-party-classified traffic accounts for 117 requests and 1.62MB, including Google identity and promotional/ad origins on initial load.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "suggestedFix": "Set and enforce a consent-aware third-party budget. Follow the retrieved privacy guidance and verify under the same captured condition.",
      "effort": "medium"
    },
    {
      "id": "F-32",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-memory-efficient",
      "principleCheckId": "no-leak-under-repeated-interaction",
      "guidanceId": "manage-recurring-intervals",
      "guidanceCategory": "modern-web-guidance",
      "severity": "medium",
      "confidence": "medium",
      "summary": "Bound feed caching and release resources after repeated traversal",
      "evidence": "After ten bottom/top feed traversals, heap self size increased from 36.90MB to 42.15MB and node count from 685,755 to 791,410. Some growth may be intentional lazy-feed caching, so confidence is medium.",
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post-scroll.heapsnapshot"
      ],
      "suggestedFix": "Bound feed caching and release resources after repeated traversal. Follow the retrieved manage-recurring-intervals guidance and verify under the same captured condition.",
      "effort": "small"
    },
    {
      "id": "F-33",
      "pathId": "home",
      "url": "https://ru.xhamster.com/",
      "principleId": "be-memory-efficient",
      "principleCheckId": "bounded-footprint",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "modern-web-guidance",
      "severity": "medium",
      "confidence": "medium",
      "summary": "Reduce the initial DOM and heap footprint",
      "evidence": "The baseline page retained 685,755 heap nodes and 36.90MB self size before exercising the feed, a heavy footprint for a listing page.",
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot"
      ],
      "suggestedFix": "Reduce the initial DOM and heap footprint. Follow the retrieved identify-heavy-scripts guidance and verify under the same captured condition.",
      "effort": "small"
    }
  ],
  "taskList": [
    {
      "id": "T-1",
      "title": "Rebuild narrow-screen reflow, target sizing and focus visibility",
      "priority": 1,
      "findingIds": [
        "F-07",
        "F-08",
        "F-09",
        "F-18"
      ],
      "guidanceId": "fluid-scaling",
      "status": "open"
    },
    {
      "id": "T-2",
      "title": "Replace the stacked cookie and age overlays with accessible content-preserving flows",
      "priority": 2,
      "findingIds": [
        "F-04",
        "F-05",
        "F-10"
      ],
      "guidanceId": "declarative-dialog-popover-control",
      "status": "open"
    },
    {
      "id": "T-3",
      "title": "Fix registration rendering and recovery",
      "priority": 3,
      "findingIds": [
        "F-11",
        "F-27",
        "F-28"
      ],
      "guidanceId": "validate-input-after-interaction",
      "status": "open"
    },
    {
      "id": "T-4",
      "title": "Reduce and consent-gate the initial third-party/script footprint",
      "priority": 4,
      "findingIds": [
        "F-14",
        "F-22",
        "F-30",
        "F-31"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T-5",
      "title": "Harden CSP, cookies and defensive response headers",
      "priority": 5,
      "findingIds": [
        "F-21",
        "F-24"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T-6",
      "title": "Correct accessibility names, contrast, structure and focus",
      "priority": 6,
      "findingIds": [
        "F-15",
        "F-16",
        "F-17"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T-7",
      "title": "Dimension and right-size thumbnails",
      "priority": 7,
      "findingIds": [
        "F-12",
        "F-19",
        "F-29"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T-8",
      "title": "Progressively enhance no-JavaScript consent controls",
      "priority": 8,
      "findingIds": [
        "F-25",
        "F-26"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T-9",
      "title": "Bound feed memory growth",
      "priority": 9,
      "findingIds": [
        "F-32",
        "F-33"
      ],
      "guidanceId": "manage-recurring-intervals",
      "status": "open"
    }
  ],
  "budget": {
    "wallClockSeconds": 1200,
    "pathCount": 5,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-23T19-34-37-119Z"
}
