{
  "url": "https://www.fpo.xxx",
  "auditedAt": "2026-07-19T15:56:54.826Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete representative audit of listing, video-detail, sites-index, and error templates. The third-party age-verification flow itself was assessed from its entry state but not completed.",
  "page": {
    "appType": "mpa",
    "framework": "server-rendered custom/PHP-style MPA",
    "notes": "Public adult-media listing with an external age-verification gate. Representative templates: home listing, video detail, sites index, and 404 recovery. Not covered: account creation/login, uploads, payments, or completion of third-party identity/age verification."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "lighthouse",
    "axe-core",
    "heap-summary",
    "robots/sitemap HTTP probes",
    "Modern Web Guidance"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "same-document-transitions",
    "shrinking-header-on-scroll",
    "declarative-dialog-popover-control",
    "size-aware-styling",
    "forms",
    "performance",
    "optimize-image-priority",
    "improve-text-layout-and-legibility",
    "security",
    "privacy",
    "stabilize-reactive-state",
    "translator",
    "batch-analytics-events",
    "webmcp"
  ],
  "artifacts": [
    {
      "type": "other",
      "path": "evidence/404-status.txt",
      "caption": "404 status"
    },
    {
      "type": "other",
      "path": "evidence/404.json",
      "caption": "404"
    },
    {
      "type": "other",
      "path": "evidence/agent-i18n-links.json",
      "caption": "agent i18n links"
    },
    {
      "type": "other",
      "path": "evidence/axe.json",
      "caption": "axe"
    },
    {
      "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"
    },
    {
      "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/focus-targets.json",
      "caption": "focus targets"
    },
    {
      "type": "other",
      "path": "evidence/guidance-consulted.txt",
      "caption": "guidance consulted"
    },
    {
      "type": "other",
      "path": "evidence/guidance-list.json",
      "caption": "guidance list"
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers"
    },
    {
      "type": "heap",
      "path": "evidence/heap-after-summary.json",
      "caption": "heap after summary"
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline-summary.json",
      "caption": "heap baseline summary"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-contrast.png",
      "caption": "home contrast"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop"
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom"
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile"
    },
    {
      "type": "other",
      "path": "evidence/home-summary.json",
      "caption": "home summary"
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary"
    },
    {
      "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"
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "lighthouse"
    },
    {
      "type": "other",
      "path": "evidence/platform-probe.json",
      "caption": "platform probe"
    },
    {
      "type": "other",
      "path": "evidence/preferences-metadata.json",
      "caption": "preferences metadata"
    },
    {
      "type": "other",
      "path": "evidence/resilience.json",
      "caption": "resilience"
    },
    {
      "type": "other",
      "path": "evidence/response-headers.txt",
      "caption": "response headers"
    },
    {
      "type": "other",
      "path": "evidence/robots.json",
      "caption": "robots"
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets"
    },
    {
      "type": "other",
      "path": "evidence/shadow-modal.json",
      "caption": "shadow modal"
    },
    {
      "type": "other",
      "path": "evidence/sitemap.json",
      "caption": "sitemap"
    },
    {
      "type": "layout",
      "path": "evidence/sites-layout.json",
      "caption": "sites layout"
    },
    {
      "type": "screenshot",
      "path": "evidence/sites-mobile.png",
      "caption": "sites mobile"
    },
    {
      "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": "Dark-media screenshot plus computed-style probe",
      "evidence": "Dark emulation leaves color-scheme normal and the same white page/blue-white age gate as light mode.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/preferences-metadata.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Emulated-media runtime probe",
      "evidence": "Under prefers-reduced-motion: reduce, document.getAnimations() returned no active animations.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences-metadata.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Forced-colors screenshot",
      "evidence": "Forced-colors/high-contrast capture keeps the age-verification text and Start control visible.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-contrast.png"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Stylesheet/runtime inspection",
      "evidence": "CSS inspection found no view-transition rules and navigation is conventional full-document replacement.",
      "pathIds": [
        "home",
        "detail",
        "sites"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM and stylesheet inspection",
      "evidence": "The representative pages contain no parallax, scrollytelling, or scroll-linked animation to implement.",
      "pathIds": [
        "home",
        "detail",
        "sites"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/platform-probe.json"
      ],
      "reason": "No scroll-linked motion exists on these templates."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM and stylesheet inspection",
      "evidence": "No swipe, pull, carousel, drag, or other gesture-driven surface was present on the representative pages.",
      "pathIds": [
        "home",
        "detail",
        "sites"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/platform-probe.json"
      ],
      "reason": "No gesture-driven interaction exists on the audited templates."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Mobile layout plus stylesheet inspection",
      "evidence": "The long 6,562 px mobile listing has static navigation and no scroll-state query, progress indicator, or position-aware chrome.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM inspection",
      "evidence": "No tooltip, popover, or contextual menu requiring anchored placement appeared on the audited templates.",
      "pathIds": [
        "home",
        "detail",
        "sites"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/platform-probe.json"
      ],
      "reason": "No anchored overlay surface exists; the age gate is a centered modal, not an anchored overlay."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "issues",
      "confidence": "high",
      "method": "Link and focus probes",
      "evidence": "Primary icon navigation links have no text, title, or accessible label, and focused controls receive no visible outline, so location and focus movement are not cued.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/agent-i18n-links.json",
        "evidence/focus-targets.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "First-load screenshots",
      "evidence": "The initial viewport is completely obscured by a third-party age-verification overlay before any content can be inspected; only an unexplained Start action is offered.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Screenshot plus DOM primitive",
      "evidence": "The rendered DOM contains no dialog, popover, or details primitive while the screenshot shows a modal age gate.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "404 DOM text plus screenshots",
      "evidence": "The 404 state begins with multiple promotional/ad calls before the error and recovery content, while the first viewport is dominated by third-party gate chrome.",
      "pathIds": [
        "error"
      ],
      "artifacts": [
        "evidence/404.json",
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Mobile layout metrics",
      "evidence": "At 360x800, both home and sites templates reported 0 px horizontal overflow with viewport meta present.",
      "pathIds": [
        "home",
        "detail",
        "sites"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/sites-layout.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "CSS/computed-style inspection",
      "evidence": "Stylesheet inspection found no @container rules (container-type normal); reused cards adapt only through page-wide CSS.",
      "pathIds": [
        "home",
        "detail",
        "sites"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Programmatic focus-state probe",
      "evidence": "Focus probe found outline-style none and no replacement box-shadow on links, search input, menu button, and content cards.",
      "pathIds": [
        "home",
        "detail",
        "sites"
      ],
      "artifacts": [
        "evidence/focus-targets.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Metadata/heading and link inspection",
      "evidence": "Title, description, listing cards, and video-detail H1 clearly identify the site purpose and primary content choices.",
      "pathIds": [
        "home",
        "detail",
        "sites"
      ],
      "artifacts": [
        "evidence/preferences-metadata.json",
        "evidence/detail-metadata.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "issues",
      "confidence": "high",
      "method": "Entry and detail screenshots",
      "evidence": "The primary watch flow is intercepted on load by a third-party age check that exposes only “Start”, with no up-front explanation of steps, data use, alternatives, or return path.",
      "pathIds": [
        "home",
        "detail",
        "sites"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/detail-mobile.png"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "404 route probe",
      "evidence": "A nonexistent route renders a clear “404 / Page not found” state and retains working navigation/content links.",
      "pathIds": [
        "error"
      ],
      "artifacts": [
        "evidence/404.json",
        "evidence/404-status.txt"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse plus DevTools trace",
      "evidence": "Lighthouse measured LCP 5.8 s (poor), CLS 0.047, and TBT 20 ms; trace corroborated LCP 3.45 s with no long tasks.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Layout observer plus Lighthouse",
      "evidence": "Mobile layout observed CLS 0.018 and Lighthouse measured CLS 0.047, both in the good range.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Trace and Lighthouse",
      "evidence": "Trace recorded zero long tasks and 0 ms TBT; Lighthouse TBT was 20 ms.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "HAR summary confirmed against script attributes plus Lighthouse",
      "evidence": "HAR found missing cache headers on core CSS, JS, font, logo, and thumbnails; Lighthouse estimated 930 ms render-blocking savings.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/platform-probe.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse coverage diagnostics plus HAR",
      "evidence": "Lighthouse estimated 125 KiB unused JavaScript and 18 KiB unused CSS; third-party scripts account for substantial transfer cost.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "axe and DOM probes",
      "evidence": "axe reports a nameless menu button and untitled iframe; the search input has no label, and several nav anchors have no accessible text.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/axe.json",
        "evidence/platform-probe.json",
        "evidence/agent-i18n-links.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "axe color-contrast analysis",
      "evidence": "axe measured repeated listing metadata at 2.42:1 and 1.89:1 against white, below the 4.5:1 requirement.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/axe.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "axe plus keyboard-focus probe",
      "evidence": "axe found no main landmark and no H1 on home; focus probe found no visible focus indicator on tested controls.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/axe.json",
        "evidence/focus-targets.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "issues",
      "confidence": "high",
      "method": "Computed-style, screenshot, and contrast inspection",
      "evidence": "Computed styles show 12 px navigation/card metadata; axe confirms low-contrast metadata, reducing reading comfort.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/axe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Media and target geometry probe",
      "evidence": "The detail page exposes videos with no caption/subtitle tracks; top links are only about 14 px tall, despite otherwise successful mobile reflow.",
      "pathIds": [
        "home",
        "detail",
        "sites"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/detail-metadata.json",
        "evidence/focus-targets.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse console audit and HAR",
      "evidence": "Lighthouse console-error audit passed; observed failed age-verification analytics requests were network aborts rather than uncaught page exceptions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-summary.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "DOM and image audit",
      "evidence": "Doctype and UTF-8 are valid, but image audit found 2 images without dimensions and 21 without responsive srcset.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse best-practices diagnostics",
      "evidence": "Lighthouse reports three BFCache failure reasons and DevTools inspector issues.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Metadata probes",
      "evidence": "Home and detail pages have descriptive, route-specific titles and meta descriptions.",
      "pathIds": [
        "home",
        "detail",
        "sites"
      ],
      "artifacts": [
        "evidence/preferences-metadata.json",
        "evidence/detail-metadata.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "DOM link probe, robots, and Lighthouse",
      "evidence": "Viewport meta and robots are sound, but Sign up, Log in, and Support are anchors without href; Lighthouse crawlable-anchors failed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/agent-i18n-links.json",
        "evidence/robots.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "Metadata, robots, sitemap, and response probes",
      "evidence": "Home/detail canonical URLs are present, robots permits public content, sitemap index exists, and tested pages return successful indexable responses.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences-metadata.json",
        "evidence/detail-metadata.json",
        "evidence/robots.json",
        "evidence/sitemap.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "Structured metadata probe",
      "evidence": "Detail page supplies breadcrumb JSON-LD and comprehensive Open Graph video metadata matching visible content.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/detail-metadata.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Header and cookie audit",
      "evidence": "HTTPS is used, but CSP, HSTS, and nosniff are absent; all seven cookies were flagged insecure, including PHPSESSID without Secure or HttpOnly.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Tracker and HAR audits",
      "evidence": "Load contacted 14 third-party origins, including analytics and ad-tech trackers; 19 third-party requests transferred 219,033 bytes.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "issues",
      "confidence": "high",
      "method": "Auth-link, script, and entry-state inspection",
      "evidence": "Login/signup surfaces exist, but runtime/source inspection found no WebAuthn/passkey capability; the third-party age check starts without data-use context.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Security-header audit",
      "evidence": "X-Frame-Options is present, but HSTS, Referrer-Policy, Permissions-Policy, CSP/frame-ancestors, and nosniff are absent.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F25"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Raw HTML versus rendered DOM comparison",
      "evidence": "Discoverability comparison found 99% raw-HTML content coverage and no empty JS shell.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/discoverability-rendered.png",
        "evidence/discoverability-crawler.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Discoverability, layout, and DOM inspection",
      "evidence": "MPA content renders from HTML, mobile templates have no overflow, and no clipped contextual menus were present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/home-mobile-layout.json",
        "evidence/sites-layout.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Manifest/service-worker probe",
      "evidence": "This streaming/catalog site is intrinsically network-dependent and is not positioned as an installable app; the manifest has no start_url and no service worker is registered.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/resilience.json",
        "evidence/404.json"
      ],
      "reason": "Offline playback/installability is not a reasonable requirement for this network-dependent media catalog."
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "HTTP status plus rendered error-state probe",
      "evidence": "A tested missing route returns HTTP 404 and shows a clear page-not-found state with navigation options rather than a blank shell.",
      "pathIds": [
        "error"
      ],
      "artifacts": [
        "evidence/404.json",
        "evidence/404-status.txt"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "DOM and stylesheet text probe",
      "evidence": "html lang=en is correct, but stylesheet inspection counted 195 physical left/right declarations and zero logical inline/block properties.",
      "pathIds": [
        "home",
        "detail",
        "sites"
      ],
      "artifacts": [
        "evidence/preferences-metadata.json",
        "evidence/agent-i18n-links.json"
      ],
      "findingIds": [
        "F26"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered title/card metadata inspection",
      "evidence": "Visible dates use hard-coded forms such as 17/7/26, with no locale selection or locale-aware rendering signal.",
      "pathIds": [
        "home",
        "detail",
        "sites"
      ],
      "artifacts": [
        "evidence/preferences-metadata.json",
        "evidence/detail-metadata.json"
      ],
      "findingIds": [
        "F27"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Content and metadata inspection",
      "evidence": "No scheduled events, timestamps, recurring intervals, or timezone-sensitive user data occur in the representative templates.",
      "pathIds": [
        "home",
        "detail",
        "sites"
      ],
      "artifacts": [
        "evidence/preferences-metadata.json",
        "evidence/detail-metadata.json"
      ],
      "reason": "The audited catalog content has publication-style date labels but no timezone-sensitive event behavior."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "First-load screenshot and 404 content probe",
      "evidence": "The 404 state places multiple sexually charged promotional calls before recovery content, and the age gate provides only “Start” without explaining the consequence.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/404.json"
      ],
      "findingIds": [
        "F28"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "pass",
      "confidence": "high",
      "method": "404 route probe",
      "evidence": "The tested 404 state is plainly named and keeps navigation available without blaming the user.",
      "pathIds": [
        "error"
      ],
      "artifacts": [
        "evidence/404.json",
        "evidence/404-status.txt"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Form and link semantics probe",
      "evidence": "The search field has no programmatic label and no visible instruction beyond a generic Search value; signup/login are href-less scripted anchors.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/agent-i18n-links.json"
      ],
      "findingIds": [
        "F29"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "issues",
      "confidence": "high",
      "method": "Initial screenshot and auth-link inspection",
      "evidence": "Signup/login and age verification are offered without visible privacy, data-use, cancellation, or account-flow context in the initial state.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F30"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Image audit",
      "evidence": "Image audit found 17 below-fold images without native lazy loading, 21 without srcset, and 8 legacy-format images.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json"
      ],
      "findingIds": [
        "F31"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse and HAR",
      "evidence": "Lighthouse reports 125 KiB unused JavaScript and 18 KiB unused CSS, while analytics/ad scripts run before the gate is completed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F32"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "HAR and tracker audits",
      "evidence": "Third parties account for 19 requests and 219,033 transferred bytes; 14 third-party origins include ad-tech and analytics.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F33"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM capability probe",
      "evidence": "The site is a conventional public media catalog with no declared agent workflow or in-page generative feature.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/agent-i18n-links.json"
      ],
      "reason": "No agent-facing task or on-device inference feature is part of the site intent."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM capability probe",
      "evidence": "The site is a conventional public media catalog with no declared agent workflow or in-page generative feature.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/agent-i18n-links.json"
      ],
      "reason": "No agent-facing task or on-device inference feature is part of the site intent."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Interaction reconnaissance and heap attempt",
      "evidence": "The third-party age gate prevented a safe repeatable first-party interaction; synthetic scrolling was not treated as a valid leak workflow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline-summary.json",
        "evidence/heap-after-summary.json"
      ],
      "reason": "No representative repeatable first-party interaction was reachable without completing external age verification."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "Heap summary comparison",
      "evidence": "Independent loaded-state heap summaries were about 8.02 MB and 8.03 MB, a ~15.7 KB difference, with no evidence of an unbounded footprint.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline-summary.json",
        "evidence/heap-after-summary.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Heap summary comparison",
      "evidence": "Single-state heap summaries showed only a 201-node difference across independent loads; no Detached constructor growth or repeated-listener signal was observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline-summary.json",
        "evidence/heap-after-summary.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03",
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05",
        "F06",
        "F07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F08",
        "F09"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "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"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F22",
        "F23",
        "F24",
        "F25"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F26",
        "F27"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F28",
        "F29",
        "F30"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F31",
        "F32",
        "F33"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "No agent-facing task or on-device inference feature is part of the site intent. No agent-facing task or on-device inference feature is part of the site intent."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage/new-video listing: primary discovery surface, preference, responsive, security, performance, and accessibility checks.",
      "url": "https://www.fpo.xxx",
      "conditions": [
        "1440x1000",
        "360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "forced-colors: active",
        "keyboard focus"
      ],
      "result": "issues"
    },
    {
      "id": "detail",
      "description": "Representative video detail: primary watch journey, media accessibility, metadata, and content template.",
      "url": "https://www.fpo.xxx/video/1234854/lena-the-plug-non-stop-one-hour-fuck-17-7-26/",
      "conditions": [
        "360x800"
      ],
      "result": "issues"
    },
    {
      "id": "sites",
      "description": "Sites index: distinct index/listing template and mobile reflow.",
      "url": "https://www.fpo.xxx/sites/",
      "conditions": [
        "360x800"
      ],
      "result": "pass"
    },
    {
      "id": "error",
      "description": "Nonexistent route: HTTP/error recovery behavior.",
      "url": "https://www.fpo.xxx/definitely-not-a-real-route-404/",
      "conditions": [
        "default"
      ],
      "result": "issues"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "confidence": "high",
      "summary": "Honours prefers-color-scheme: a usable dark mode exists and is driven by the user's preference (color-scheme / prefers-color-scheme / light-dark()), not hard-coded light only.",
      "evidence": "Dark emulation leaves color-scheme normal and the same white page/blue-white age gate as light mode.",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/preferences-metadata.json"
      ],
      "suggestedFix": "Address this outcome using current dark-mode guidance, then repeat the same dark-media screenshot plus computed-style probe evidence.",
      "effort": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F02",
      "severity": "low",
      "confidence": "high",
      "summary": "State and route changes use View Transitions (including same-document, cross-document and scroll-driven/staggered) rather than instant, jarring swaps.",
      "evidence": "CSS inspection found no view-transition rules and navigation is conventional full-document replacement.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Address this outcome using current same-document-transitions guidance, then repeat the same stylesheet/runtime inspection evidence.",
      "effort": "small",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F03",
      "severity": "low",
      "confidence": "high",
      "summary": "Sticky/affixed UI reacts to scroll state and position (e.g. the new scroll-state(scrolled) query, shrinking headers, progress indicators) so chrome responds to position instead of static or JS-driven toggling.",
      "evidence": "The long 6,562 px mobile listing has static navigation and no scroll-state query, progress indicator, or position-aware chrome.",
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Address this outcome using current shrinking-header-on-scroll guidance, then repeat the same mobile layout plus stylesheet inspection evidence.",
      "effort": "small",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "shrinking-header-on-scroll",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F04",
      "severity": "medium",
      "confidence": "high",
      "summary": "Navigation and in-page jumps guide attention (highlight effects, scroll/carousel markers, directional transitions, drill-down and drawer navigation) so the user can follow where focus moved.",
      "evidence": "Primary icon navigation links have no text, title, or accessible label, and focused controls receive no visible outline, so location and focus movement are not cued.",
      "artifacts": [
        "evidence/agent-i18n-links.json",
        "evidence/focus-targets.json"
      ],
      "suggestedFix": "Address this outcome using current shrinking-header-on-scroll guidance, then repeat the same link and focus probes evidence.",
      "effort": "medium",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "directs-attention",
      "guidanceId": "shrinking-header-on-scroll",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F05",
      "severity": "medium",
      "confidence": "high",
      "summary": "No intrusive pop-ups, interstitials or banners that obscure content on load; overlays are dismissible and content-first.",
      "evidence": "The initial viewport is completely obscured by a third-party age-verification overlay before any content can be inspected; only an unexplained Start action is offered.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Address this outcome using current declarative-dialog-popover-control guidance, then repeat the same first-load screenshots evidence.",
      "effort": "medium",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F06",
      "severity": "medium",
      "confidence": "high",
      "summary": "Overlays and rich controls use the right primitive: popover (with declarative light-dismiss) for transient UI, dialog for modal flows, details for disclosure, native-but-branded selects and pickers, rather than ad-hoc divs.",
      "evidence": "The rendered DOM contains no dialog, popover, or details primitive while the screenshot shows a modal age gate.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "suggestedFix": "Address this outcome using current declarative-dialog-popover-control guidance, then repeat the same screenshot plus dom primitive evidence.",
      "effort": "medium",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F07",
      "severity": "medium",
      "confidence": "high",
      "summary": "Minimise non-content chrome and borders so the content is the focus, not the application frame; expressive/decorative visuals serve the content rather than crowd it.",
      "evidence": "The 404 state begins with multiple promotional/ad calls before the error and recovery content, while the first viewport is dominated by third-party gate chrome.",
      "artifacts": [
        "evidence/404.json",
        "evidence/home-desktop.png"
      ],
      "suggestedFix": "Address this outcome using current declarative-dialog-popover-control guidance, then repeat the same 404 dom text plus screenshots evidence.",
      "effort": "medium",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "reduced-chrome",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "user-experience",
      "pathId": "error",
      "url": "https://www.fpo.xxx/definitely-not-a-real-route-404/"
    },
    {
      "id": "F08",
      "severity": "medium",
      "confidence": "high",
      "summary": "Components adapt to their container with container queries (incl. anchored container queries) and content/state-based styling where reused at different sizes, not only global viewport breakpoints.",
      "evidence": "Stylesheet inspection found no @container rules (container-type normal); reused cards adapt only through page-wide CSS.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/home-dom.json"
      ],
      "suggestedFix": "Address this outcome using current size-aware-styling guidance, then repeat the same css/computed-style inspection evidence.",
      "effort": "medium",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F09",
      "severity": "medium",
      "confidence": "high",
      "summary": "Touch targets are adequately sized and hover-only affordances have a non-hover fallback, and keyboard focus is visible, so the UI works for touch, pointer and keyboard alike.",
      "evidence": "Focus probe found outline-style none and no replacement box-shadow on links, search input, menu button, and content cards.",
      "artifacts": [
        "evidence/focus-targets.json"
      ],
      "suggestedFix": "Address this outcome using current size-aware-styling guidance, then repeat the same programmatic focus-state probe evidence.",
      "effort": "medium",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F10",
      "severity": "high",
      "confidence": "high",
      "summary": "The representative primary flow can be completed end-to-end with predictable steps, no avoidable dead ends, no hidden required information, and no needless detours through modals, account walls, or upsells.",
      "evidence": "The primary watch flow is intercepted on load by a third-party age check that exposes only “Start”, with no up-front explanation of steps, data use, alternatives, or return path.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/detail-mobile.png"
      ],
      "suggestedFix": "Address this outcome using current forms guidance, then repeat the same entry and detail screenshots evidence.",
      "effort": "large",
      "principleId": "support-core-task-success",
      "principleCheckId": "primary-flow-completion",
      "guidanceId": "forms",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F11",
      "severity": "high",
      "confidence": "high",
      "summary": "Core Web Vitals are in the good range: LCP is fast, interaction latency (INP) is low, and CLS is minimal; work is prioritised and deferred sensibly.",
      "evidence": "Lighthouse measured LCP 5.8 s (poor), CLS 0.047, and TBT 20 ms; trace corroborated LCP 3.45 s with no long tasks.",
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Address this outcome using current performance guidance, then repeat the same lighthouse plus devtools trace evidence.",
      "effort": "large",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F12",
      "severity": "medium",
      "confidence": "high",
      "summary": "Critical resources are delivered efficiently: cache headers are useful, render-blocking chains are short, fonts do not block or shift text, HTTP delivery is modern, and network dependency trees do not delay the main content.",
      "evidence": "HAR found missing cache headers on core CSS, JS, font, logo, and thumbnails; Lighthouse estimated 930 ms render-blocking savings.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/platform-probe.json",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Address this outcome using current performance guidance, then repeat the same har summary confirmed against script attributes plus lighthouse evidence.",
      "effort": "medium",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "performance",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F13",
      "severity": "medium",
      "confidence": "high",
      "summary": "The page does not ship large unused or duplicated JavaScript/CSS, avoidable legacy bundles, or third-party code that dominates the load without user value.",
      "evidence": "Lighthouse estimated 125 KiB unused JavaScript and 18 KiB unused CSS; third-party scripts account for substantial transfer cost.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Address this outcome using current performance guidance, then repeat the same lighthouse coverage diagnostics plus har evidence.",
      "effort": "medium",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "performance",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F14",
      "severity": "high",
      "confidence": "high",
      "summary": "Interactive elements have accessible names, correct roles, and form fields have labels; images have alt text where meaningful; canvas/expressive content is exposed to assistive technology.",
      "evidence": "axe reports a nameless menu button and untitled iframe; the search input has no label, and several nav anchors have no accessible text.",
      "artifacts": [
        "evidence/axe.json",
        "evidence/platform-probe.json",
        "evidence/agent-i18n-links.json"
      ],
      "suggestedFix": "Address this outcome using current accessibility guidance, then repeat the same axe and dom probes evidence.",
      "effort": "large",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F15",
      "severity": "medium",
      "confidence": "high",
      "summary": "Text and essential UI meet WCAG colour-contrast minimums against their background.",
      "evidence": "axe measured repeated listing metadata at 2.42:1 and 1.89:1 against white, below the 4.5:1 requirement.",
      "artifacts": [
        "evidence/axe.json",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Address this outcome using current accessibility guidance, then repeat the same axe color-contrast analysis evidence.",
      "effort": "medium",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F16",
      "severity": "high",
      "confidence": "high",
      "summary": "Heading and landmark structure is logical, focus order follows reading order, keyboard focus is always visible, and interactive state survives DOM moves.",
      "evidence": "axe found no main landmark and no H1 on home; focus probe found no visible focus indicator on tested controls.",
      "artifacts": [
        "evidence/axe.json",
        "evidence/focus-targets.json"
      ],
      "suggestedFix": "Address this outcome using current accessibility guidance, then repeat the same axe plus keyboard-focus probe evidence.",
      "effort": "large",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F17",
      "severity": "medium",
      "confidence": "high",
      "summary": "Text is legible and inclusively rendered: comfortable line layout, precise alignment, stable rendering across mixed fonts, no clipping or cramped wrapping that harms comprehension.",
      "evidence": "Computed styles show 12 px navigation/card metadata; axe confirms low-contrast metadata, reducing reading comfort.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/axe.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Address this outcome using current accessibility guidance, then repeat the same computed-style, screenshot, and contrast inspection evidence.",
      "effort": "medium",
      "principleId": "be-inclusive",
      "principleCheckId": "legible-text",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F18",
      "severity": "medium",
      "confidence": "high",
      "summary": "The experience remains usable when zoomed or reflowed, touch targets are large enough, media has captions or equivalents where needed, and the viewport does not prevent user scaling.",
      "evidence": "The detail page exposes videos with no caption/subtitle tracks; top links are only about 14 px tall, despite otherwise successful mobile reflow.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/detail-metadata.json",
        "evidence/focus-targets.json"
      ],
      "suggestedFix": "Address this outcome using current accessibility guidance, then repeat the same media and target geometry probe evidence.",
      "effort": "medium",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F19",
      "severity": "medium",
      "confidence": "high",
      "summary": "Valid doctype and charset, images sized with correct aspect ratio, no deprecated APIs misused, and CSS/HTML are well structured and not needlessly repetitive. (HTTPS, CSP and permission hygiene are judged under be-private-and-secure, not here.)",
      "evidence": "Doctype and UTF-8 are valid, but image audit found 2 images without dimensions and 21 without responsive srcset.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/images.json"
      ],
      "suggestedFix": "Address this outcome using current performance guidance, then repeat the same dom and image audit evidence.",
      "effort": "medium",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "performance",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F20",
      "severity": "low",
      "confidence": "high",
      "summary": "The page uses the platform cleanly: no deprecated APIs, no avoidable BFCache blockers, no broken source maps or inspector issues, no stale vulnerable libraries, no paste-prevention on inputs, and no notification/geolocation prompts on load.",
      "evidence": "Lighthouse reports three BFCache failure reasons and DevTools inspector issues.",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Address this outcome using current performance guidance, then repeat the same lighthouse best-practices diagnostics evidence.",
      "effort": "small",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "performance",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F21",
      "severity": "medium",
      "confidence": "high",
      "summary": "Links are crawlable (real href), there is a viewport meta tag, robots does not block indexing, and link text is descriptive.",
      "evidence": "Viewport meta and robots are sound, but Sign up, Log in, and Support are anchors without href; Lighthouse crawlable-anchors failed.",
      "artifacts": [
        "evidence/agent-i18n-links.json",
        "evidence/robots.json",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Address this outcome using current accessibility guidance, then repeat the same dom link probe, robots, and lighthouse evidence.",
      "effort": "medium",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "accessibility",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F22",
      "severity": "high",
      "confidence": "high",
      "summary": "Served over HTTPS with a sensible Content-Security-Policy and secure, SameSite cookies; no mixed content or obvious transport/header smells.",
      "evidence": "HTTPS is used, but CSP, HSTS, and nosniff are absent; all seven cookies were flagged insecure, including PHPSESSID without Secure or HttpOnly.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Address this outcome using current security guidance, then repeat the same header and cookie audit evidence.",
      "effort": "large",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F23",
      "severity": "high",
      "confidence": "high",
      "summary": "No over-collection of user data, no leaky third parties, and analytics/background data collection is minimised and batched rather than chatty or session-wide by default.",
      "evidence": "Load contacted 14 third-party origins, including analytics and ad-tech trackers; 19 third-party requests transferred 219,033 bytes.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Address this outcome using current security guidance, then repeat the same tracker and har audits evidence.",
      "effort": "large",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "security",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F24",
      "severity": "medium",
      "confidence": "high",
      "summary": "Permission prompts are requested in context (not on load), and authentication uses modern, phishing-resistant methods (passkeys / WebAuthn) where relevant rather than passwords alone.",
      "evidence": "Login/signup surfaces exist, but runtime/source inspection found no WebAuthn/passkey capability; the third-party age check starts without data-use context.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/home-desktop.png"
      ],
      "suggestedFix": "Address this outcome using current security guidance, then repeat the same auth-link, script, and entry-state inspection evidence.",
      "effort": "medium",
      "principleId": "be-private-and-secure",
      "principleCheckId": "in-context-permissions-and-modern-auth",
      "guidanceId": "security",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F25",
      "severity": "medium",
      "confidence": "high",
      "summary": "Browser-enforced defenses are configured where appropriate: HSTS, clickjacking protection (frame-ancestors / X-Frame-Options), Trusted Types for XSS-sensitive apps, origin isolation, privacy-preserving third-party cookie posture, and sensible Referrer-Policy / Permissions-Policy.",
      "evidence": "X-Frame-Options is present, but HSTS, Referrer-Policy, Permissions-Policy, CSP/frame-ancestors, and nosniff are absent.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "suggestedFix": "Address this outcome using current security guidance, then repeat the same security-header audit evidence.",
      "effort": "medium",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F26",
      "severity": "medium",
      "confidence": "high",
      "summary": "Correct lang and dir attributes, logical CSS properties (inline/block) rather than physical left/right, and translation-ready markup so the layout and reading order survive other languages and writing modes.",
      "evidence": "html lang=en is correct, but stylesheet inspection counted 195 physical left/right declarations and zero logical inline/block properties.",
      "artifacts": [
        "evidence/preferences-metadata.json",
        "evidence/agent-i18n-links.json"
      ],
      "suggestedFix": "Address this outcome using current translator guidance, then repeat the same dom and stylesheet text probe evidence.",
      "effort": "medium",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "translator",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F27",
      "severity": "low",
      "confidence": "high",
      "summary": "Dates, numbers, currencies, durations and calendar systems are formatted locale-aware (Intl), location-agnostic where stored, and recurring intervals and event differentials are modelled correctly.",
      "evidence": "Visible dates use hard-coded forms such as 17/7/26, with no locale selection or locale-aware rendering signal.",
      "artifacts": [
        "evidence/preferences-metadata.json",
        "evidence/detail-metadata.json"
      ],
      "suggestedFix": "Address this outcome using current translator guidance, then repeat the same rendered title/card metadata inspection evidence.",
      "effort": "small",
      "principleId": "be-internationalised",
      "principleCheckId": "locale-aware-data",
      "guidanceId": "translator",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F28",
      "severity": "medium",
      "confidence": "high",
      "summary": "No deceptive design: no confirmshaming, forced continuity, disguised ads, or nagging consent walls; honest defaults; clear pricing and consent; easy reversal/cancel; predictable, declaratively-wired actions; and no hidden-text tricks (hidden content stays deep-linkable and indexable rather than used to deceive).",
      "evidence": "The 404 state places multiple sexually charged promotional calls before recovery content, and the age gate provides only “Start” without explaining the consequence.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/404.json"
      ],
      "suggestedFix": "Address this outcome using current forms guidance, then repeat the same first-load screenshot and 404 content probe evidence.",
      "effort": "medium",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "forms",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F29",
      "severity": "medium",
      "confidence": "high",
      "summary": "Input is assisted, not obstructed: correct autocomplete tokens so address, payment, sign-in and sign-up fields autofill, and inputs are highlighted/sized to help the user rather than trip them up.",
      "evidence": "The search field has no programmatic label and no visible instruction beyond a generic Search value; signup/login are href-less scripted anchors.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/agent-i18n-links.json"
      ],
      "suggestedFix": "Address this outcome using current forms guidance, then repeat the same form and link semantics probe evidence.",
      "effort": "medium",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "forms",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F30",
      "severity": "medium",
      "confidence": "high",
      "summary": "Checkout, subscription, consent, authentication and account-management flows are clear, reversible, and proportionate: pricing and commitments are visible, cancellation is findable, sensitive actions re-authenticate when appropriate, and users are not tricked into continuity.",
      "evidence": "Signup/login and age verification are offered without visible privacy, data-use, cancellation, or account-flow context in the initial state.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Address this outcome using current forms guidance, then repeat the same initial screenshot and auth-link inspection evidence.",
      "effort": "medium",
      "principleId": "be-trustworthy",
      "principleCheckId": "safe-commercial-and-account-flows",
      "guidanceId": "forms",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F31",
      "severity": "medium",
      "confidence": "high",
      "summary": "Images and decorative assets are optimised and served at appropriate resolutions; decorative pseudo-element imagery and heavy decorative images are resolution-optimised rather than oversized.",
      "evidence": "Image audit found 17 below-fold images without native lazy loading, 21 without srcset, and 8 legacy-format images.",
      "artifacts": [
        "evidence/images.json"
      ],
      "suggestedFix": "Address this outcome using current optimize-image-priority guidance, then repeat the same image audit evidence.",
      "effort": "medium",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F32",
      "severity": "medium",
      "confidence": "high",
      "summary": "Background work and fetching are not wasteful: background processing is efficient and de-prioritised, and the lightest technique that achieves the result is preferred over heavy or redundant work.",
      "evidence": "Lighthouse reports 125 KiB unused JavaScript and 18 KiB unused CSS, while analytics/ad scripts run before the gate is completed.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Address this outcome using current optimize-image-priority guidance, then repeat the same lighthouse and har evidence.",
      "effort": "medium",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    },
    {
      "id": "F33",
      "severity": "medium",
      "confidence": "high",
      "summary": "Third-party scripts, fonts, video, audio, animation and heavy media are proportionate to the user value they provide; autoplay or background media is avoided unless essential and resource use is cached or deferred where possible.",
      "evidence": "Third parties account for 19 requests and 219,033 transferred bytes; 14 third-party origins include ad-tech and analytics.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "suggestedFix": "Address this outcome using current optimize-image-priority guidance, then repeat the same har and tracker audits evidence.",
      "effort": "medium",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://www.fpo.xxx"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Secure headers and cookies",
      "priority": 1,
      "findingIds": [
        "F22",
        "F23",
        "F24",
        "F25"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Make navigation, controls, landmarks, focus, contrast, and media accessible",
      "priority": 2,
      "findingIds": [
        "F08",
        "F09",
        "F14",
        "F15",
        "F16",
        "F17",
        "F18"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Explain and streamline the age-verification/account entry flows",
      "priority": 3,
      "findingIds": [
        "F05",
        "F06",
        "F07",
        "F10",
        "F28",
        "F29",
        "F30"
      ],
      "guidanceId": "declarative-dialog-popover-control",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Improve LCP, caching, and resource delivery",
      "priority": 4,
      "findingIds": [
        "F11",
        "F12",
        "F13"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Reduce tracking and third-party execution",
      "priority": 5,
      "findingIds": [
        "F22",
        "F23",
        "F24",
        "F25",
        "F31",
        "F32",
        "F33"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Add system dark-mode support",
      "priority": 6,
      "findingIds": [
        "F01"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Use crawlable links and resilient semantics",
      "priority": 7,
      "findingIds": [
        "F19",
        "F20",
        "F21"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Modernise responsive/navigation behavior",
      "priority": 8,
      "findingIds": [
        "F02",
        "F03",
        "F04"
      ],
      "guidanceId": "same-document-transitions",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Localise layout and date presentation",
      "priority": 9,
      "findingIds": [
        "F26",
        "F27"
      ],
      "guidanceId": "translator",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 4,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-19T15-56-54-826Z"
}
