{
  "url": "https://pl.escort.club",
  "auditedAt": "2026-07-18T00:55:02.317Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete audit of seven representative paths/archetypes. Not covered: authenticated account management, paid token checkout, real message submission, and owner-only ad creation after login because no credentials or transaction authorization were provided.",
  "page": {
    "appType": "mpa",
    "framework": "Server-rendered MPA with jQuery/Bootstrap-era widgets",
    "notes": "Public adult classified marketplace with a global age-assurance/cookie gate, category listings, ad details, offers and account-gated publishing."
  },
  "evidenceUsed": [
    "screenshot",
    "dom+computed-css",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "HAR",
    "discoverability/no-JS",
    "Lighthouse",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "css-layout",
    "forms",
    "performance",
    "security",
    "privacy",
    "html",
    "css",
    "passkeys",
    "translator",
    "language-detection",
    "batch-analytics-events",
    "optimize-image-priority",
    "break-up-long-tasks",
    "light-dismiss-a-dialog",
    "improve-text-layout-and-legibility",
    "accessible-error-announcement"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "Homepage with adult gate at desktop width",
      "condition": "desktop 1440x1000",
      "findingIds": [
        "F08",
        "F09"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "Adult gate at mobile width",
      "condition": "mobile 360x800",
      "findingIds": [
        "F28"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "Homepage under dark preference remains light",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/detail-desktop.png",
      "caption": "Representative detail page with global age gate",
      "condition": "desktop 1440x1000",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/offers-desktop.png",
      "caption": "Offers archetype with global age gate",
      "condition": "desktop 1440x1000",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "Mobile overflow, CLS and long-task observation",
      "condition": "mobile 360x800",
      "findingIds": [
        "F05",
        "F13"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "Rendered homepage DOM/CSS evidence",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-probe.json",
      "caption": "Metadata, landmarks, focus, targets, forms and modern-CSS feature probe",
      "condition": "default",
      "findingIds": [
        "F03",
        "F06",
        "F07",
        "F10",
        "F18",
        "F22"
      ]
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "Routes, headings, links, robots and sitemap recon",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/login-probe.json",
      "caption": "Login labels, autocomplete and WebAuthn probe",
      "condition": "login",
      "findingIds": [
        "F25",
        "F29",
        "F30"
      ]
    },
    {
      "type": "other",
      "path": "evidence/add-probe.json",
      "caption": "Add-ad redirect/account-gate probe",
      "condition": "add journey",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/404-probe.json",
      "caption": "Not-found recovery probe",
      "condition": "invalid route",
      "findingIds": []
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "DevTools load trace",
      "condition": "desktop",
      "findingIds": []
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "FCP/LCP/long tasks/TBT summary",
      "condition": "desktop",
      "findingIds": []
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "Network capture for the homepage",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "Network weight, third parties and render-blocking summary",
      "condition": "default",
      "findingIds": [
        "F04",
        "F14",
        "F33"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "Raw HTML versus rendered DOM coverage",
      "condition": "no-JS crawler",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "Rendered browser view",
      "condition": "JavaScript enabled",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "Crawler/no-JS view",
      "condition": "JavaScript disabled",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-images.json",
      "caption": "Image dimensions, formats, responsive and alt audit",
      "condition": "default",
      "findingIds": [
        "F20",
        "F31"
      ]
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "Security response-header audit",
      "condition": "default",
      "findingIds": [
        "F26"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "Cookie security audit",
      "condition": "default",
      "findingIds": [
        "F23"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "Third-party/tracker-origin audit",
      "condition": "default",
      "findingIds": [
        "F24"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "Client secret scan",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "Lighthouse performance, accessibility, best-practices and SEO report",
      "condition": "mobile",
      "findingIds": [
        "F11",
        "F12",
        "F15",
        "F16",
        "F17",
        "F19",
        "F21",
        "F32"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "Baseline readable heap summary",
      "condition": "before interaction",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-post.heapsnapshot",
      "caption": "Heap summary after ten disclosure toggles",
      "condition": "after repeated interaction",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/preferences.json",
      "caption": "Reduced-motion and contrast media/CSS probe",
      "condition": "emulated preferences",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "other",
      "path": "evidence/runtime-probe.json",
      "caption": "Heap/DOM/service-worker/i18n CSS signal probe",
      "condition": "default",
      "findingIds": [
        "F27"
      ]
    }
  ],
  "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": "Direct browser evidence and mapped guidance comparison",
      "evidence": "The dark-condition screenshot is visually identical to the default and the page exposes no dark-theme CSS signal.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "Under emulated reduced motion, getAnimations() returned none and CSS contained reduced-motion media rules.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "Lighthouse fails color contrast; the probe found no prefers-contrast/forced-colors rule while examples include #999 on #fff at 2.84:1.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "The feature probe found startViewTransition available but no authored view-transition CSS or use.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon",
      "evidence": "No scroll-linked/parallax/scrollytelling motion was observed, so there is no implementation to assess.",
      "reason": "No scroll-linked/parallax/scrollytelling motion was observed, so there is no implementation to assess."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "DOM/HAR evidence shows Owl Carousel, lightbox, jQuery mousewheel and custom data-mb controls, with no scroll-snap or platform gesture primitive.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "The 5,855px mobile page has static chrome; CSS probes found no scroll timeline or scroll-state/container behavior.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "The page has custom data-mb dropdowns but no anchor-name/position-anchor CSS and no popover elements.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "The probe found no View Transition, scroll marker, highlight, or visible focus outline on the first focused control.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "The compliance-required adult gate clearly identifies purpose and offers both enter and leave actions; it is the only load-time interruption observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "The full-screen age gate is a div with manual jQuery dismissal; the DOM has no dialog, popover or details elements.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "The full page combines dense filters, 297 hash-action links, multiple animated banners and repeated recommendation rails around the listings.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "At 360x800, layout reported scrollWidth=clientWidth=360 with zero horizontal overflow and a viewport meta tag.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "The CSS probe found no @container usage despite cards and controls being reused in several widths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "The focused anchor computed to outline none 0px; Lighthouse reports 20px-high city links failing target size.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "Homepage headings, category navigation, search and listing cards clearly establish the marketplace browse purpose.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "Home, category listing and a live detail URL all loaded; Add ad intentionally redirects to a clearly identified login step.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "The intentional invalid route rendered a visible 404 message while retaining search and navigation recovery options.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "Lighthouse measured LCP 3.4s (performance 0.90); the direct desktop trace was faster at 1.65s, showing a mobile-path problem.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "Mobile layout observed CLS 0.113 and the image audit found all 100 images missing width/height.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "Direct trace found one 77ms long task and 27ms TBT; Lighthouse measured 40ms TBT.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "HAR records 141 requests/3.77MB, five parser-blocking stylesheets and legacy parser-inserted scripts; Lighthouse estimates 760ms render-blocking savings.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "Lighthouse estimates 20KiB unused JS, 31KiB unused CSS and 15KiB legacy-JS savings.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "Lighthouse fails button-name, link-name and image-alt; the probe finds unlabeled search selects and login fields.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "Lighthouse reports 1.91:1 search-header text and 2.84:1 select text against their backgrounds.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "The first focusable control has outline none; the probe found headers/footers but no explicit main/nav landmarks in its landmark list.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "Gate and core body copy use readable sizing/line spacing without clipping at 360px.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "Lighthouse fails meta-viewport because user-scalable=no/maximum-scale=1 and fails target-size for 20px-high links.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "Lighthouse errors-in-console audit passed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "Lighthouse reports no HTML doctype; all 100 audited images lack dimensions, 39 are oversized and 43 use legacy formats.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-images.json"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "Lighthouse best-practices scored 0.92; no on-load permission prompts or console errors were observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "The page has a descriptive Polish title and a substantial meta description in raw and rendered HTML.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "Lighthouse fails crawlable-anchors and meta-viewport; the DOM contains 297 href=# action links.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "The homepage is indexable and sitemap-backed, but the DOM probe found no canonical and no captured hreflang links despite eight language variants.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "Probe found two JSON-LD blocks and Open Graph metadata on the entity-rich homepage.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "HTTPS/HSTS/nosniff are present, but CSP is missing; escortsession is not Secure or HttpOnly and uses SameSite=None.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "The page contacts seven third-party origins and transfers 2.89MB cross-origin by harness classification; entry states that proceeding accepts cookies without granular choices.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "No permission prompt fires on load, but login has no WebAuthn/passkey path and sets autocomplete=off on username/password.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/login-probe.json"
      ],
      "findingIds": [
        "F25"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "Headers evidence shows no CSP, Referrer-Policy or Permissions-Policy, although HSTS and SAMEORIGIN framing protection are present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F26"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "Discoverability measured 100% raw/rendered content coverage, title/H1/description present and no JS shell.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "The age gate and navigation remained contained at 360px, and representative MPA routes loaded independently.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon",
      "evidence": "This public MPA marketplace is not presented as an installable app; offline installation is contextual and not required for the browse experience.",
      "reason": "This public MPA marketplace is not presented as an installable app; offline installation is contextual and not required for the browse experience."
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "An intentional missing route displayed 404 ERROR - Page Not Found with persistent search/navigation.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "html lang=pl is correct, but the stylesheet probe counts 528 physical-direction rules versus 114 logical-property rules and no dir attribute.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/runtime-probe.json"
      ],
      "findingIds": [
        "F27"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon",
      "evidence": "Representative public paths expose no meaningful dates, currencies, durations or calendar data requiring locale formatting.",
      "reason": "Representative public paths expose no meaningful dates, currencies, durations or calendar data requiring locale formatting."
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon",
      "evidence": "Representative paths expose no event scheduling or time-zone-sensitive data.",
      "reason": "Representative paths expose no event scheduling or time-zone-sensitive data."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "The blocking gate says continuing expresses cookie consent and offers only Enter or leave the site, with no reject/manage choice.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F28"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "Login requires username/password but both are placeholder-only, have no associated labels and expose no initial accessible error region.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/login-probe.json"
      ],
      "findingIds": [
        "F29"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "Both username and password use autocomplete=off instead of username/current-password, and fields have no labels.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/login-probe.json"
      ],
      "findingIds": [
        "F30"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "The add-ad route transparently redirects to a page stating login is required; no hidden charge or forced purchase appeared in tested public/account entry paths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/login-probe.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "Image audit: 39 oversized, 98 below-fold not lazy, 60 without srcset and 43 legacy-format; Lighthouse estimates 2.13MB image savings.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-images.json"
      ],
      "findingIds": [
        "F31"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "The page loads 27 scripts/12 styles; Lighthouse identifies heavily unused Bootstrap CSS/JS and legacy transforms.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "F32"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped guidance comparison",
      "evidence": "HAR attributes 3.08MB to images and 2.89MB to cross-origin delivery; individual GIF banners transfer up to 856KB in this capture.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F33"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon",
      "evidence": "No declared agent-facing intent exists; this emerging capability is contextual and absence is not penalized.",
      "reason": "No declared agent-facing intent exists; this emerging capability is contextual and absence is not penalized."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon",
      "evidence": "No summarization or inference task is central to the tested marketplace journey; this emerging feature is contextual.",
      "reason": "No summarization or inference task is central to the tested marketplace journey; this emerging feature is contextual."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "After ten disclosure toggles, summary size changed from 14.17MB to 14.28MB (+0.7%) and nodes from 187,576 to 189,103 (+0.8%), not evidence of unbounded growth.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-post.heapsnapshot"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "Runtime used heap was 8.4MB with 4,418 DOM elements; snapshot self size was about 14.2MB, proportionate to the image-heavy listing.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-post.heapsnapshot"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path visual, DOM and objective probe",
      "evidence": "Before/after top constructors show stable jQuery wrapper count (192) and no Detached* constructor among top retained populations.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-post.heapsnapshot"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01",
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03",
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05",
        "F06",
        "F07"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F08",
        "F09"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F10",
        "F11"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F12",
        "F13",
        "F14",
        "F15"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F16",
        "F17",
        "F18",
        "F19"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F21",
        "F22"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F23",
        "F24",
        "F25",
        "F26"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "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 declared agent-facing intent exists; this emerging capability is contextual and absence is not penalized. No summarization or inference task is central to the tested marketplace journey; this emerging feature is contextual."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Entry, age assurance, search and homepage listing; represents global chrome and the principal browse journey.",
      "url": "https://pl.escort.club/",
      "conditions": [
        "desktop 1440x1000",
        "mobile 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "prefers-contrast: more",
        "no JavaScript crawler"
      ],
      "result": "issues"
    },
    {
      "id": "listing",
      "description": "Women category listing; represents category and filtered-result templates.",
      "url": "https://pl.escort.club/anonse/panie/",
      "conditions": [
        "mobile 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "detail",
      "description": "A current advertisement detail; represents detail, media and contact surfaces.",
      "url": "https://pl.escort.club/anons/247750.html",
      "conditions": [
        "desktop 1440x1000"
      ],
      "result": "issues"
    },
    {
      "id": "add",
      "description": "Add-advertisement entry; tests the publishing journey and its account gate (redirects to login).",
      "url": "https://pl.escort.club/anons/add/",
      "conditions": [
        "mobile 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "login",
      "description": "Sign-in/registration surface; represents account forms and authentication.",
      "url": "https://pl.escort.club/login",
      "conditions": [
        "mobile 360x800",
        "keyboard/form semantics"
      ],
      "result": "issues"
    },
    {
      "id": "offers",
      "description": "Offers index; represents the secondary marketplace template.",
      "url": "https://pl.escort.club/offers/",
      "conditions": [
        "desktop 1440x1000"
      ],
      "result": "issues"
    },
    {
      "id": "not-found",
      "description": "Intentional invalid route; tests HTTP/error recovery presentation.",
      "url": "https://pl.escort.club/definitely-not-a-real-page-web-uplift",
      "conditions": [
        "default"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Dark preference does not change the light-only interface",
      "evidence": "The dark-condition screenshot is visually identical to the default and the page exposes no dark-theme CSS signal.",
      "artifacts": [
        "evidence/home-dark.png"
      ],
      "suggestedFix": "Declare color-scheme and retint surfaces/text with prefers-color-scheme or light-dark().",
      "effort": "small"
    },
    {
      "id": "F02",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "High-contrast support is incomplete",
      "evidence": "Lighthouse fails color contrast; the probe found no prefers-contrast/forced-colors rule while examples include #999 on #fff at 2.84:1.",
      "artifacts": [
        "evidence/preferences.json"
      ],
      "suggestedFix": "Add forced-colors/prefers-contrast treatments and meet WCAG contrast minimums.",
      "effort": "small"
    },
    {
      "id": "F03",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "performance",
      "guidanceCategory": "modern-web",
      "severity": "low",
      "confidence": "high",
      "summary": "Route and state swaps do not use View Transitions",
      "evidence": "The feature probe found startViewTransition available but no authored view-transition CSS or use.",
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "suggestedFix": "Progressively enhance meaningful route/state changes with View Transitions and reduced-motion handling.",
      "effort": "small"
    },
    {
      "id": "F04",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "physical-gestures",
      "guidanceId": "css-layout",
      "guidanceCategory": "modern-web",
      "severity": "low",
      "confidence": "high",
      "summary": "Carousel and disclosure behavior relies on legacy scripted widgets",
      "evidence": "DOM/HAR evidence shows Owl Carousel, lightbox, jQuery mousewheel and custom data-mb controls, with no scroll-snap or platform gesture primitive.",
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Use scroll snap/overscroll and native disclosure primitives, retaining lightweight fallbacks.",
      "effort": "small"
    },
    {
      "id": "F05",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "css-layout",
      "guidanceCategory": "modern-web",
      "severity": "low",
      "confidence": "high",
      "summary": "Long-page chrome provides no scroll-state feedback",
      "evidence": "The 5,855px mobile page has static chrome; CSS probes found no scroll timeline or scroll-state/container behavior.",
      "artifacts": [
        "evidence/home-mobile-layout.json"
      ],
      "suggestedFix": "Add a lightweight scroll progress or responsive sticky-header state using declarative CSS.",
      "effort": "small"
    },
    {
      "id": "F06",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "anchored-positioning",
      "guidanceId": "css-layout",
      "guidanceCategory": "modern-web",
      "severity": "low",
      "confidence": "high",
      "summary": "Menus and overlays use manually wired positioning",
      "evidence": "The page has custom data-mb dropdowns but no anchor-name/position-anchor CSS and no popover elements.",
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "suggestedFix": "Use Popover plus CSS Anchor Positioning with position-try fallbacks for transient menus.",
      "effort": "small"
    },
    {
      "id": "F07",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "directs-attention",
      "guidanceId": "css-layout",
      "guidanceCategory": "modern-web",
      "severity": "low",
      "confidence": "high",
      "summary": "Navigation changes lack focus/attention cues",
      "evidence": "The probe found no View Transition, scroll marker, highlight, or visible focus outline on the first focused control.",
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "suggestedFix": "Move focus intentionally and add visible directional/highlight cues after navigation.",
      "effort": "small"
    },
    {
      "id": "F08",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "The age gate and rich controls are custom div/script widgets",
      "evidence": "The full-screen age gate is a div with manual jQuery dismissal; the DOM has no dialog, popover or details elements.",
      "artifacts": [
        "evidence/home-desktop.png"
      ],
      "suggestedFix": "Use a modal dialog for age assurance and native popover/details for transient controls, preserving required consent behavior.",
      "effort": "small"
    },
    {
      "id": "F09",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "reduced-chrome",
      "guidanceId": "improve-text-layout-and-legibility",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Advertising and controls crowd the core browse content",
      "evidence": "The full page combines dense filters, 297 hash-action links, multiple animated banners and repeated recommendation rails around the listings.",
      "artifacts": [
        "evidence/home-desktop.png"
      ],
      "suggestedFix": "Defer secondary filters/ads, simplify repeated chrome, and keep the listing/search task dominant.",
      "effort": "small"
    },
    {
      "id": "F10",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "css-layout",
      "guidanceCategory": "modern-web",
      "severity": "low",
      "confidence": "high",
      "summary": "Responsiveness is viewport-only rather than component-aware",
      "evidence": "The CSS probe found no @container usage despite cards and controls being reused in several widths.",
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "suggestedFix": "Introduce container queries for reusable cards, filters and header modules.",
      "effort": "small"
    },
    {
      "id": "F11",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Keyboard focus and touch target treatment are insufficient",
      "evidence": "The focused anchor computed to outline none 0px; Lighthouse reports 20px-high city links failing target size.",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Add strong :focus-visible styles and at least 24px targets/spacing, preferably 44px for primary touch actions.",
      "effort": "medium"
    },
    {
      "id": "F12",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Mobile LCP is outside the good range",
      "evidence": "Lighthouse measured LCP 3.4s (performance 0.90); the direct desktop trace was faster at 1.65s, showing a mobile-path problem.",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Prioritize the LCP asset, cut render blocking and defer below-fold media.",
      "effort": "small"
    },
    {
      "id": "F13",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "visual-stability",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Late content can shift because image space is not reserved",
      "evidence": "Mobile layout observed CLS 0.113 and the image audit found all 100 images missing width/height.",
      "artifacts": [
        "evidence/home-mobile-layout.json"
      ],
      "suggestedFix": "Set intrinsic width/height or aspect-ratio for every image and reserve dynamic slots.",
      "effort": "small"
    },
    {
      "id": "F14",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Critical delivery is heavy and render-blocked",
      "evidence": "HAR records 141 requests/3.77MB, five parser-blocking stylesheets and legacy parser-inserted scripts; Lighthouse estimates 760ms render-blocking savings.",
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Inline critical CSS, defer noncritical scripts/styles, optimize fonts and improve cache lifetimes.",
      "effort": "medium"
    },
    {
      "id": "F15",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "performance",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "The page ships avoidable legacy and unused code",
      "evidence": "Lighthouse estimates 20KiB unused JS, 31KiB unused CSS and 15KiB legacy-JS savings.",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Remove unused Bootstrap/select plugins, split per-template code and ship a modern bundle.",
      "effort": "small"
    },
    {
      "id": "F16",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Controls, links, fields and images lack accessible names",
      "evidence": "Lighthouse fails button-name, link-name and image-alt; the probe finds unlabeled search selects and login fields.",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Give icon controls accessible names, associate visible labels, and add meaningful or empty alt as appropriate.",
      "effort": "medium"
    },
    {
      "id": "F17",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Important UI text fails minimum contrast",
      "evidence": "Lighthouse reports 1.91:1 search-header text and 2.84:1 select text against their backgrounds.",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Adjust the palette to at least 4.5:1 for normal text and 3:1 for large text/essential UI.",
      "effort": "medium"
    },
    {
      "id": "F18",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Focus indication is absent and landmarks are incomplete",
      "evidence": "The first focusable control has outline none; the probe found headers/footers but no explicit main/nav landmarks in its landmark list.",
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "suggestedFix": "Add a main landmark, labelled navigation and consistent visible :focus-visible treatment.",
      "effort": "medium"
    },
    {
      "id": "F19",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "The viewport disables user zoom and targets are too small",
      "evidence": "Lighthouse fails meta-viewport because user-scalable=no/maximum-scale=1 and fails target-size for 20px-high links.",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Remove zoom restrictions and enlarge/space interactive targets.",
      "effort": "medium"
    },
    {
      "id": "F20",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "The document runs in quirks mode and image delivery is unsound",
      "evidence": "Lighthouse reports no HTML doctype; all 100 audited images lack dimensions, 39 are oversized and 43 use legacy formats.",
      "artifacts": [
        "evidence/home-images.json"
      ],
      "suggestedFix": "Add <!doctype html>, intrinsic image dimensions, responsive sources and modern formats.",
      "effort": "medium"
    },
    {
      "id": "F21",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "html",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Some anchors are not crawlable and the viewport is not mobile-friendly",
      "evidence": "Lighthouse fails crawlable-anchors and meta-viewport; the DOM contains 297 href=# action links.",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Use buttons for actions, real URLs for navigation, and a zoom-safe viewport declaration.",
      "effort": "small"
    },
    {
      "id": "F22",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Canonical and localized indexing signals are incomplete",
      "evidence": "The homepage is indexable and sitemap-backed, but the DOM probe found no canonical and no captured hreflang links despite eight language variants.",
      "artifacts": [
        "evidence/home-probe.json"
      ],
      "suggestedFix": "Add self-referencing canonical and reciprocal hreflang/x-default links across localized hosts.",
      "effort": "small"
    },
    {
      "id": "F23",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Session transport policy is weakened by cookie and CSP gaps",
      "evidence": "HTTPS/HSTS/nosniff are present, but CSP is missing; escortsession is not Secure or HttpOnly and uses SameSite=None.",
      "artifacts": [
        "evidence/cookies.json"
      ],
      "suggestedFix": "Set Secure, HttpOnly and appropriate SameSite on session cookies and deploy a nonce/hash-based CSP.",
      "effort": "medium"
    },
    {
      "id": "F24",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Third-party delivery is broad and consent is bundled into entry",
      "evidence": "The page contacts seven third-party origins and transfers 2.89MB cross-origin by harness classification; entry states that proceeding accepts cookies without granular choices.",
      "artifacts": [
        "evidence/trackers.json"
      ],
      "suggestedFix": "Minimize vendors, self-host necessary assets, disclose purposes and offer granular consent before nonessential collection.",
      "effort": "small"
    },
    {
      "id": "F25",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "in-context-permissions-and-modern-auth",
      "guidanceId": "passkeys",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Authentication is password-only and blocks autofill",
      "evidence": "No permission prompt fires on load, but login has no WebAuthn/passkey path and sets autocomplete=off on username/password.",
      "artifacts": [
        "evidence/login-probe.json"
      ],
      "suggestedFix": "Enable standards-based autofill and add passkeys/WebAuthn as a phishing-resistant option.",
      "effort": "small"
    },
    {
      "id": "F26",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Several browser-enforced defenses are absent",
      "evidence": "Headers evidence shows no CSP, Referrer-Policy or Permissions-Policy, although HSTS and SAMEORIGIN framing protection are present.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "suggestedFix": "Add strict Referrer-Policy, least-privilege Permissions-Policy and CSP frame-ancestors/Trusted Types where feasible.",
      "effort": "small"
    },
    {
      "id": "F27",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "translator",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Localized hosts do not have robust bidirectional layout foundations",
      "evidence": "html lang=pl is correct, but the stylesheet probe counts 528 physical-direction rules versus 114 logical-property rules and no dir attribute.",
      "artifacts": [
        "evidence/runtime-probe.json"
      ],
      "suggestedFix": "Set direction explicitly where needed and migrate layout rules to logical properties for translation/bidi resilience.",
      "effort": "small"
    },
    {
      "id": "F28",
      "pathId": "login",
      "url": "https://pl.escort.club/",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "privacy",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Cookie agreement is coupled to mandatory age entry",
      "evidence": "The blocking gate says continuing expresses cookie consent and offers only Enter or leave the site, with no reject/manage choice.",
      "artifacts": [
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Separate necessary age assurance from optional cookie consent and provide equally clear accept/reject/manage controls.",
      "effort": "medium"
    },
    {
      "id": "F29",
      "pathId": "login",
      "url": "https://pl.escort.club/",
      "principleId": "be-trustworthy",
      "principleCheckId": "humane-error-handling",
      "guidanceId": "forms",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Forms lack programmatic labels and rely on opaque required behavior",
      "evidence": "Login requires username/password but both are placeholder-only, have no associated labels and expose no initial accessible error region.",
      "artifacts": [
        "evidence/login-probe.json"
      ],
      "suggestedFix": "Associate labels, validate after interaction, focus/announce an error summary and preserve entered values.",
      "effort": "small"
    },
    {
      "id": "F30",
      "pathId": "login",
      "url": "https://pl.escort.club/",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "forms",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Sign-in input assistance is deliberately disabled",
      "evidence": "Both username and password use autocomplete=off instead of username/current-password, and fields have no labels.",
      "artifacts": [
        "evidence/login-probe.json"
      ],
      "suggestedFix": "Use correct autocomplete tokens and stable labelled fields so password managers and autofill work.",
      "effort": "medium"
    },
    {
      "id": "F31",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Images and animated banners waste substantial bandwidth",
      "evidence": "Image audit: 39 oversized, 98 below-fold not lazy, 60 without srcset and 43 legacy-format; Lighthouse estimates 2.13MB image savings.",
      "artifacts": [
        "evidence/home-images.json"
      ],
      "suggestedFix": "Convert GIF banners to efficient video, resize assets, add srcset/sizes and lazy-load below-fold media.",
      "effort": "medium"
    },
    {
      "id": "F32",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "performance",
      "guidanceCategory": "modern-web",
      "severity": "medium",
      "confidence": "high",
      "summary": "Legacy widgets and unused bundles perform avoidable work",
      "evidence": "The page loads 27 scripts/12 styles; Lighthouse identifies heavily unused Bootstrap CSS/JS and legacy transforms.",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Remove unused plugins, conditionally load template features and pause nonessential work when hidden.",
      "effort": "small"
    },
    {
      "id": "F33",
      "pathId": "home",
      "url": "https://pl.escort.club/",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "modern-web",
      "severity": "high",
      "confidence": "high",
      "summary": "Animated media and third-party bytes are disproportionate",
      "evidence": "HAR attributes 3.08MB to images and 2.89MB to cross-origin delivery; individual GIF banners transfer up to 856KB in this capture.",
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Set a media/third-party budget, replace GIFs, defer ads and self-host only the assets that provide clear value.",
      "effort": "medium"
    }
  ],
  "taskList": [
    {
      "id": "T1",
      "title": "Fix accessible names, labels, focus, zoom and contrast",
      "priority": 1,
      "findingIds": [
        "F10",
        "F11",
        "F16",
        "F17",
        "F18",
        "F19"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T2",
      "title": "Optimize and defer images, GIF banners and render-blocking assets",
      "priority": 2,
      "findingIds": [
        "F12",
        "F13",
        "F14",
        "F15",
        "F31",
        "F32",
        "F33"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T3",
      "title": "Separate age assurance from optional cookie consent and harden session/security policy",
      "priority": 3,
      "findingIds": [
        "F23",
        "F24",
        "F25",
        "F26",
        "F28",
        "F29",
        "F30"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T4",
      "title": "Add doctype, image dimensions, canonical/hreflang and crawlable action semantics",
      "priority": 4,
      "findingIds": [
        "F20",
        "F21",
        "F22"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T5",
      "title": "Adopt semantic dialog/popover and lightweight modern interaction primitives",
      "priority": 5,
      "findingIds": [
        "F03",
        "F04",
        "F05",
        "F06",
        "F07",
        "F08",
        "F09"
      ],
      "guidanceId": "light-dismiss-a-dialog",
      "status": "open"
    },
    {
      "id": "T6",
      "title": "Add component queries, logical properties and user-preference theming",
      "priority": 6,
      "findingIds": [
        "F01",
        "F02",
        "F10",
        "F11",
        "F27"
      ],
      "guidanceId": "css-layout",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 7,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-18T00-46-40-713Z"
}
