{
  "url": "https://xsmn.mobi",
  "auditedAt": "2026-07-21T02:50:49.920Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "All 58 catalog checks have conclusive outcomes across four representative archetypes plus a failure-state route.",
  "page": {
    "appType": "mpa",
    "framework": "server-rendered HTML with jQuery/jQuery UI",
    "notes": "Vietnamese lottery results/content site. Coverage includes results, analysis, interactive trial and news listing. Date-specific archive pages and every province/template variant were not repeated because they share the same global shell and result-table archetype; no purchase/account flow exists."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "har",
    "trace",
    "lighthouse",
    "heap-summary",
    "HTTP fetch",
    "Modern Web Guidance"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "light-dismiss-a-dialog",
    "fluid-scaling",
    "identify-heavy-scripts",
    "optimize-image-priority",
    "security",
    "privacy",
    "batch-analytics-events",
    "defer-rendering-heavy-content",
    "persistent-toast-notifications",
    "same-document-transitions",
    "shrinking-header-on-scroll",
    "size-aware-styling",
    "deliver-optimized-decorative-images",
    "efficient-background-processing"
  ],
  "artifacts": [
    {
      "type": "other",
      "path": "evidence/404-status.txt",
      "caption": "Audit evidence: 404-status.txt",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/404.html",
      "caption": "Audit evidence: 404.html",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/accessibility-detail.json",
      "caption": "Audit evidence: accessibility-detail.json",
      "findingIds": [
        "F06",
        "F10",
        "F13"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/analysis-mobile.png",
      "caption": "Audit evidence: analysis-mobile.png",
      "condition": "viewport 360x800",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "other",
      "path": "evidence/analysis-structure.json",
      "caption": "Audit evidence: analysis-structure.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/capabilities.json",
      "caption": "Audit evidence: capabilities.json",
      "findingIds": [
        "F18"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "Audit evidence: cookies.json",
      "findingIds": [
        "F15",
        "F16"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-crawler.png",
      "caption": "Audit evidence: discoverability-crawler.png",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-rendered.png",
      "caption": "Audit evidence: discoverability-rendered.png",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability.json",
      "caption": "Audit evidence: discoverability.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/focus-targets.json",
      "caption": "Audit evidence: focus-targets.json",
      "findingIds": [
        "F06",
        "F12"
      ]
    },
    {
      "type": "other",
      "path": "evidence/guidance-list.json",
      "caption": "Audit evidence: guidance-list.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-retrieved.md",
      "caption": "Audit evidence: guidance-retrieved.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-1.json",
      "caption": "Audit evidence: guidance-search-1.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-10.json",
      "caption": "Audit evidence: guidance-search-10.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-11.json",
      "caption": "Audit evidence: guidance-search-11.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-12.json",
      "caption": "Audit evidence: guidance-search-12.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-13.json",
      "caption": "Audit evidence: guidance-search-13.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-14.json",
      "caption": "Audit evidence: guidance-search-14.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-15.json",
      "caption": "Audit evidence: guidance-search-15.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-16.json",
      "caption": "Audit evidence: guidance-search-16.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-17.json",
      "caption": "Audit evidence: guidance-search-17.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-2.json",
      "caption": "Audit evidence: guidance-search-2.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-3.json",
      "caption": "Audit evidence: guidance-search-3.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-4.json",
      "caption": "Audit evidence: guidance-search-4.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-5.json",
      "caption": "Audit evidence: guidance-search-5.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-6.json",
      "caption": "Audit evidence: guidance-search-6.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-7.json",
      "caption": "Audit evidence: guidance-search-7.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-8.json",
      "caption": "Audit evidence: guidance-search-8.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-search-9.json",
      "caption": "Audit evidence: guidance-search-9.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "Audit evidence: headers.json",
      "findingIds": [
        "F15",
        "F17"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "Audit evidence: heap-baseline.heapsnapshot",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-post-menu.heapsnapshot",
      "caption": "Audit evidence: heap-post-menu.heapsnapshot",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "Audit evidence: home-dark.png",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "Audit evidence: home-desktop.png",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile-dismissed.png",
      "caption": "Audit evidence: home-mobile-dismissed.png",
      "condition": "viewport 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "Audit evidence: home-mobile.png",
      "condition": "viewport 360x800",
      "findingIds": [
        "F02",
        "F05"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "Audit evidence: images.json",
      "findingIds": [
        "F14",
        "F19"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/layout-mobile.json",
      "caption": "Audit evidence: layout-mobile.json",
      "condition": "viewport 360x800",
      "findingIds": [
        "F04",
        "F13"
      ]
    },
    {
      "type": "other",
      "path": "evidence/lighthouse-selected-audits.json",
      "caption": "Audit evidence: lighthouse-selected-audits.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/lighthouse-summary.json",
      "caption": "Audit evidence: lighthouse-summary.json",
      "findingIds": [
        "F07",
        "F08",
        "F09",
        "F10",
        "F11",
        "F14"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "Audit evidence: lighthouse.json",
      "findingIds": [
        "F11"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/load-trace-summary.json",
      "caption": "Audit evidence: load-trace-summary.json",
      "findingIds": [
        "F07"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/load-trace.json",
      "caption": "Audit evidence: load-trace.json",
      "findingIds": [
        "F07"
      ]
    },
    {
      "type": "other",
      "path": "evidence/manifest.json",
      "caption": "Audit evidence: manifest.json",
      "findingIds": [
        "F18"
      ]
    },
    {
      "type": "other",
      "path": "evidence/memory-interaction-delta.json",
      "caption": "Audit evidence: memory-interaction-delta.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/memory-metrics.json",
      "caption": "Audit evidence: memory-metrics.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/metadata-i18n.json",
      "caption": "Audit evidence: metadata-i18n.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/navigation-scroll-probe.json",
      "caption": "Audit evidence: navigation-scroll-probe.json",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/network-summary.json",
      "caption": "Audit evidence: network-summary.json",
      "findingIds": [
        "F08",
        "F09",
        "F16",
        "F20"
      ]
    },
    {
      "type": "har",
      "path": "evidence/network.har",
      "caption": "Audit evidence: network.har",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/news-mobile.png",
      "caption": "Audit evidence: news-mobile.png",
      "condition": "viewport 360x800",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "other",
      "path": "evidence/news-structure.json",
      "caption": "Audit evidence: news-structure.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/page-structure.json",
      "caption": "Audit evidence: page-structure.json",
      "findingIds": [
        "F03",
        "F10",
        "F12"
      ]
    },
    {
      "type": "other",
      "path": "evidence/preferences-probe.json",
      "caption": "Audit evidence: preferences-probe.json",
      "findingIds": [
        "F01",
        "F03",
        "F05"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/recon-dom.json",
      "caption": "Audit evidence: recon-dom.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/resource-dom-confirmation.json",
      "caption": "Audit evidence: resource-dom-confirmation.json",
      "findingIds": [
        "F08"
      ]
    },
    {
      "type": "other",
      "path": "evidence/robots-headers.txt",
      "caption": "Audit evidence: robots-headers.txt",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/robots.txt",
      "caption": "Audit evidence: robots.txt",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "Audit evidence: secrets.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/sitemap.xml",
      "caption": "Audit evidence: sitemap.xml",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "Audit evidence: trackers.json",
      "findingIds": [
        "F16",
        "F20"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/trial-mobile.png",
      "caption": "Audit evidence: trial-mobile.png",
      "condition": "viewport 360x800",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trial-structure.json",
      "caption": "Audit evidence: trial-structure.json",
      "findingIds": []
    }
  ],
  "config": {
    "loaded": false
  },
  "coverage": {
    "catalogVersion": "modern-web-guidance@0.0.172",
    "catalogChecksum": "sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7",
    "expected": 58,
    "recorded": 58,
    "judged": 58,
    "blocked": 0,
    "notRun": 0,
    "missing": 0,
    "unknown": 0,
    "duplicates": 0,
    "complete": true
  },
  "checkOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-color-scheme",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "The dark-emulated screenshot is byte-identical to the light capture; colorScheme is normal and body text remains rgb(51,51,51).",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/preferences-probe.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Emulated prefers-reduced-motion: reduce and inspected active animations.",
      "evidence": "The page reported zero active animations under reduce, so no non-essential motion persisted.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences-probe.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "medium",
      "method": "Inspected Lighthouse contrast plus native/content visibility; contrast defects are recorded under be-inclusive, but controls remain present.",
      "evidence": "Controls and text remained present; no forced-colors-only disappearance was observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "The preferences/CSS probe found no view-transition usage on a multi-page site with many route changes.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences-probe.json",
        "evidence/page-structure.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "high",
      "method": "Inspected CSS and runtime animations/scroll behavior.",
      "evidence": "No scroll-linked motion or scroll event animation was present, so there is no main-thread scroll animation anti-pattern.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/navigation-scroll-probe.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "medium",
      "method": "Reviewed mobile layout and interactive controls.",
      "evidence": "The page relies on native scrolling and ordinary taps; no custom pointer gesture that fights platform behavior was found.",
      "pathIds": [
        "home",
        "trial"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/trial-structure.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "After scrolling 800px the static header and nav move fully off-screen; no scroll timeline or scroll-state CSS was detected on a 14,363px page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/navigation-scroll-probe.json",
        "evidence/layout-mobile.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "pass",
      "confidence": "medium",
      "method": "Reviewed visible menus/dialog surfaces at viewport edges.",
      "evidence": "The observed consent dialog remains centered and within the viewport; no drifting tooltip/popover was found.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "medium",
      "method": "Reviewed breadcrumbs, headings, nav labels and route structure.",
      "evidence": "Breadcrumb-like links, descriptive route labels and prominent H1/H2 hierarchy identify current content and next destinations.",
      "pathIds": [
        "home",
        "analysis",
        "trial",
        "news"
      ],
      "artifacts": [
        "evidence/page-structure.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "Desktop and all three representative mobile paths open with a viewport-dominating modal over results/content; the mobile dialog occupies nearly the full screen.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/analysis-mobile.png",
        "evidence/trial-mobile.png",
        "evidence/news-mobile.png"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "pass",
      "confidence": "high",
      "method": "DOM inspected dialog semantics and dismiss controls.",
      "evidence": "The consent surface exposes dialog roles and explicit Consent, Do not consent and Manage options controls.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/page-structure.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "medium",
      "method": "Visual review at desktop and mobile.",
      "evidence": "Outside the consent finding, the shared header is compact and the viewport is dominated by result/content tables rather than decorative chrome.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Measured layout at 360x800 and reviewed mobile screenshot.",
      "evidence": "scrollWidth was 361px versus 360px visual viewport (1px rounding only); viewport meta is present and content reflows.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/layout-mobile.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "The CSS probe found no @container rules despite dense tables/cards reused across a responsive layout.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "Focused controls reported outline-style none and no box shadow; 243 of 246 rendered focusables measured below 44px in at least one dimension, including the 36x28 menu button.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/focus-targets.json",
        "evidence/accessibility-detail.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Reviewed titles, H1s and first viewport across representative paths.",
      "evidence": "Each path has a specific Vietnamese title/H1, and the trial tool exposes a clear “Bắt đầu” action.",
      "pathIds": [
        "home",
        "analysis",
        "trial",
        "news"
      ],
      "artifacts": [
        "evidence/page-structure.json",
        "evidence/trial-structure.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "medium",
      "method": "Inspected the result-reading and trial-tool controls.",
      "evidence": "Current results are rendered in the document and the tool exposes its start control; no account wall or broken route was found after the explicit consent choice.",
      "pathIds": [
        "home",
        "trial"
      ],
      "artifacts": [
        "evidence/page-structure.json",
        "evidence/trial-structure.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "medium",
      "method": "Reviewed tool state and requested an invalid route.",
      "evidence": "The interactive trial page renders progress placeholders, and an invalid URL returns a real HTTP 404 rather than a misleading 200 shell.",
      "pathIds": [
        "trial",
        "not-found"
      ],
      "artifacts": [
        "evidence/trial-mobile.png",
        "evidence/404-status.txt"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "Mobile Lighthouse measured LCP 8.46s (performance 0.71); the trace corroborated one 107.65ms long task and 57.65ms TBT.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/load-trace-summary.json",
        "evidence/load-trace.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Measured CLS with layout observer and Lighthouse.",
      "evidence": "Layout primitive measured CLS 0.0129 and Lighthouse 0.0259, both within the good range.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/layout-mobile.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Captured trace and Lighthouse TBT.",
      "evidence": "Trace found one 107.65ms task and 57.65ms TBT; Lighthouse TBT was 157ms, still within the good lab threshold.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/load-trace-summary.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "HAR+DOM confirmation found synchronous parser-inserted jQuery, jQuery UI, and two site bundles; Lighthouse estimated 850ms render-blocking savings and flagged font display/cache issues.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/network-summary.json",
        "evidence/resource-dom-confirmation.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "Lighthouse estimated 455KiB unused JavaScript; HAR recorded 721,728 transferred script bytes, including 190KB ads and 167KB tag-manager scripts.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/network-summary.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "Lighthouse failed table caption/header relationships; DOM found 17 links without text/aria-label/img alt, and result radio controls have empty labels.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/accessibility-detail.json",
        "evidence/page-structure.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "Lighthouse accessibility audit failed color-contrast even though the aggregate accessibility score was 0.97.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "Focus probes found no visible outline; the accessibility tree-facing DOM contains four extra H1s from consent UI in addition to the page H1.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/focus-targets.json",
        "evidence/page-structure.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "medium",
      "method": "Visual review of desktop/mobile copy and layout.",
      "evidence": "Body text wraps without clipping at 360px and maintains readable spacing; the separate contrast failure is recorded explicitly.",
      "pathIds": [
        "home",
        "analysis",
        "news"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/analysis-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "243 of 246 visible focusables measured under 44px in width or height; while reflow had only 1px overflow, target size remains a broad mobile usability barrier.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/accessibility-detail.json",
        "evidence/layout-mobile.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Ran Lighthouse console/runtime audits.",
      "evidence": "Lighthouse best-practices scored 1.0 and its errors-in-console audit passed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-selected-audits.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "The image primitive found 2 images without dimensions, one 710px logo displayed at 200px, 3 missing srcset, and 3 legacy-format images; Lighthouse also failed unsized-images.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "high",
      "method": "Ran Lighthouse platform-hygiene audits and permission probe.",
      "evidence": "No load-time notification/geolocation request was detected; Lighthouse best-practices was 1.0 with deprecation/platform audits passing.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-selected-audits.json",
        "evidence/capabilities.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Inspected metadata on four representative routes.",
      "evidence": "Each representative route has a descriptive unique title and meta description.",
      "pathIds": [
        "home",
        "analysis",
        "trial",
        "news"
      ],
      "artifacts": [
        "evidence/page-structure.json",
        "evidence/analysis-structure.json",
        "evidence/trial-structure.json",
        "evidence/news-structure.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Inspected anchors, viewport, robots and Lighthouse SEO.",
      "evidence": "Real href links, viewport metadata and permissive robots are present; Lighthouse SEO scored 1.0.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/page-structure.json",
        "evidence/robots.txt",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "Inspected status, canonical, hreflang, robots and sitemap.",
      "evidence": "Homepage returned 200 with canonical URL, vi-vn/x-default hreflang, index/follow and a populated sitemap index.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/page-structure.json",
        "evidence/metadata-i18n.json",
        "evidence/sitemap.xml"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "Parsed JSON-LD, Open Graph and Twitter metadata.",
      "evidence": "Organization, WebPage and BreadcrumbList JSON-LD plus complete Open Graph/Twitter cards describe the visible page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/metadata-i18n.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "HTTPS is used, but CSP, HSTS, nosniff, framing, Referrer-Policy and Permissions-Policy were absent; all 3 observed analytics/consent cookies lacked Secure and used SameSite=None.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "The fresh load contacted 11 third-party origins and 6 known tracker domains; 25 third-party requests transferred 758,644 bytes, about 89% of the 853,445-byte load.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/network-summary.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "medium",
      "method": "Probed load-time permissions and inspected site journeys for authentication.",
      "evidence": "No notification/geolocation prompt was initiated on load; the audited public result journeys have no authentication surface requiring passkeys.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/capabilities.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "Headers evidence found no HSTS, clickjacking defense, Referrer-Policy or Permissions-Policy, and no CSP from which frame-ancestors or Trusted Types could be enforced.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Compared raw HTML with rendered content via discoverability primitive.",
      "evidence": "Raw HTML returned 200 and contained 87% of rendered content words, including title, H1 and description; this is not a JS shell.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/discoverability-crawler.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "medium",
      "method": "Reviewed overlays, routes and layout at mobile size.",
      "evidence": "The consent dialog stays inside the narrow viewport and representative routes render complete server content without a fragile empty mount.",
      "pathIds": [
        "home",
        "analysis",
        "trial",
        "news"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/discoverability.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "manifest.json declares standalone display/start_url, but the capabilities probe found zero service-worker registrations.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/manifest.json",
        "evidence/capabilities.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "medium",
      "method": "Fetched a deliberately invalid URL.",
      "evidence": "The invalid route returns HTTP 404 with a dedicated error document rather than a blank shell or false success.",
      "pathIds": [
        "not-found"
      ],
      "artifacts": [
        "evidence/404-status.txt",
        "evidence/404.html"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "medium",
      "method": "Inspected html language/direction and stylesheet usage.",
      "evidence": "html lang is vi; browser-derived direction is suitable for Vietnamese, and 32 logical-property rules are present alongside physical rules.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/metadata-i18n.json",
        "evidence/recon-dom.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon.",
      "evidence": "The deliberately Vietnamese-only results surface shows local calendar dates but no selectable locale, currency, duration or user-entered locale-sensitive data to transform.",
      "reason": "The deliberately Vietnamese-only results surface shows local calendar dates but no selectable locale, currency, duration or user-entered locale-sensitive data to transform."
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon.",
      "evidence": "No user-specific event scheduling, recurring intervals or cross-zone time coordination is exposed on the audited public results pages.",
      "reason": "No user-specific event scheduling, recurring intervals or cross-zone time coordination is exposed on the audited public results pages."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "medium",
      "method": "Reviewed the fresh consent choices and page controls.",
      "evidence": "Consent and Do not consent are equally prominent, and Manage options is available; no preselected purchase or disguised ad control was observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "pass",
      "confidence": "medium",
      "method": "Inspected forms and required controls across result/tool pages.",
      "evidence": "The audited forms are display filters/tool controls rather than required personal-data forms; no premature accusatory errors were shown.",
      "pathIds": [
        "home",
        "trial"
      ],
      "artifacts": [
        "evidence/page-structure.json",
        "evidence/trial-structure.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "pass",
      "confidence": "medium",
      "method": "Inspected input types and autocomplete applicability.",
      "evidence": "The audited inputs are radio display filters, not address/payment/sign-in fields; native input assistance is preserved.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/page-structure.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon.",
      "evidence": "No checkout, subscription, authentication or account-management flow exists on the representative public paths.",
      "reason": "No checkout, subscription, authentication or account-management flow exists on the representative public paths."
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "Images evidence found an oversized 710px logo rendered at 200px, no modern-format images, missing responsive sources, and missing dimensions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "medium",
      "method": "Reviewed trace and background network activity.",
      "evidence": "No repeated background polling or long-task stream was observed during the capture; the main resource concern is explicitly recorded as third-party budget.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/load-trace-summary.json",
        "evidence/network-summary.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence described in linked finding.",
      "evidence": "Third parties transferred 758,644 of 853,445 bytes; ad/tag/consent scripts are the five largest network resources.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/network-summary.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon.",
      "evidence": "This public lottery results/content site exposes no declared agent-facing transaction or productivity capability; emerging WebMCP support is therefore contextual and not required.",
      "reason": "This public lottery results/content site exposes no declared agent-facing transaction or productivity capability; emerging WebMCP support is therefore contextual and not required."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon.",
      "evidence": "No summarisation, language-model or other inference feature is part of the site’s user-facing purpose, so on-device inference is not applicable.",
      "reason": "No summarisation, language-model or other inference feature is part of the site’s user-facing purpose, so on-device inference is not applicable."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "medium",
      "method": "Repeated the mobile menu toggle 20 times and compared same-session DOM/heap metrics.",
      "evidence": "DOM nodes remained exactly 7,623 before/after; used heap rose 1.37MB transiently with no monotonic series proving retained growth.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/memory-interaction-delta.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "medium",
      "method": "Captured heap summary and Performance memory metrics.",
      "evidence": "Baseline snapshot reported 32.96MB self-size and runtime used heap 22.94MB for a long content page, proportionate to the loaded advertising stack.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/memory-metrics.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "Inspected heap constructor summaries and repeated-interaction DOM count.",
      "evidence": "No Detached* constructor appeared among top constructors and node count stayed unchanged after 20 toggles; no accumulating listener symptom was observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post-menu.heapsnapshot",
        "evidence/memory-interaction-delta.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05",
        "F06"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F07",
        "F08",
        "F09"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F10",
        "F11",
        "F12",
        "F13"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F15",
        "F16",
        "F17"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F19",
        "F20"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "This public lottery results/content site exposes no declared agent-facing transaction or productivity capability; emerging WebMCP support is therefore contextual and not required. No summarisation, language-model or other inference feature is part of the site’s user-facing purpose, so on-device inference is not applicable."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and current southern lottery results, the primary results-reading journey and shared global template.",
      "url": "https://xsmn.mobi/",
      "conditions": [
        "desktop 800x600",
        "mobile 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "keyboard focus probe",
        "JavaScript-disabled crawler view"
      ],
      "result": "issues"
    },
    {
      "id": "analysis",
      "description": "Southern analysis page, representing editorial/prediction detail pages.",
      "url": "https://xsmn.mobi/du-doan-mn",
      "conditions": [
        "mobile 360x800",
        "fresh profile/consent state"
      ],
      "result": "issues"
    },
    {
      "id": "trial",
      "description": "Lottery trial tool, representing the site’s primary interactive/tool archetype.",
      "url": "https://xsmn.mobi/quay-thu-xo-so-mien-nam.html",
      "conditions": [
        "mobile 360x800",
        "fresh profile/consent state"
      ],
      "result": "issues"
    },
    {
      "id": "news",
      "description": "News listing, representing content index/navigation pages.",
      "url": "https://xsmn.mobi/tin-tuc",
      "conditions": [
        "mobile 360x800",
        "fresh profile/consent state"
      ],
      "result": "issues"
    },
    {
      "id": "not-found",
      "description": "Representative invalid URL to inspect HTTP failure handling.",
      "url": "https://xsmn.mobi/definitely-not-a-real-page-web-uplift",
      "conditions": [
        "HTTP fetch"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "The site does not adapt to the user’s dark color-scheme preference.",
      "evidence": "The dark-emulated screenshot is byte-identical to the light capture; colorScheme is normal and body text remains rgb(51,51,51).",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/preferences-probe.json"
      ],
      "suggestedFix": "Declare color-scheme and define dark surface/text tokens with prefers-color-scheme or light-dark().",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F02",
      "severity": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "A consent interstitial obscures the primary content on every fresh visit.",
      "evidence": "Desktop and all three representative mobile paths open with a viewport-dominating modal over results/content; the mobile dialog occupies nearly the full screen.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/analysis-mobile.png",
        "evidence/trial-mobile.png",
        "evidence/news-mobile.png"
      ],
      "suggestedFix": "Use a compact, content-first consent surface where legally permissible, preserve equally prominent accept/reject choices, and avoid covering the primary task.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F03",
      "severity": "low",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Route and state changes have no View Transition treatment.",
      "evidence": "The preferences/CSS probe found no view-transition usage on a multi-page site with many route changes.",
      "artifacts": [
        "evidence/preferences-probe.json",
        "evidence/page-structure.json"
      ],
      "suggestedFix": "Progressively enhance same- and cross-document navigation with View Transitions while respecting reduced motion.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F04",
      "severity": "low",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "shrinking-header-on-scroll",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Long pages provide no scroll-state-aware navigation chrome.",
      "evidence": "After scrolling 800px the static header and nav move fully off-screen; no scroll timeline or scroll-state CSS was detected on a 14,363px page.",
      "artifacts": [
        "evidence/navigation-scroll-probe.json",
        "evidence/layout-mobile.json"
      ],
      "suggestedFix": "Add a restrained sticky or shrinking header, or a progress/return affordance, using CSS scroll-state features with a simple fallback.",
      "effort": "small",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F05",
      "severity": "low",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "css",
      "confidence": "high",
      "summary": "Components adapt only at the page level, with no container-query behavior detected.",
      "evidence": "The CSS probe found no @container rules despite dense tables/cards reused across a responsive layout.",
      "artifacts": [
        "evidence/preferences-probe.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Use container-type and @container for reusable result/table modules that appear at different inline sizes.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F06",
      "severity": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Keyboard focus is not visibly styled and most targets are below the recommended touch size.",
      "evidence": "Focused controls reported outline-style none and no box shadow; 243 of 246 rendered focusables measured below 44px in at least one dimension, including the 36x28 menu button.",
      "artifacts": [
        "evidence/focus-targets.json",
        "evidence/accessibility-detail.json"
      ],
      "suggestedFix": "Add a strong :focus-visible indicator and increase compact navigation/control hit areas to about 44x44 CSS pixels without forcing visual bulk.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F07",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "defer-rendering-heavy-content",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "Largest Contentful Paint is far outside the good range.",
      "evidence": "Mobile Lighthouse measured LCP 8.46s (performance 0.71); the trace corroborated one 107.65ms long task and 57.65ms TBT.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/load-trace-summary.json",
        "evidence/load-trace.json"
      ],
      "suggestedFix": "Prioritize the actual LCP content, delay consent/ad work that is not required for first render, and verify LCP under mobile throttling.",
      "effort": "large",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F08",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "Parser-blocking scripts and font delivery delay main content.",
      "evidence": "HAR+DOM confirmation found synchronous parser-inserted jQuery, jQuery UI, and two site bundles; Lighthouse estimated 850ms render-blocking savings and flagged font display/cache issues.",
      "artifacts": [
        "evidence/network-summary.json",
        "evidence/resource-dom-confirmation.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Defer non-critical scripts, remove the critical-path dependency on jQuery UI where possible, subset/self-host only needed fonts, and set useful cache headers.",
      "effort": "large",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F09",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "The page ships a large amount of unused JavaScript, dominated by third parties.",
      "evidence": "Lighthouse estimated 455KiB unused JavaScript; HAR recorded 721,728 transferred script bytes, including 190KB ads and 167KB tag-manager scripts.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/network-summary.json"
      ],
      "suggestedFix": "Load advertising/analytics only after the relevant consent and need, remove duplicate legacy libraries, and split first-party bundles by route.",
      "effort": "large",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F10",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Dense result tables and some controls lack robust accessible semantics.",
      "evidence": "Lighthouse failed table caption/header relationships; DOM found 17 links without text/aria-label/img alt, and result radio controls have empty labels.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/accessibility-detail.json",
        "evidence/page-structure.json"
      ],
      "suggestedFix": "Add real captions and scoped headers to data tables, label radio controls, and provide accessible names for every link/control.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F11",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Some foreground/background color combinations fail WCAG contrast.",
      "evidence": "Lighthouse accessibility audit failed color-contrast even though the aggregate accessibility score was 0.97.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Adjust the failing text/control tokens to meet at least 4.5:1 for normal text and 3:1 for large text and essential UI.",
      "effort": "small",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F12",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Focus visibility and heading structure are disrupted by the consent implementation.",
      "evidence": "Focus probes found no visible outline; the accessibility tree-facing DOM contains four extra H1s from consent UI in addition to the page H1.",
      "artifacts": [
        "evidence/focus-targets.json",
        "evidence/page-structure.json"
      ],
      "suggestedFix": "Restore visible focus styles and ensure embedded consent UI does not pollute the document heading hierarchy.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F13",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Touch-target sizing is inadequate across the dense navigation and result controls.",
      "evidence": "243 of 246 visible focusables measured under 44px in width or height; while reflow had only 1px overflow, target size remains a broad mobile usability barrier.",
      "artifacts": [
        "evidence/accessibility-detail.json",
        "evidence/layout-mobile.json"
      ],
      "suggestedFix": "Increase hit areas using padding/pseudo-elements while preserving the compact table layout, then retest at 200% zoom and 360px width.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F14",
      "severity": "medium",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "Several images lack intrinsic dimensions or responsive delivery.",
      "evidence": "The image primitive found 2 images without dimensions, one 710px logo displayed at 200px, 3 missing srcset, and 3 legacy-format images; Lighthouse also failed unsized-images.",
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Add width/height or aspect-ratio, provide responsive srcset/sizes, and encode appropriate assets in WebP/AVIF where beneficial.",
      "effort": "small",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F15",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "confidence": "high",
      "summary": "Security headers and cookie protections are missing.",
      "evidence": "HTTPS is used, but CSP, HSTS, nosniff, framing, Referrer-Policy and Permissions-Policy were absent; all 3 observed analytics/consent cookies lacked Secure and used SameSite=None.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Set HSTS, a nonce/hash-based CSP with frame-ancestors, nosniff, Referrer-Policy and Permissions-Policy; mark cookies Secure and use the least-permissive SameSite value.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F16",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "confidence": "high",
      "summary": "Tracking and advertising dominate the network before a consent choice.",
      "evidence": "The fresh load contacted 11 third-party origins and 6 known tracker domains; 25 third-party requests transferred 758,644 bytes, about 89% of the 853,445-byte load.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/network-summary.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Default to no non-essential tracking before consent, minimize vendors, and batch only the analytics events needed for a stated purpose.",
      "effort": "large",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F17",
      "severity": "medium",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "confidence": "high",
      "summary": "Browser-enforced defensive policies are not configured.",
      "evidence": "Headers evidence found no HSTS, clickjacking defense, Referrer-Policy or Permissions-Policy, and no CSP from which frame-ancestors or Trusted Types could be enforced.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "suggestedFix": "Deploy the missing browser policies in report-only mode first, then enforce a tested CSP and framing policy.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F18",
      "severity": "medium",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "persistent-toast-notifications",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "The installable-looking site has a manifest but no service worker or offline fallback.",
      "evidence": "manifest.json declares standalone display/start_url, but the capabilities probe found zero service-worker registrations.",
      "artifacts": [
        "evidence/manifest.json",
        "evidence/capabilities.json"
      ],
      "suggestedFix": "Add a minimal service worker and useful offline fallback for previously viewed results/static guidance, with explicit stale-data messaging.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F19",
      "severity": "medium",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "Image delivery is not fully optimized for its display sizes.",
      "evidence": "Images evidence found an oversized 710px logo rendered at 200px, no modern-format images, missing responsive sources, and missing dimensions.",
      "artifacts": [
        "evidence/images.json"
      ],
      "suggestedFix": "Serve appropriately sized responsive images and modern formats, preserving intrinsic dimensions.",
      "effort": "small",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    },
    {
      "id": "F20",
      "severity": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "efficient-background-processing",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "Third-party scripts consume a disproportionate resource budget for a text-and-table results site.",
      "evidence": "Third parties transferred 758,644 of 853,445 bytes; ad/tag/consent scripts are the five largest network resources.",
      "artifacts": [
        "evidence/network-summary.json",
        "evidence/trackers.json"
      ],
      "suggestedFix": "Set a strict third-party byte/request budget, defer vendors until needed and consented, and remove vendors that do not support the core result-reading task.",
      "effort": "large",
      "pathId": "home",
      "url": "https://xsmn.mobi/"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Use a compact, content-first consent surface where legally permissible, preserve equally prominent accept/reject choices, and avoid covering the primary task.",
      "priority": 1,
      "findingIds": [
        "F02"
      ],
      "guidanceId": "light-dismiss-a-dialog",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Add a strong :focus-visible indicator and increase compact navigation/control hit areas to about 44x44 CSS pixels without forcing visual bulk.",
      "priority": 2,
      "findingIds": [
        "F06"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Prioritize the actual LCP content, delay consent/ad work that is not required for first render, and verify LCP under mobile throttling.",
      "priority": 3,
      "findingIds": [
        "F07"
      ],
      "guidanceId": "defer-rendering-heavy-content",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Defer non-critical scripts, remove the critical-path dependency on jQuery UI where possible, subset/self-host only needed fonts, and set useful cache headers.",
      "priority": 4,
      "findingIds": [
        "F08"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Load advertising/analytics only after the relevant consent and need, remove duplicate legacy libraries, and split first-party bundles by route.",
      "priority": 5,
      "findingIds": [
        "F09"
      ],
      "guidanceId": "identify-heavy-scripts",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Add real captions and scoped headers to data tables, label radio controls, and provide accessible names for every link/control.",
      "priority": 6,
      "findingIds": [
        "F10"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Adjust the failing text/control tokens to meet at least 4.5:1 for normal text and 3:1 for large text and essential UI.",
      "priority": 7,
      "findingIds": [
        "F11"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Restore visible focus styles and ensure embedded consent UI does not pollute the document heading hierarchy.",
      "priority": 8,
      "findingIds": [
        "F12"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Increase hit areas using padding/pseudo-elements while preserving the compact table layout, then retest at 200% zoom and 360px width.",
      "priority": 9,
      "findingIds": [
        "F13"
      ],
      "guidanceId": "fluid-scaling",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Set HSTS, a nonce/hash-based CSP with frame-ancestors, nosniff, Referrer-Policy and Permissions-Policy; mark cookies Secure and use the least-permissive SameSite value.",
      "priority": 10,
      "findingIds": [
        "F15"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T11",
      "title": "Default to no non-essential tracking before consent, minimize vendors, and batch only the analytics events needed for a stated purpose.",
      "priority": 11,
      "findingIds": [
        "F16"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T12",
      "title": "Set a strict third-party byte/request budget, defer vendors until needed and consented, and remove vendors that do not support the core result-reading task.",
      "priority": 12,
      "findingIds": [
        "F20"
      ],
      "guidanceId": "efficient-background-processing",
      "status": "open"
    },
    {
      "id": "T13",
      "title": "Declare color-scheme and define dark surface/text tokens with prefers-color-scheme or light-dark().",
      "priority": 13,
      "findingIds": [
        "F01"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T14",
      "title": "Add width/height or aspect-ratio, provide responsive srcset/sizes, and encode appropriate assets in WebP/AVIF where beneficial.",
      "priority": 14,
      "findingIds": [
        "F14"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T15",
      "title": "Deploy the missing browser policies in report-only mode first, then enforce a tested CSP and framing policy.",
      "priority": 15,
      "findingIds": [
        "F17"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T16",
      "title": "Add a minimal service worker and useful offline fallback for previously viewed results/static guidance, with explicit stale-data messaging.",
      "priority": 16,
      "findingIds": [
        "F18"
      ],
      "guidanceId": "persistent-toast-notifications",
      "status": "open"
    },
    {
      "id": "T17",
      "title": "Serve appropriately sized responsive images and modern formats, preserving intrinsic dimensions.",
      "priority": 17,
      "findingIds": [
        "F19"
      ],
      "guidanceId": "deliver-optimized-decorative-images",
      "status": "open"
    },
    {
      "id": "T18",
      "title": "Progressively enhance same- and cross-document navigation with View Transitions while respecting reduced motion.",
      "priority": 18,
      "findingIds": [
        "F03"
      ],
      "guidanceId": "same-document-transitions",
      "status": "open"
    },
    {
      "id": "T19",
      "title": "Add a restrained sticky or shrinking header, or a progress/return affordance, using CSS scroll-state features with a simple fallback.",
      "priority": 19,
      "findingIds": [
        "F04"
      ],
      "guidanceId": "shrinking-header-on-scroll",
      "status": "open"
    },
    {
      "id": "T20",
      "title": "Use container-type and @container for reusable result/table modules that appear at different inline sizes.",
      "priority": 20,
      "findingIds": [
        "F05"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 5,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-21T02-50-49-920Z"
}
