{
  "url": "https://www.xvideos.es",
  "auditedAt": "2026-07-23T21:38:29.028Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete audit across six representative paths. No source was supplied, so this is critique only.",
  "page": {
    "appType": "mpa",
    "framework": "server-rendered legacy JavaScript/jQuery",
    "notes": "Public Spanish media catalogue with an age-entry gate, listing/search/detail templates, and account forms. Not covered: authenticated feeds, uploads, payments/premium checkout, playback beyond initial player state, or destructive account actions because they require credentials, purchases, or content changes."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "lighthouse",
    "heap-summary",
    "modern-web-guidance"
  ],
  "guidanceConsulted": [
    "accessibility",
    "accessible-error-announcement",
    "adapt-scrollbar-to-contrast-preferences",
    "agentic-forms",
    "agentic-javascript-tools",
    "autofill-payment-form",
    "autofill-sign-up-form",
    "capture-location-agnostic-data",
    "carousel-slide-effects",
    "component-specific-light-dark-theme",
    "coordinate-global-events",
    "css",
    "dark-mode",
    "declarative-dialog-popover-control",
    "defer-rendering-heavy-content",
    "defer-work-until-scroll-ends",
    "deprioritize-background-fetches",
    "directional-navigation-transitions",
    "export-html-media-from-canvas",
    "forms",
    "html",
    "language-model",
    "move-dom-element-without-losing-state",
    "passkey-authentication",
    "passkey-reauthentication",
    "performance",
    "persistent-app-tours",
    "persistent-top-layer-ui",
    "privacy",
    "pull-to-reveal",
    "scroll-position-aware-elements",
    "scroll-target-on-load",
    "search-hidden-content",
    "security",
    "stabilize-reactive-state",
    "support-global-calendar-systems",
    "validate-input-after-interaction",
    "webmcp"
  ],
  "artifacts": [
    {
      "type": "other",
      "path": "evidence/account-console-errors.json",
      "caption": "account console errors",
      "findingIds": [
        "F19"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/account-dom.json",
      "caption": "account dom",
      "findingIds": [
        "F17"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/account-mobile.png",
      "caption": "account mobile",
      "findingIds": [
        "F26"
      ]
    },
    {
      "type": "other",
      "path": "evidence/account-probe.json",
      "caption": "account probe",
      "findingIds": [
        "F26",
        "F30",
        "F31"
      ]
    },
    {
      "type": "other",
      "path": "evidence/account-validation.json",
      "caption": "account validation",
      "findingIds": [
        "F29",
        "F31"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/best-mobile.png",
      "caption": "best mobile"
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies"
    },
    {
      "type": "dom",
      "path": "evidence/detail-dom.json",
      "caption": "detail dom"
    },
    {
      "type": "other",
      "path": "evidence/detail-metadata.json",
      "caption": "detail metadata",
      "findingIds": [
        "F18",
        "F24"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/detail-mobile.png",
      "caption": "detail mobile"
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-crawler.png",
      "caption": "discoverability crawler"
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-rendered.png",
      "caption": "discoverability rendered"
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability.json",
      "caption": "discoverability"
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers",
      "findingIds": [
        "F25",
        "F27"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "heap baseline"
    },
    {
      "type": "heap",
      "path": "evidence/heap-post-scroll.heapsnapshot",
      "caption": "heap post scroll"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-contrast.png",
      "caption": "home contrast",
      "findingIds": [
        "F03"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": [
        "F05"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom",
      "findingIds": [
        "F17"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout",
      "findingIds": [
        "F11"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "findingIds": [
        "F07",
        "F08",
        "F17"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": [
        "F12",
        "F32",
        "F33"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": [
        "F10"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace"
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home"
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "images",
      "findingIds": [
        "F11",
        "F14",
        "F20",
        "F32",
        "F33"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-account-summary.json",
      "caption": "lighthouse account summary",
      "findingIds": [
        "F15",
        "F16",
        "F22"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-account.json",
      "caption": "lighthouse account"
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-detail-extract.json",
      "caption": "lighthouse detail extract",
      "findingIds": [
        "F09",
        "F18",
        "F20",
        "F21"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home-summary.json",
      "caption": "lighthouse home summary",
      "findingIds": [
        "F10",
        "F14",
        "F15",
        "F23"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home.json",
      "caption": "lighthouse home"
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-perf-extract.json",
      "caption": "lighthouse perf extract",
      "findingIds": [
        "F13"
      ]
    },
    {
      "type": "other",
      "path": "evidence/not-found.json",
      "caption": "not found"
    },
    {
      "type": "other",
      "path": "evidence/platform-probe.json",
      "caption": "platform probe",
      "findingIds": [
        "F01",
        "F02",
        "F03",
        "F04",
        "F05",
        "F06",
        "F07",
        "F08",
        "F09",
        "F16"
      ]
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "recon"
    },
    {
      "type": "other",
      "path": "evidence/resilience-agent.json",
      "caption": "resilience agent",
      "findingIds": [
        "F28"
      ]
    },
    {
      "type": "other",
      "path": "evidence/robots.json",
      "caption": "robots"
    },
    {
      "type": "screenshot",
      "path": "evidence/search-desktop.png",
      "caption": "search desktop",
      "findingIds": [
        "F04",
        "F06"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets"
    },
    {
      "type": "other",
      "path": "evidence/seo-scripts-probe.json",
      "caption": "seo scripts probe",
      "findingIds": [
        "F12",
        "F13",
        "F23",
        "F24"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers"
    }
  ],
  "config": {
    "loaded": false
  },
  "coverage": {
    "catalogVersion": "modern-web-guidance@0.0.172",
    "catalogChecksum": "sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7",
    "expected": 58,
    "recorded": 58,
    "judged": 58,
    "blocked": 0,
    "notRun": 0,
    "missing": 0,
    "unknown": 0,
    "duplicates": 0,
    "complete": true
  },
  "checkOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-color-scheme",
      "status": "issues",
      "confidence": "high",
      "method": "Emulated-media screenshot plus computed CSS feature probe",
      "evidence": "The dark-mode screenshot is visually unchanged from the default capture, and the CSS probe found no prefers-color-scheme, color-scheme, or light-dark() use.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "issues",
      "confidence": "medium",
      "method": "Emulated-media screenshot plus computed CSS feature probe",
      "evidence": "The CSS probe found no prefers-reduced-motion rule. The listing currently had no active animations, but player and navigation effects have no preference-aware safeguard.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Emulated-media screenshot plus computed CSS feature probe",
      "evidence": "The prefers-contrast capture retains the default styling, while the CSS probe found no prefers-contrast or forced-colors handling.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-contrast.png",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "medium",
      "method": "DOM/CSS feature probe and representative navigation observation",
      "evidence": "The platform probe found no View Transition CSS, and navigation among listing, search, account, and detail pages performs ordinary visual swaps.",
      "pathIds": [
        "search"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/search-desktop.png"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "high",
      "method": "DOM/CSS feature probe and representative navigation observation",
      "evidence": "CSS probe found no scroll-linked animation and trace observed only one 53.5ms long task; no scroll animation anti-pattern was present.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "DOM/CSS feature probe and representative navigation observation",
      "evidence": "Mobile captures and DOM showed native document scrolling with no custom gesture surface or pointer-driven replacement.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "medium",
      "method": "Screenshots and DOM/CSS navigation probe",
      "evidence": "CSS inspection found no scroll-state queries or scroll-position-aware styling on long listing pages.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Screenshots and DOM/CSS navigation probe",
      "evidence": "No tooltip, popover, or anchored menu was present on the representative paths, so anchored overlay positioning was not applicable.",
      "reason": "No tooltip, popover, or anchored menu was present on the representative paths, so anchored overlay positioning was not applicable.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "issues",
      "confidence": "medium",
      "method": "Screenshots and DOM/CSS navigation probe",
      "evidence": "The search and listing captures show static page swaps; the probe found no directional transition or highlight mechanism.",
      "pathIds": [
        "search"
      ],
      "artifacts": [
        "evidence/search-desktop.png",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "Load screenshots and semantic overlay DOM probe",
      "evidence": "The age-confirmation gate is purpose-specific, clearly labelled, and offers a direct completion action rather than advertising or an upsell.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Load screenshots and semantic overlay DOM probe",
      "evidence": "The load screenshot shows a blocking age-entry overlay, but the DOM probe found zero dialog, popover, details, or aria-modal elements.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Load screenshots and semantic overlay DOM probe",
      "evidence": "Mobile and desktop screenshots prioritize the listing grid and search; permanent header chrome remains compact.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "360x800 layout metrics, screenshot, focus and target-size probe",
      "evidence": "At 360x800 the layout primitive measured scrollWidth=clientWidth=360 and horizontalOverflowPx=0 with a viewport meta present.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "360x800 layout metrics, screenshot, focus and target-size probe",
      "evidence": "Mobile layout has no overflow, but CSS inspection found no container queries or container-type on reused card/search components.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "360x800 layout metrics, screenshot, focus and target-size probe",
      "evidence": "Lighthouse found user-scalable=no/maximum-scale=1, and the probe counted 106 visible interactive elements below 24px in at least one dimension.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-detail-extract.json",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Representative search/detail/account/not-found walkthrough",
      "evidence": "The first viewport clearly presents search, category navigation, content cards, and a direct age-confirmation action.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Representative search/detail/account/not-found walkthrough",
      "evidence": "Search results and a representative detail page loaded successfully from crawlable homepage links without an account wall.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Representative search/detail/account/not-found walkthrough",
      "evidence": "The invalid-route probe showed a localized not-found message and a direct return-to-home link; native form validation focuses the first invalid field.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace summary, layout observer, HAR summary and image audit",
      "evidence": "Lighthouse measured LCP 5.1s and performance 0.74, while the trace’s warmer desktop-like run measured LCP 1.60s, showing a material condition-dependent gap.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home-summary.json",
        "evidence/home-trace-summary.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace summary, layout observer, HAR summary and image audit",
      "evidence": "The mobile layout observer measured CLS 0.272 across six shifts; 99 of 100 images lack width/height attributes.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse, trace summary, layout observer, HAR summary and image audit",
      "evidence": "Trace measured one 53.5ms long task and 3.51ms total blocking time; no sustained main-thread blocking was observed.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace summary, layout observer, HAR summary and image audit",
      "evidence": "HAR/DOM confirmation found a head parser script without async/defer plus additional parser scripts, and the HAR summary lists multiple images without cache headers.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/seo-scripts-probe.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace summary, layout observer, HAR summary and image audit",
      "evidence": "Lighthouse estimated about 594KB unused JavaScript and 211KB unused CSS on the audited load.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-perf-extract.json",
        "evidence/seo-scripts-probe.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, DOM semantics, image audit and screenshots",
      "evidence": "Lighthouse failed button-name, link-name, and image-alt; the image primitive found 98 of 100 images without alt text.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home-summary.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, DOM semantics, image audit and screenshots",
      "evidence": "Lighthouse’s color-contrast audit failed on both homepage and account surfaces.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home-summary.json",
        "evidence/lighthouse-account-summary.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, DOM semantics, image audit and screenshots",
      "evidence": "The homepage probe found no headings and no main element; Lighthouse also failed the account page for lacking one main landmark.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-account-summary.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, DOM semantics, image audit and screenshots",
      "evidence": "Computed body text is 12px across homepage/account DOM captures, and the mobile screenshots show dense metadata and legal text.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/account-dom.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, DOM semantics, image audit and screenshots",
      "evidence": "Lighthouse recorded a viewport meta value with maximum-scale=1 and user-scalable=no. The media detail also exposed no caption track in the sampled video.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/lighthouse-detail-extract.json",
        "evidence/detail-metadata.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse best-practices and DOM/asset inspection",
      "evidence": "Lighthouse captured a Google FedCM NetworkError and a “Not signed in with the identity provider” console message during account load.",
      "pathIds": [
        "account"
      ],
      "artifacts": [
        "evidence/account-console-errors.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse best-practices and DOM/asset inspection",
      "evidence": "The image audit found 99 images without dimensions; Lighthouse reported the deprecated internal cast-button selector.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse-detail-extract.json"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse best-practices and DOM/asset inspection",
      "evidence": "Lighthouse found missing/404 source maps for large first-party, HLS, and verification scripts, plus a deprecated API warning.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-detail-extract.json"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "issues",
      "confidence": "high",
      "method": "Discoverability primitive, Lighthouse SEO, raw robots and metadata probes",
      "evidence": "Lighthouse SEO scored the account page 0.92 but specifically failed meta-description; homepage and detail titles were descriptive.",
      "pathIds": [
        "account"
      ],
      "artifacts": [
        "evidence/lighthouse-account-summary.json"
      ],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "Discoverability primitive, Lighthouse SEO, raw robots and metadata probes",
      "evidence": "Lighthouse failed crawlable-anchors; the DOM probe counted four href anchors with empty names and one anchor without href.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home-summary.json",
        "evidence/seo-scripts-probe.json"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Discoverability primitive, Lighthouse SEO, raw robots and metadata probes",
      "evidence": "Homepage and detail metadata probes found hreflang alternates but no rel=canonical URL.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/seo-scripts-probe.json",
        "evidence/detail-metadata.json"
      ],
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "Discoverability primitive, Lighthouse SEO, raw robots and metadata probes",
      "evidence": "The detail page exposes VideoObject JSON-LD, matching Open Graph video metadata, and localized hreflang alternates.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, secrets, HAR and account/auth probes",
      "evidence": "Headers show HTTPS and CSP, but no HSTS or nosniff; CSP allows unsafe-inline and unsafe-eval.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F25"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "pass",
      "confidence": "high",
      "method": "Headers, cookies, trackers, secrets, HAR and account/auth probes",
      "evidence": "Tracker capture found no known tracker domains; four third-party origins were mainly thumbnail CDNs, and the only cookie was first-party Secure and HttpOnly.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, secrets, HAR and account/auth probes",
      "evidence": "The account DOM exposes email/password forms with no WebAuthn/passkey UI or source marker; no permission prompt appeared on load.",
      "pathIds": [
        "account"
      ],
      "artifacts": [
        "evidence/account-probe.json",
        "evidence/account-mobile.png"
      ],
      "findingIds": [
        "F26"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, secrets, HAR and account/auth probes",
      "evidence": "Headers lack Permissions-Policy and HSTS, use no-referrer-when-downgrade, and rely on X-Frame-Options without a CSP frame-ancestors directive.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F27"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "No-JS discoverability, manifest/service-worker probe and invalid-route exercise",
      "evidence": "Discoverability measured 98% raw-HTML content coverage, isJsShell=false, and visually captured a populated crawler view.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "No-JS discoverability, manifest/service-worker probe and invalid-route exercise",
      "evidence": "Representative listing, account, and detail paths loaded without clipped overlay/menu failures; error recovery remained navigable.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "No-JS discoverability, manifest/service-worker probe and invalid-route exercise",
      "evidence": "A manifest exists, but no service-worker registration was found and its start_url points to xvideos.com rather than the audited .es locale.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/resilience-agent.json"
      ],
      "findingIds": [
        "F28"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "No-JS discoverability, manifest/service-worker probe and invalid-route exercise",
      "evidence": "The invalid route rendered a localized not-found state with a visible return-to-home recovery action.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "lang/hreflang and rendered locale-data inspection",
      "evidence": "HTML lang is es and pages expose extensive locale-specific hreflang alternates; the sampled left-to-right Spanish layout reads correctly.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "lang/hreflang and rendered locale-data inspection",
      "evidence": "Rendered Spanish surfaces use localized decimal grouping and translated labels; no contradictory locale formatting was observed.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "lang/hreflang and rendered locale-data inspection",
      "evidence": "The sampled public listing, account, and media surfaces exposed no user-facing scheduled time or time-zone-sensitive workflow.",
      "reason": "The sampled public listing, account, and media surfaces exposed no user-facing scheduled time or time-zone-sensitive workflow.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "Age/account screenshots, consent defaults and invalid-form exercise",
      "evidence": "The age gate states its purpose and terms, marketing is unchecked by default, and account consent labels are visible.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "issues",
      "confidence": "high",
      "method": "Age/account screenshots, consent defaults and invalid-form exercise",
      "evidence": "Submitting empty Spanish sign-in fields yields English native messages, no aria-invalid, and zero aria-live/alert regions, although focus moves to the first invalid field.",
      "pathIds": [
        "account"
      ],
      "artifacts": [
        "evidence/account-validation.json"
      ],
      "findingIds": [
        "F29"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Age/account screenshots, consent defaults and invalid-form exercise",
      "evidence": "Email, username, and current-password fields on the account page have empty autocomplete values; only new-password is declared.",
      "pathIds": [
        "account"
      ],
      "artifacts": [
        "evidence/account-probe.json"
      ],
      "findingIds": [
        "F30"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "issues",
      "confidence": "high",
      "method": "Age/account screenshots, consent defaults and invalid-form exercise",
      "evidence": "The account path offers password sign-in/recovery only; marketing is opt-in and terms are visible, but no passkey management or reauthentication surface was found.",
      "pathIds": [
        "account"
      ],
      "artifacts": [
        "evidence/account-probe.json",
        "evidence/account-validation.json"
      ],
      "findingIds": [
        "F31"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "HAR, image audit, trace and tracker inventory",
      "evidence": "All 100 images lack srcset, 99 use legacy formats, and 90 below-fold images are not lazy-loaded.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F32"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "high",
      "method": "HAR, image audit, trace and tracker inventory",
      "evidence": "Trace found only 3.51ms blocking time and tracker evidence showed no known analytics suite; no persistent background processing was observed.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "HAR, image audit, trace and tracker inventory",
      "evidence": "HAR captured 121 requests and 2.79MB transferred before video playback, including 106 images/1.69MB and 90 below-fold images loaded eagerly.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F33"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "WebMCP/on-device-AI capability probe and contextual applicability judgement",
      "evidence": "Agent-facing capabilities are emerging and no declared intent or transactional agent surface was present; absence is treated as an opportunity, not a failure.",
      "reason": "Agent-facing capabilities are emerging and no declared intent or transactional agent surface was present; absence is treated as an opportunity, not a failure.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "WebMCP/on-device-AI capability probe and contextual applicability judgement",
      "evidence": "No summarisation or language-model task was part of the representative user journeys, so on-device inference was not applicable.",
      "reason": "No summarisation or language-model task was part of the representative user journeys, so on-device inference was not applicable.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "Baseline and post-interaction heap summaries after ten scroll cycles",
      "evidence": "After ten full-page scroll cycles, heap self-size fell from 26,887,370 to 26,868,398 bytes while node count changed only +405, showing no retained-growth signal.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "Baseline and post-interaction heap summaries after ten scroll cycles",
      "evidence": "Baseline heap was 26.9MB self-size and 375,406 nodes for a 100-card media listing; this remained bounded after interaction.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Baseline and post-interaction heap summaries after ten scroll cycles",
      "evidence": "Before/after heap summaries remained effectively flat after ten scroll cycles, with no aggregate retention trend suggesting accumulating nodes/listeners.",
      "pathIds": [
        "home"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01",
        "F02",
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05",
        "F06"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F08",
        "F09"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F10",
        "F11",
        "F12",
        "F13"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F14",
        "F15",
        "F16",
        "F17",
        "F18"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F19",
        "F20",
        "F21"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F22",
        "F23",
        "F24"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F25",
        "F26",
        "F27"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F28"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F29",
        "F30",
        "F31"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F32",
        "F33"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "Agent-facing capabilities are emerging and no declared intent or transactional agent surface was present; absence is treated as an opportunity, not a failure. No summarisation or language-model task was part of the representative user journeys, so on-device inference was not applicable."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and primary discovery listing; represents the main content template and age-entry state.",
      "url": "https://www.xvideos.es/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-contrast: more",
        "prefers-reduced-motion: reduce",
        "JavaScript disabled"
      ],
      "result": "issues"
    },
    {
      "id": "best-listing",
      "description": "Best-content listing; represents alternate index/listing pages sharing the card grid.",
      "url": "https://www.xvideos.es/best",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "search",
      "description": "Search results reached through the homepage search form; represents the primary find-content flow.",
      "url": "https://www.xvideos.es/?k=popular",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "detail",
      "description": "Representative video detail/player page; covers media, metadata, captions, and content-consumption UI.",
      "url": "https://www.xvideos.es/video.opbhdee0d96/50654647/0/our_stepbrother_helps_us_win_an_argument_with_his_dick.",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "account",
      "description": "Sign-in/sign-up/recovery surface; covers forms, authentication, error handling, and input assistance.",
      "url": "https://www.xvideos.es/account",
      "conditions": [
        "viewport: 360x800",
        "empty required-field submission"
      ],
      "result": "issues"
    },
    {
      "id": "not-found",
      "description": "Deliberately invalid route; represents HTTP/error recovery.",
      "url": "https://www.xvideos.es/definitely-not-a-real-route-web-uplift",
      "conditions": [
        "default"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "confidence": "high",
      "summary": "The interface does not honor the user’s dark-theme preference.",
      "evidence": "The dark-mode screenshot is visually unchanged from the default capture, and the CSS probe found no prefers-color-scheme, color-scheme, or light-dark() use.",
      "suggestedFix": "Declare color-scheme and map surfaces/text to preference-aware color tokens, following dark-mode guidance.",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/platform-probe.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F02",
      "severity": "low",
      "confidence": "medium",
      "summary": "Reduced-motion preferences are not handled explicitly.",
      "evidence": "The CSS probe found no prefers-reduced-motion rule. The listing currently had no active animations, but player and navigation effects have no preference-aware safeguard.",
      "suggestedFix": "Add a prefers-reduced-motion: reduce layer that disables non-essential transitions, smooth scrolling, and auto-advance.",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-reduced-motion",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F03",
      "severity": "medium",
      "confidence": "high",
      "summary": "High-contrast preferences are not explicitly supported.",
      "evidence": "The prefers-contrast capture retains the default styling, while the CSS probe found no prefers-contrast or forced-colors handling.",
      "suggestedFix": "Add forced-colors and prefers-contrast adaptations for controls, borders, icons, and focus indicators.",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-contrast",
      "guidanceId": "adapt-scrollbar-to-contrast-preferences",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-contrast.png",
        "evidence/platform-probe.json"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F04",
      "severity": "low",
      "confidence": "medium",
      "summary": "Route changes use abrupt full-document swaps.",
      "evidence": "The platform probe found no View Transition CSS, and navigation among listing, search, account, and detail pages performs ordinary visual swaps.",
      "suggestedFix": "Progressively enhance same-origin navigation with cross-document View Transitions and a no-motion fallback.",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "directional-navigation-transitions",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/search-desktop.png"
      ],
      "effort": "medium",
      "pathId": "search",
      "url": "https://www.xvideos.es/?k=popular"
    },
    {
      "id": "F05",
      "severity": "low",
      "confidence": "medium",
      "summary": "Page chrome does not respond to scroll state.",
      "evidence": "CSS inspection found no scroll-state queries or scroll-position-aware styling on long listing pages.",
      "suggestedFix": "Use scroll-state-aware CSS for sticky navigation or a compact header where that improves orientation.",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "scroll-position-aware-elements",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/home-desktop.png"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F06",
      "severity": "low",
      "confidence": "medium",
      "summary": "Navigation does not visually guide attention after a route or in-page state change.",
      "evidence": "The search and listing captures show static page swaps; the probe found no directional transition or highlight mechanism.",
      "suggestedFix": "Use directional transitions or a focused/highlighted destination state so users can follow navigation changes.",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "directs-attention",
      "guidanceId": "directional-navigation-transitions",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/search-desktop.png",
        "evidence/platform-probe.json"
      ],
      "effort": "medium",
      "pathId": "search",
      "url": "https://www.xvideos.es/?k=popular"
    },
    {
      "id": "F07",
      "severity": "medium",
      "confidence": "high",
      "summary": "The age-entry overlay is implemented without a semantic dialog primitive.",
      "evidence": "The load screenshot shows a blocking age-entry overlay, but the DOM probe found zero dialog, popover, details, or aria-modal elements.",
      "suggestedFix": "Implement the age gate as a real dialog with an accessible name, trapped initial focus, and explicit completion behavior.",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/platform-probe.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F08",
      "severity": "low",
      "confidence": "high",
      "summary": "Reusable listing components are responsive only at page level.",
      "evidence": "Mobile layout has no overflow, but CSS inspection found no container queries or container-type on reused card/search components.",
      "suggestedFix": "Use container queries where cards or controls appear in differently sized regions, retaining viewport fallbacks.",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "css",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/platform-probe.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F09",
      "severity": "high",
      "confidence": "high",
      "summary": "Zoom is disabled and many interactive targets are too small.",
      "evidence": "Lighthouse found user-scalable=no/maximum-scale=1, and the probe counted 106 visible interactive elements below 24px in at least one dimension.",
      "suggestedFix": "Remove user-scalable=no and maximum-scale restrictions; enlarge controls to accessible target sizes and preserve visible focus.",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/lighthouse-detail-extract.json",
        "evidence/platform-probe.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F10",
      "severity": "high",
      "confidence": "high",
      "summary": "Mobile loading misses the good LCP range.",
      "evidence": "Lighthouse measured LCP 5.1s and performance 0.74, while the trace’s warmer desktop-like run measured LCP 1.60s, showing a material condition-dependent gap.",
      "suggestedFix": "Prioritize the LCP candidate, reduce initial image/script competition, and verify mobile LCP under repeatable throttling.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/lighthouse-home-summary.json",
        "evidence/home-trace-summary.json"
      ],
      "effort": "large",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F11",
      "severity": "high",
      "confidence": "high",
      "summary": "The mobile listing shifts substantially during load.",
      "evidence": "The mobile layout observer measured CLS 0.272 across six shifts; 99 of 100 images lack width/height attributes.",
      "suggestedFix": "Reserve intrinsic image space with width/height or aspect-ratio and stabilize late banners/content.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "visual-stability",
      "guidanceId": "performance",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/images.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F12",
      "severity": "medium",
      "confidence": "high",
      "summary": "Critical delivery includes parser-blocking scripts and weak image caching.",
      "evidence": "HAR/DOM confirmation found a head parser script without async/defer plus additional parser scripts, and the HAR summary lists multiple images without cache headers.",
      "suggestedFix": "Defer non-critical scripts, shorten the critical chain, and give immutable thumbnails effective cache headers.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "performance",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/seo-scripts-probe.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F13",
      "severity": "medium",
      "confidence": "high",
      "summary": "The homepage ships substantial unused code.",
      "evidence": "Lighthouse estimated about 594KB unused JavaScript and 211KB unused CSS on the audited load.",
      "suggestedFix": "Split page-specific code and styles, remove duplicate jQuery delivery, and conditionally load player/account dependencies.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "defer-rendering-heavy-content",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/lighthouse-perf-extract.json",
        "evidence/seo-scripts-probe.json"
      ],
      "effort": "large",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F14",
      "severity": "high",
      "confidence": "high",
      "summary": "Many controls and images lack accessible names or alternatives.",
      "evidence": "Lighthouse failed button-name, link-name, and image-alt; the image primitive found 98 of 100 images without alt text.",
      "suggestedFix": "Give every control a discernible name and each meaningful thumbnail an appropriate alt; use empty alt only for decorative images.",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/lighthouse-home-summary.json",
        "evidence/images.json"
      ],
      "effort": "large",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F15",
      "severity": "high",
      "confidence": "high",
      "summary": "Text and UI contrast fail WCAG minimums.",
      "evidence": "Lighthouse’s color-contrast audit failed on both homepage and account surfaces.",
      "suggestedFix": "Adjust foreground/background tokens to meet WCAG AA, including subdued metadata and form states.",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/lighthouse-home-summary.json",
        "evidence/lighthouse-account-summary.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F16",
      "severity": "medium",
      "confidence": "high",
      "summary": "Pages lack a logical heading and main-landmark structure.",
      "evidence": "The homepage probe found no headings and no main element; Lighthouse also failed the account page for lacking one main landmark.",
      "suggestedFix": "Add one descriptive h1 per page template, logical subordinate headings, and a main landmark around primary content.",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "html",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-account-summary.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F17",
      "severity": "medium",
      "confidence": "high",
      "summary": "Core text is rendered too small and densely for comfortable reading.",
      "evidence": "Computed body text is 12px across homepage/account DOM captures, and the mobile screenshots show dense metadata and legal text.",
      "suggestedFix": "Increase base and metadata sizing with fluid type, adequate line height, and more forgiving wrapping.",
      "principleId": "be-inclusive",
      "principleCheckId": "legible-text",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/account-dom.json",
        "evidence/home-mobile.png"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F18",
      "severity": "high",
      "confidence": "high",
      "summary": "User zoom is prevented.",
      "evidence": "Lighthouse recorded a viewport meta value with maximum-scale=1 and user-scalable=no. The media detail also exposed no caption track in the sampled video.",
      "suggestedFix": "Allow pinch zoom and ensure media templates expose captions or an equivalent when captions exist.",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/lighthouse-detail-extract.json",
        "evidence/detail-metadata.json"
      ],
      "effort": "small",
      "pathId": "detail",
      "url": "https://www.xvideos.es/video.opbhdee0d96/50654647/0/our_stepbrother_helps_us_win_an_argument_with_his_dick."
    },
    {
      "id": "F19",
      "severity": "low",
      "confidence": "high",
      "summary": "The account page logs identity-provider errors.",
      "evidence": "Lighthouse captured a Google FedCM NetworkError and a “Not signed in with the identity provider” console message during account load.",
      "suggestedFix": "Treat expected signed-out FedCM outcomes without console errors and log only actionable failures.",
      "principleId": "follow-best-practices",
      "principleCheckId": "no-console-errors",
      "guidanceId": "html",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/account-console-errors.json"
      ],
      "effort": "small",
      "pathId": "account",
      "url": "https://www.xvideos.es/account"
    },
    {
      "id": "F20",
      "severity": "medium",
      "confidence": "high",
      "summary": "Document assets omit sizing and use a deprecated media-control selector.",
      "evidence": "The image audit found 99 images without dimensions; Lighthouse reported the deprecated internal cast-button selector.",
      "suggestedFix": "Add intrinsic image dimensions and replace the internal selector with disableRemotePlayback where appropriate.",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse-detail-extract.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F21",
      "severity": "low",
      "confidence": "high",
      "summary": "Browser-development hygiene is incomplete.",
      "evidence": "Lighthouse found missing/404 source maps for large first-party, HLS, and verification scripts, plus a deprecated API warning.",
      "suggestedFix": "Publish valid production source maps to controlled endpoints and remove deprecated browser integration hooks.",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/lighthouse-detail-extract.json"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F22",
      "severity": "medium",
      "confidence": "high",
      "summary": "The account template has no meta description.",
      "evidence": "Lighthouse SEO scored the account page 0.92 but specifically failed meta-description; homepage and detail titles were descriptive.",
      "suggestedFix": "Provide a concise, unique description for public account and other indexable templates, or explicitly noindex pages not intended for search.",
      "principleId": "be-discoverable",
      "principleCheckId": "title-and-description",
      "guidanceId": "html",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/lighthouse-account-summary.json"
      ],
      "effort": "small",
      "pathId": "account",
      "url": "https://www.xvideos.es/account"
    },
    {
      "id": "F23",
      "severity": "medium",
      "confidence": "high",
      "summary": "Some links are not crawlable or have no discernible text.",
      "evidence": "Lighthouse failed crawlable-anchors; the DOM probe counted four href anchors with empty names and one anchor without href.",
      "suggestedFix": "Use real href URLs for navigation and descriptive visible or accessible link text.",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "html",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/lighthouse-home-summary.json",
        "evidence/seo-scripts-probe.json"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F24",
      "severity": "medium",
      "confidence": "high",
      "summary": "Canonical signals are absent on sampled public templates.",
      "evidence": "Homepage and detail metadata probes found hreflang alternates but no rel=canonical URL.",
      "suggestedFix": "Add self-referential canonical links that agree with hreflang, sitemap, and preferred clean URLs.",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/seo-scripts-probe.json",
        "evidence/detail-metadata.json"
      ],
      "effort": "small",
      "pathId": "detail",
      "url": "https://www.xvideos.es/video.opbhdee0d96/50654647/0/our_stepbrother_helps_us_win_an_argument_with_his_dick."
    },
    {
      "id": "F25",
      "severity": "high",
      "confidence": "high",
      "summary": "Transport defenses are incomplete and CSP permits unsafe script execution.",
      "evidence": "Headers show HTTPS and CSP, but no HSTS or nosniff; CSP allows unsafe-inline and unsafe-eval.",
      "suggestedFix": "Deploy HSTS and nosniff, then migrate inline/eval code to nonces or hashes and tighten CSP origins.",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/headers.json"
      ],
      "effort": "large",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F26",
      "severity": "high",
      "confidence": "high",
      "summary": "Authentication is password-only on the sampled account surface.",
      "evidence": "The account DOM exposes email/password forms with no WebAuthn/passkey UI or source marker; no permission prompt appeared on load.",
      "suggestedFix": "Offer passkey registration and authentication alongside recovery-safe fallback methods, requesting permissions only in context.",
      "principleId": "be-private-and-secure",
      "principleCheckId": "in-context-permissions-and-modern-auth",
      "guidanceId": "passkey-authentication",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/account-probe.json",
        "evidence/account-mobile.png"
      ],
      "effort": "large",
      "pathId": "account",
      "url": "https://www.xvideos.es/account"
    },
    {
      "id": "F27",
      "severity": "high",
      "confidence": "high",
      "summary": "Defensive browser policies are incomplete.",
      "evidence": "Headers lack Permissions-Policy and HSTS, use no-referrer-when-downgrade, and rely on X-Frame-Options without a CSP frame-ancestors directive.",
      "suggestedFix": "Set a restrictive Permissions-Policy, strict-origin-when-cross-origin or stricter referrer policy, HSTS, and CSP frame-ancestors.",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/headers.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F28",
      "severity": "medium",
      "confidence": "high",
      "summary": "The installed-app/offline story is incomplete and locale-inconsistent.",
      "evidence": "A manifest exists, but no service-worker registration was found and its start_url points to xvideos.com rather than the audited .es locale.",
      "suggestedFix": "Register a scoped service worker with an offline fallback and set a same-origin localized start_url.",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "stabilize-reactive-state",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/resilience-agent.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F29",
      "severity": "medium",
      "confidence": "high",
      "summary": "Form errors are not localized or announced accessibly.",
      "evidence": "Submitting empty Spanish sign-in fields yields English native messages, no aria-invalid, and zero aria-live/alert regions, although focus moves to the first invalid field.",
      "suggestedFix": "Use localized post-interaction validation, mark invalid controls, and announce a concise error summary.",
      "principleId": "be-trustworthy",
      "principleCheckId": "humane-error-handling",
      "guidanceId": "accessible-error-announcement",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/account-validation.json"
      ],
      "effort": "medium",
      "pathId": "account",
      "url": "https://www.xvideos.es/account"
    },
    {
      "id": "F30",
      "severity": "medium",
      "confidence": "high",
      "summary": "Sign-in and sign-up inputs omit autocomplete tokens.",
      "evidence": "Email, username, and current-password fields on the account page have empty autocomplete values; only new-password is declared.",
      "suggestedFix": "Add username/email, current-password, new-password, and other correct autocomplete tokens.",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "autofill-sign-up-form",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/account-probe.json"
      ],
      "effort": "small",
      "pathId": "account",
      "url": "https://www.xvideos.es/account"
    },
    {
      "id": "F31",
      "severity": "medium",
      "confidence": "high",
      "summary": "Account flows do not offer phishing-resistant authentication.",
      "evidence": "The account path offers password sign-in/recovery only; marketing is opt-in and terms are visible, but no passkey management or reauthentication surface was found.",
      "suggestedFix": "Add passkeys and clear reauthentication/account-management controls while preserving honest opt-in defaults.",
      "principleId": "be-trustworthy",
      "principleCheckId": "safe-commercial-and-account-flows",
      "guidanceId": "passkey-reauthentication",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/account-probe.json",
        "evidence/account-validation.json"
      ],
      "effort": "large",
      "pathId": "account",
      "url": "https://www.xvideos.es/account"
    },
    {
      "id": "F32",
      "severity": "high",
      "confidence": "high",
      "summary": "Thumbnail delivery is not responsive or format-efficient.",
      "evidence": "All 100 images lack srcset, 99 use legacy formats, and 90 below-fold images are not lazy-loaded.",
      "suggestedFix": "Serve AVIF/WebP responsive sources with srcset/sizes, dimensions, and native lazy loading below the fold.",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/images.json",
        "evidence/home-summary.json"
      ],
      "effort": "large",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    },
    {
      "id": "F33",
      "severity": "high",
      "confidence": "high",
      "summary": "The initial media/listing budget is disproportionate.",
      "evidence": "HAR captured 121 requests and 2.79MB transferred before video playback, including 106 images/1.69MB and 90 below-fold images loaded eagerly.",
      "suggestedFix": "Virtualize or paginate listings, lazy-load offscreen thumbnails, and enforce per-template third-party/media budgets.",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "modern-web-guidance",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/images.json"
      ],
      "effort": "large",
      "pathId": "home",
      "url": "https://www.xvideos.es/"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Fix accessibility fundamentals",
      "priority": 1,
      "findingIds": [
        "F09",
        "F14",
        "F15",
        "F16",
        "F17",
        "F18"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Reserve image space and modernize thumbnail delivery",
      "priority": 2,
      "findingIds": [
        "F11",
        "F20",
        "F32",
        "F33"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Harden security headers and CSP",
      "priority": 3,
      "findingIds": [
        "F25",
        "F27"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Improve mobile LCP and remove unused/render-blocking code",
      "priority": 4,
      "findingIds": [
        "F10",
        "F12",
        "F13"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Add passkeys and complete account input assistance",
      "priority": 5,
      "findingIds": [
        "F26",
        "F30",
        "F31"
      ],
      "guidanceId": "passkey-authentication",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Localize and announce form errors",
      "priority": 6,
      "findingIds": [
        "F29"
      ],
      "guidanceId": "accessible-error-announcement",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Add preference-aware themes and contrast/motion handling",
      "priority": 7,
      "findingIds": [
        "F01",
        "F02",
        "F03"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Repair metadata and crawlability signals",
      "priority": 8,
      "findingIds": [
        "F22",
        "F23",
        "F24"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Use semantic and guided navigation primitives",
      "priority": 9,
      "findingIds": [
        "F04",
        "F05",
        "F06",
        "F07",
        "F08"
      ],
      "guidanceId": "declarative-dialog-popover-control",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Complete offline/installable behavior and browser hygiene",
      "priority": 10,
      "findingIds": [
        "F19",
        "F21",
        "F28"
      ],
      "guidanceId": "html",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 6,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-23T21-38-29-028Z"
}
