{
  "url": "https://lottery.sambad.com",
  "auditedAt": "2026-07-22T21:17:49.292Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Atomic coverage complete across 58 checks and five representative paths. Not covered: authenticated account completion, camera scanning hardware, payment/prize-claim workflows, and the separate /pwa/ shell because they require credentials, device permissions or represent a distinct scoped app.",
  "page": {
    "appType": "mpa",
    "framework": "Server-rendered, hand-authored HTML/CSS/JavaScript (no framework detected)",
    "notes": "Public lottery result/content MPA with homepage search, result templates, archive, editorial articles and a separately scoped PWA manifest."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "discoverability",
    "images",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "heap-summary",
    "lighthouse"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "adapt-scrollbar-to-contrast-preferences",
    "cross-document-transitions",
    "scroll-progress-indicator",
    "light-dismiss-a-dialog",
    "declarative-dialog-popover-control",
    "size-aware-styling",
    "optimize-image-priority",
    "security",
    "privacy",
    "performance",
    "translator",
    "accessible-error-announcement",
    "deliver-optimized-decorative-images",
    "webmcp"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/404-mobile.png",
      "caption": "404 mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/404-probe.json",
      "caption": "404 probe",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/article-discoverability-crawler.png",
      "caption": "article discoverability crawler",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/article-discoverability-rendered.png",
      "caption": "article discoverability rendered",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/article-discoverability.json",
      "caption": "article discoverability",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/article-mobile.png",
      "caption": "article mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/article-probe.json",
      "caption": "article probe",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/consent-probe.json",
      "caption": "consent probe",
      "findingIds": [
        "F006",
        "F007",
        "F017"
      ]
    },
    {
      "type": "other",
      "path": "evidence/focus-probe.json",
      "caption": "focus probe",
      "findingIds": [
        "F009",
        "F011",
        "F013"
      ]
    },
    {
      "type": "other",
      "path": "evidence/guidance-list.json",
      "caption": "guidance list",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-retrieved.md",
      "caption": "guidance retrieved",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-searches.jsonl",
      "caption": "guidance searches",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "heap baseline",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-post.heapsnapshot",
      "caption": "heap post",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-comprehensive.json",
      "caption": "home comprehensive",
      "findingIds": [
        "F002",
        "F003",
        "F004",
        "F007",
        "F008",
        "F009",
        "F011",
        "F013",
        "F016"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-contrast.png",
      "caption": "home contrast",
      "condition": "prefers-contrast: more",
      "findingIds": [
        "F003"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-cookies.json",
      "caption": "home cookies",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F001"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": [
        "F008"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "home discoverability crawler",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "home discoverability rendered",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "home discoverability",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-headers.json",
      "caption": "home headers",
      "findingIds": [
        "F014"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-images.json",
      "caption": "home images",
      "findingIds": [
        "F010",
        "F019"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-layout-desktop.json",
      "caption": "home layout desktop",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/home-layout-mobile.json",
      "caption": "home layout mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F005"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F001",
        "F004",
        "F005",
        "F008"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-recon.json",
      "caption": "home recon",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-reduced-motion.json",
      "caption": "home reduced motion",
      "condition": "prefers-reduced-motion: reduce",
      "findingIds": [
        "F002"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-secrets.json",
      "caption": "home secrets",
      "findingIds": []
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": []
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": []
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-trackers.json",
      "caption": "home trackers",
      "findingIds": []
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/lighthouse-summary.json",
      "caption": "lighthouse summary",
      "findingIds": [
        "F012",
        "F013"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "lighthouse",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/memory-interaction-metrics.json",
      "caption": "memory interaction metrics",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/old-mobile.png",
      "caption": "old mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/old-probe.json",
      "caption": "old probe",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/result-mobile.png",
      "caption": "result mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F006",
        "F007",
        "F017"
      ]
    },
    {
      "type": "other",
      "path": "evidence/result-probe.json",
      "caption": "result probe",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/runtime-metrics.json",
      "caption": "runtime metrics",
      "findingIds": [
        "F015",
        "F016"
      ]
    },
    {
      "type": "other",
      "path": "evidence/search-html.json",
      "caption": "search html",
      "findingIds": [
        "F011",
        "F018"
      ]
    },
    {
      "type": "other",
      "path": "evidence/search-invalid-state.json",
      "caption": "search invalid state",
      "findingIds": [
        "F018"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/search-invalid.png",
      "caption": "search invalid",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/search-valid-state.json",
      "caption": "search valid state",
      "findingIds": [
        "F018"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/search-valid.png",
      "caption": "search valid",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/site-files.json",
      "caption": "site files",
      "findingIds": [
        "F015"
      ]
    }
  ],
  "config": {
    "loaded": false
  },
  "coverage": {
    "catalogVersion": "modern-web-guidance@0.0.172",
    "catalogChecksum": "sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7",
    "expected": 58,
    "recorded": 58,
    "judged": 58,
    "blocked": 0,
    "notRun": 0,
    "missing": 0,
    "unknown": 0,
    "duplicates": 0,
    "complete": true
  },
  "checkOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-color-scheme",
      "status": "issues",
      "confidence": "high",
      "method": "emulated-media screenshot plus computed CSS/animation probe",
      "evidence": "Pixel-identical light/dark screenshots and computed body #fff demonstrate no adaptation.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png"
      ],
      "findingIds": [
        "F001"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "issues",
      "confidence": "high",
      "method": "emulated-media screenshot plus computed CSS/animation probe",
      "evidence": "Reduced-motion probe still found three running 2.8–3s animations.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-reduced-motion.json"
      ],
      "findingIds": [
        "F002"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "emulated-media screenshot plus computed CSS/animation probe",
      "evidence": "Contrast-emulated capture and CSS inspection found no preference handling.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-contrast.png"
      ],
      "findingIds": [
        "F003"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "rendered CSS feature and interaction inspection",
      "evidence": "MPA/result navigation has no view-transition CSS.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F004"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "rendered CSS feature and interaction inspection",
      "evidence": "No parallax, scrollytelling, entry/exit reveal, or other scroll-linked animation exists on the representative templates, so there is no scroll handler/timeline implementation to assess.",
      "reason": "No parallax, scrollytelling, entry/exit reveal, or other scroll-linked animation exists on the representative templates, so there is no scroll handler/timeline implementation to assess."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "rendered CSS feature and interaction inspection",
      "evidence": "CSS inspection found scroll-snap and the tested controls use native scrolling/click semantics without custom pointer-drag handlers.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "mobile screenshot, long-page layout and CSS feature inspection",
      "evidence": "The 8,988px mobile page has no scroll-state/progress treatment.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F005"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "mobile screenshot, long-page layout and CSS feature inspection",
      "evidence": "The tested templates expose no tooltip or edge-attached transient menu that requires anchor positioning; the navigation drawer is viewport chrome.",
      "reason": "The tested templates expose no tooltip or edge-attached transient menu that requires anchor positioning; the navigation drawer is viewport chrome."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "mobile screenshot, long-page layout and CSS feature inspection",
      "evidence": "Breadcrumbs on the article, explicit draw tabs, dates and selected-state colour consistently orient the tested journeys.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "fresh-profile screenshots and semantic DOM inspection",
      "evidence": "Fresh result route was obscured by the captured consent wall.",
      "pathIds": [
        "home",
        "result"
      ],
      "findingIds": [
        "F006"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "fresh-profile screenshots and semantic DOM inspection",
      "evidence": "Consent UI is custom, creates extra h1s and uses no dialog/popover.",
      "pathIds": [
        "home",
        "result"
      ],
      "findingIds": [
        "F007"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "fresh-profile screenshots and semantic DOM inspection",
      "evidence": "Screenshots show content-dominant layouts with compact top chrome and no persistent side rails.",
      "pathIds": [
        "home",
        "result"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "mobile/desktop layouts, CSS feature inspection and keyboard focus probe",
      "evidence": "Layout measured 360px scrollWidth/clientWidth and zero horizontal overflow; viewport meta is present.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "mobile/desktop layouts, CSS feature inspection and keyboard focus probe",
      "evidence": "No container query declarations were found on reused result/card modules.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F008"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "mobile/desktop layouts, CSS feature inspection and keyboard focus probe",
      "evidence": "Focused search input had no outline or shadow; multiple visible controls were under 24px in one dimension.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F009"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "valid/invalid ticket-search walkthrough and 404 recovery walkthrough",
      "evidence": "First viewport identifies today’s result, draw tabs, ticket area and scan action clearly.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "valid/invalid ticket-search walkthrough and 404 recovery walkthrough",
      "evidence": "Entering 56215 and pressing Search produced a specific first-prize match and series guidance.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "valid/invalid ticket-search walkthrough and 404 recovery walkthrough",
      "evidence": "Invalid search shows a direct five-digit correction; valid search replaces it with a result; 404 offers a homepage recovery link.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse, trace, layout observer, HAR and images audit",
      "evidence": "Lighthouse measured LCP 1.1s, CLS 0 and TBT 0ms; trace measured FCP/LCP 516ms and zero blocking.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse, trace, layout observer, HAR and images audit",
      "evidence": "Both layout observers measured CLS 0 and no shifts over five seconds.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-layout-mobile.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse, trace, layout observer, HAR and images audit",
      "evidence": "Trace and layout observers found no long tasks and 0ms total blocking time.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace, layout observer, HAR and images audit",
      "evidence": "HAR recorded 9 requests, 61KB transferred, no render-blocking candidates, redirects or HTTP errors; one image optimization gap remains separately recorded.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F010"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse, trace, layout observer, HAR and images audit",
      "evidence": "Lighthouse unused JS/CSS audits passed and the HAR contains no third-party script payload.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility audits, DOM naming/landmark probe, focus probe and screenshots",
      "evidence": "Primary ticket input and hidden auth fields rely on placeholders; #srch has no label or accessible naming attribute.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/focus-probe.json"
      ],
      "findingIds": [
        "F011"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility audits, DOM naming/landmark probe, focus probe and screenshots",
      "evidence": "Lighthouse/axe enumerated eight failing colour combinations with ratios as low as 1.84:1.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F012"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility audits, DOM naming/landmark probe, focus probe and screenshots",
      "evidence": "No main landmark is present and the focused primary input has no visible focus treatment.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F013"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse accessibility audits, DOM naming/landmark probe, focus probe and screenshots",
      "evidence": "Mobile screenshots show readable 16–18px body copy, comfortable article line length and no clipping.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse accessibility audits, DOM naming/landmark probe, focus probe and screenshots",
      "evidence": "360px reflow has no overflow and viewport permits scaling; no time-based media requires captions, though undersized controls are recorded.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse diagnostics and document/asset DOM inspection",
      "evidence": "Lighthouse observed no browser console errors or uncaught exceptions.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse diagnostics and document/asset DOM inspection",
      "evidence": "HTML doctype, UTF-8 charset and modern AVIF/WebP assets are present; the one missing intrinsic image size is separately recorded.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse diagnostics and document/asset DOM inspection",
      "evidence": "Lighthouse passed deprecation, BFCache, console and source-map diagnostics; no permission prompt appeared on load.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "DOM metadata, robots/sitemap fetch and no-JS discoverability comparison",
      "evidence": "All four representative content templates expose unique descriptive titles and descriptions.",
      "pathIds": [
        "home",
        "archive",
        "result",
        "article"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "DOM metadata, robots/sitemap fetch and no-JS discoverability comparison",
      "evidence": "Real href links, viewport meta and permissive robots.txt were directly observed.",
      "pathIds": [
        "home",
        "archive",
        "result",
        "article"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "DOM metadata, robots/sitemap fetch and no-JS discoverability comparison",
      "evidence": "200 pages expose matching canonicals; robots allows crawling and declares three sitemaps with current result URLs.",
      "pathIds": [
        "home",
        "archive",
        "result",
        "article"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "DOM metadata, robots/sitemap fetch and no-JS discoverability comparison",
      "evidence": "Homepage/listing JSON-LD and article Article JSON-LD plus 12 Open Graph tags accurately match visible content.",
      "pathIds": [
        "home",
        "archive",
        "result",
        "article"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "headers, cookies, secrets, HAR and tracker primitives",
      "evidence": "HTTPS/cookies are secure, but CSP is missing.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json"
      ],
      "findingIds": [
        "F014"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "pass",
      "confidence": "high",
      "method": "headers, cookies, secrets, HAR and tracker primitives",
      "evidence": "HAR found zero third-party requests/bytes, tracker scan found no known tracker and the only analytics call is a small first-party pageview request.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "medium",
      "method": "headers, cookies, secrets, HAR and tracker primitives",
      "evidence": "No permission prompt appears on load; authentication is delegated to Google rather than an exposed password-only primary flow.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "pass",
      "confidence": "high",
      "method": "headers, cookies, secrets, HAR and tracker primitives",
      "evidence": "HSTS, SAMEORIGIN, nosniff and strict-origin referrer policy pass, but CSP and Permissions-Policy are absent.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "no-JS discoverability, manifest/SW probe, search and 404 failure walkthrough",
      "evidence": "Discoverability measured 100% content coverage without JavaScript on homepage and article, with title/h1/description intact.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/article-discoverability.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "no-JS discoverability, manifest/SW probe, search and 404 failure walkthrough",
      "evidence": "Native links/forms and the tested disclosure/search states remained stable; mobile captures show no clipped core menu or result controls.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "no-JS discoverability, manifest/SW probe, search and 404 failure walkthrough",
      "evidence": "Manifest is complete, but the audited public page has no controlling service worker/offline evidence.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F015"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "no-JS discoverability, manifest/SW probe, search and 404 failure walkthrough",
      "evidence": "Unknown route renders a concise 404 with an actionable homepage link; invalid search provides retry guidance.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "lang/dir/CSS probe and rendered locale-data inspection",
      "evidence": "lang=en-IN is correct, but dir and logical CSS properties are absent and physical positioning is common.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F016"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "medium",
      "method": "lang/dir/CSS probe and rendered locale-data inspection",
      "evidence": "Visible dates, rupee amounts and draw times are consistently formatted for the declared en-IN audience; no mixed-locale output was observed.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "lang/dir/CSS probe and rendered locale-data inspection",
      "evidence": "The audited content publishes fixed local draw schedules and dates, not user-specific or cross-time-zone events; no DST-sensitive workflow exists.",
      "reason": "The audited content publishes fixed local draw schedules and dates, not user-specific or cross-time-zone events; no DST-sensitive workflow exists."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "fresh-profile consent capture and valid/invalid form walkthrough",
      "evidence": "Consent first layer has accept/manage but no equivalent reject control.",
      "pathIds": [
        "home",
        "result"
      ],
      "findingIds": [
        "F017"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "issues",
      "confidence": "high",
      "method": "fresh-profile consent capture and valid/invalid form walkthrough",
      "evidence": "Search error is understandable but lacks aria-invalid, description linkage and live announcement.",
      "pathIds": [
        "home",
        "result"
      ],
      "findingIds": [
        "F018"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "pass",
      "confidence": "high",
      "method": "fresh-profile consent capture and valid/invalid form walkthrough",
      "evidence": "Auth fields use email/new-password/current-password tokens; ticket number intentionally disables irrelevant autofill and constrains numeric input.",
      "pathIds": [
        "home",
        "result"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "high",
      "method": "fresh-profile consent capture and valid/invalid form walkthrough",
      "evidence": "The consent flow is not proportionate because refusal is hidden behind Manage options.",
      "pathIds": [
        "home",
        "result"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "HAR, trace, trackers and images audit",
      "evidence": "Image audit found missing responsive delivery, dimensions and lazy loading on below-fold assets.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F019"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "high",
      "method": "HAR, trace, trackers and images audit",
      "evidence": "HAR has only 9 requests/61KB, trace has no long tasks, and no third-party background work was observed.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "pass",
      "confidence": "high",
      "method": "HAR, trace, trackers and images audit",
      "evidence": "No third-party bytes, fonts, video, audio or autoplay media were loaded; all active network traffic was first party.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "applicability judgement from recon and WebMCP guidance",
      "evidence": "No declared agent-facing surface exists. The public content is crawlable and the emerging WebMCP opportunity is not treated as an obligation.",
      "reason": "No declared agent-facing surface exists. The public content is crawlable and the emerging WebMCP opportunity is not treated as an obligation."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "applicability judgement from recon and WebMCP guidance",
      "evidence": "No summarisation or generative task is part of the site’s core result-checking flow, so built-in AI would add no necessary user value.",
      "reason": "No summarisation or generative task is part of the site’s core result-checking flow, so built-in AI would add no necessary user value."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "baseline/post heap snapshots and 100-cycle same-session memory/DOM probe",
      "evidence": "After 100 open/close disclosure cycles in one session, JS heap, DOM node count and animation count each had delta 0.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/memory-interaction-metrics.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "baseline/post heap snapshots and 100-cycle same-session memory/DOM probe",
      "evidence": "Baseline heap was 3.51MB across 60,326 nodes and runtime DOM contained 663 elements, proportionate to the long content page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "baseline/post heap snapshots and 100-cycle same-session memory/DOM probe",
      "evidence": "One-session 100-cycle probe kept DOM and animation counts unchanged; heap post snapshot remained small (3.81MB) with no unbounded trend.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/memory-interaction-metrics.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F001",
        "F002",
        "F003"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F004"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F005"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F006",
        "F007"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F008",
        "F009"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F010"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F011",
        "F012",
        "F013"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F014"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F015"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F016"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F017",
        "F018"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F019"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "No agent-facing surface or on-device inference use case is declared or necessary for this public lottery result/content site; emerging agent APIs are an optional opportunity."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and ticket-check flow: primary live-result, navigation, install prompt and search journey.",
      "url": "https://lottery.sambad.com/",
      "conditions": [
        "desktop 1440x1000",
        "mobile 360x800",
        "prefers-color-scheme: dark",
        "prefers-contrast: more",
        "prefers-reduced-motion: reduce",
        "keyboard focus",
        "valid and invalid ticket search"
      ],
      "result": "issues"
    },
    {
      "id": "result",
      "description": "Current 1 PM result detail: representative result template and consent experience.",
      "url": "https://lottery.sambad.com/dear-result-today-1-pm",
      "conditions": [
        "mobile 360x800",
        "fresh browser profile"
      ],
      "result": "issues"
    },
    {
      "id": "archive",
      "description": "Old Results: representative archive/listing and date-selection journey.",
      "url": "https://lottery.sambad.com/old/",
      "conditions": [
        "mobile 360x800"
      ],
      "result": "pass"
    },
    {
      "id": "article",
      "description": "Jackpot analysis: representative long-form editorial/article template and rich metadata.",
      "url": "https://lottery.sambad.com/dear-lottery-jackpot-analysis/",
      "conditions": [
        "mobile 360x800",
        "JavaScript disabled crawler comparison"
      ],
      "result": "pass"
    },
    {
      "id": "not-found",
      "description": "Unknown route: representative HTTP failure/recovery surface.",
      "url": "https://lottery.sambad.com/nonexistent-audit-path",
      "conditions": [
        "mobile 360x800"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F001",
      "severity": "medium",
      "confidence": "high",
      "summary": "The UI stays light when the user requests a dark colour scheme.",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "evidence": "The light and dark 360px screenshots are pixel-identical; computed body background remains #fff and color-scheme is normal.",
      "suggestedFix": "Declare color-scheme: light dark and provide preference-driven dark surface/text tokens with light-dark() or a prefers-color-scheme fallback.",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-mobile.png"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    },
    {
      "id": "F002",
      "severity": "medium",
      "confidence": "high",
      "summary": "Loading animations continue under reduced-motion.",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-reduced-motion",
      "guidanceId": "accessibility",
      "guidanceCategory": "user-experience",
      "evidence": "With prefers-reduced-motion: reduce matched, getAnimations() still reported three running animations lasting 2.8–3 seconds, and no reduced-motion CSS was found.",
      "suggestedFix": "Disable non-essential animations in @media (prefers-reduced-motion: reduce) and preserve only necessary state feedback.",
      "artifacts": [
        "evidence/home-reduced-motion.json",
        "evidence/home-comprehensive.json"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    },
    {
      "id": "F003",
      "severity": "low",
      "confidence": "high",
      "summary": "High-contrast preferences receive no dedicated adaptation.",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-contrast",
      "guidanceId": "adapt-scrollbar-to-contrast-preferences",
      "guidanceCategory": "user-experience",
      "evidence": "The prefers-contrast screenshot is visually unchanged and CSS inspection found neither prefers-contrast nor forced-colors rules.",
      "suggestedFix": "Add forced-colors and prefers-contrast adaptations for controls, focus indicators and custom chrome; preserve system colours.",
      "artifacts": [
        "evidence/home-contrast.png",
        "evidence/home-comprehensive.json"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    },
    {
      "id": "F004",
      "severity": "low",
      "confidence": "high",
      "summary": "Page and result-state changes use abrupt swaps rather than View Transitions.",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "cross-document-transitions",
      "guidanceCategory": "user-experience",
      "evidence": "CSS inspection found no view-transition declarations on this MPA, while result/archive navigation is a frequent core interaction.",
      "suggestedFix": "Progressively enhance same-origin result and archive navigations with @view-transition and stable view-transition-name values.",
      "artifacts": [
        "evidence/home-comprehensive.json",
        "evidence/home-mobile.png"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    },
    {
      "id": "F005",
      "severity": "low",
      "confidence": "high",
      "summary": "Long pages provide no scroll-state-aware navigation cue.",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "scroll-progress-indicator",
      "guidanceCategory": "user-experience",
      "evidence": "The homepage is 8,988px tall at 360px, but CSS inspection found no scroll-state container query or progress treatment; the top navigation disappears during the long result/content page.",
      "suggestedFix": "Add a lightweight sticky result context or scroll progress cue, using scroll-state/container queries where supported and a simple sticky fallback.",
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/home-mobile.png"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    },
    {
      "id": "F006",
      "severity": "high",
      "confidence": "high",
      "summary": "A consent wall obscures the primary result on a fresh visit.",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "user-experience",
      "evidence": "The 1 PM mobile screenshot is covered by a near-full-height consent interstitial before the result can be used.",
      "suggestedFix": "Keep core result content available, minimise the first-layer notice, and provide an equally prominent reject path without blocking reading.",
      "artifacts": [
        "evidence/result-mobile.png",
        "evidence/consent-probe.json"
      ],
      "effort": "medium",
      "pathId": "result",
      "url": "https://lottery.sambad.com/dear-result-today-1-pm"
    },
    {
      "id": "F007",
      "severity": "medium",
      "confidence": "high",
      "summary": "The consent overlay is custom chrome rather than a semantic dialog.",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "user-experience",
      "evidence": "The rendered consent UI adds multiple visible h1 elements and no native <dialog>; DOM inspection found zero dialogs/popovers.",
      "suggestedFix": "Implement the modal with <dialog>, one clear heading, labelled controls, focus trapping/restoration, Escape handling and a non-modal fallback.",
      "artifacts": [
        "evidence/result-mobile.png",
        "evidence/consent-probe.json",
        "evidence/home-comprehensive.json"
      ],
      "effort": "medium",
      "pathId": "result",
      "url": "https://lottery.sambad.com/dear-result-today-1-pm"
    },
    {
      "id": "F008",
      "severity": "low",
      "confidence": "high",
      "summary": "Reusable cards adapt only through global layout rules, not container queries.",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "user-experience",
      "evidence": "CSS inspection found no @container/container-type despite cards and result modules being reused in several widths and templates.",
      "suggestedFix": "Give reusable card/result wrappers an inline-size container and move local breakpoints to @container, retaining a basic fallback.",
      "artifacts": [
        "evidence/home-comprehensive.json",
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    },
    {
      "id": "F009",
      "severity": "high",
      "confidence": "high",
      "summary": "Keyboard focus can be invisible and several controls have undersized hit areas.",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "user-experience",
      "evidence": "After programmatically focusing #srch, computed outline was none and box-shadow none. The DOM probe also found visible controls as small as 14×24px.",
      "suggestedFix": "Add a high-contrast :focus-visible ring and ensure every actionable control has at least a 24×24 CSS pixel target, preferably 44×44 on touch layouts.",
      "artifacts": [
        "evidence/focus-probe.json",
        "evidence/home-comprehensive.json"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    },
    {
      "id": "F010",
      "severity": "low",
      "confidence": "high",
      "summary": "One below-fold example image lacks intrinsic dimensions and is oversized.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "user-experience",
      "evidence": "The images primitive found ticket-example-8pm without width/height, rendered at 489px from a 1000px source, and not lazy-loaded.",
      "suggestedFix": "Add width/height, responsive srcset/sizes, and loading=lazy for the below-fold ticket example.",
      "artifacts": [
        "evidence/home-images.json"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    },
    {
      "id": "F011",
      "severity": "high",
      "confidence": "high",
      "summary": "The primary ticket-number field has no programmatic label.",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "user-experience",
      "evidence": "#srch has zero associated labels and no aria-label; its placeholder is the only name-like hint. Hidden sign-up/sign-in fields likewise rely on placeholders.",
      "suggestedFix": "Associate visible <label> elements with all inputs; keep placeholders as examples, not labels.",
      "artifacts": [
        "evidence/focus-probe.json",
        "evidence/home-comprehensive.json",
        "evidence/search-html.json"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    },
    {
      "id": "F012",
      "severity": "high",
      "confidence": "high",
      "summary": "Multiple text and control combinations fail WCAG contrast.",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "user-experience",
      "evidence": "Lighthouse/axe measured ratios from 1.84:1 to 4.33:1 for Pending text, update metadata, WhatsApp/Telegram buttons, Text result and Search.",
      "suggestedFix": "Darken foregrounds or backgrounds so normal text reaches 4.5:1 and large text/UI boundaries reach the applicable WCAG threshold.",
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    },
    {
      "id": "F013",
      "severity": "medium",
      "confidence": "high",
      "summary": "The homepage lacks a main landmark and focus styling.",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "user-experience",
      "evidence": "Lighthouse reports no main landmark; the DOM has nav/aside/footer but no main, while the focused ticket input has no visible outline.",
      "suggestedFix": "Wrap the unique page content in <main>, keep one visible h1, and implement consistent :focus-visible styling in DOM order.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-comprehensive.json",
        "evidence/focus-probe.json"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    },
    {
      "id": "F014",
      "severity": "medium",
      "confidence": "high",
      "summary": "Browser-enforced security policy is incomplete.",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "user-experience",
      "evidence": "HTTPS, HSTS, nosniff, SAMEORIGIN and Referrer-Policy are present, but Content-Security-Policy and Permissions-Policy are absent.",
      "suggestedFix": "Deploy a nonce/hash-based CSP (including frame-ancestors) and a least-privilege Permissions-Policy; test in report-only mode first.",
      "artifacts": [
        "evidence/home-headers.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    },
    {
      "id": "F015",
      "severity": "medium",
      "confidence": "high",
      "summary": "The public app surface is not controlled by a service worker.",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "performance",
      "guidanceCategory": "user-experience",
      "evidence": "A complete manifest advertises a standalone /pwa/ app, but navigator.serviceWorker.controller was false on the audited homepage, so no offline fallback was established for this path.",
      "suggestedFix": "Register a scoped service worker for the intended app entry and cache a small offline shell/result fallback; verify the declared start_url works offline.",
      "artifacts": [
        "evidence/site-files.json",
        "evidence/runtime-metrics.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    },
    {
      "id": "F016",
      "severity": "low",
      "confidence": "high",
      "summary": "Direction and logical layout support are incomplete.",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "translator",
      "guidanceCategory": "user-experience",
      "evidence": "html lang=en-IN is present, but dir is omitted, no logical CSS properties were found, and 36 physical left/right declarations were detected.",
      "suggestedFix": "Set dir=ltr explicitly and migrate component spacing/positioning to logical inline/block properties so future localization and bidi text remain robust.",
      "artifacts": [
        "evidence/home-comprehensive.json",
        "evidence/runtime-metrics.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    },
    {
      "id": "F017",
      "severity": "high",
      "confidence": "high",
      "summary": "Consent choices are asymmetrical on the first layer.",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "privacy",
      "guidanceCategory": "user-experience",
      "evidence": "The fresh-visit consent layer exposes Consent and Manage options but no visible Reject/Deny equivalent, while describing sharing with 210 partners.",
      "suggestedFix": "Offer Accept and Reject with equal prominence on the first layer, use neutral wording, and make withdrawal as easy as consent.",
      "artifacts": [
        "evidence/result-mobile.png",
        "evidence/consent-probe.json"
      ],
      "effort": "medium",
      "pathId": "result",
      "url": "https://lottery.sambad.com/dear-result-today-1-pm"
    },
    {
      "id": "F018",
      "severity": "medium",
      "confidence": "high",
      "summary": "Ticket-search validation is visual only and not announced.",
      "principleId": "be-trustworthy",
      "principleCheckId": "humane-error-handling",
      "guidanceId": "accessible-error-announcement",
      "guidanceCategory": "user-experience",
      "evidence": "Empty submission reveals “Please enter all 5 digits”, but the input has no label/aria-describedby and the error container has no live-region semantics.",
      "suggestedFix": "Associate the error with the input, set aria-invalid after interaction, and announce changes with a concise aria-live region while retaining the successful recovery path.",
      "artifacts": [
        "evidence/search-html.json",
        "evidence/search-invalid-state.json",
        "evidence/search-valid-state.json"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    },
    {
      "id": "F019",
      "severity": "low",
      "confidence": "high",
      "summary": "Below-fold image delivery wastes avoidable bytes/work.",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "guidanceCategory": "user-experience",
      "evidence": "The image audit found one 1000px asset displayed at 489px, missing responsive sources/dimensions, plus three below-fold images without lazy loading.",
      "suggestedFix": "Serve responsive AVIF/WebP candidates with srcset/sizes, intrinsic dimensions and lazy loading for non-critical images.",
      "artifacts": [
        "evidence/home-images.json"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://lottery.sambad.com/"
    }
  ],
  "taskList": [
    {
      "id": "T001",
      "title": "Make consent non-blocking, symmetric and semantic",
      "priority": 1,
      "findingIds": [
        "F006",
        "F007",
        "F017"
      ],
      "guidanceId": "light-dismiss-a-dialog",
      "status": "open"
    },
    {
      "id": "T002",
      "title": "Restore accessible names, landmarks, focus and contrast",
      "priority": 2,
      "findingIds": [
        "F009",
        "F011",
        "F012",
        "F013",
        "F018"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T003",
      "title": "Respect colour, motion and contrast preferences",
      "priority": 3,
      "findingIds": [
        "F001",
        "F002",
        "F003"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T004",
      "title": "Deploy CSP and least-privilege browser policies",
      "priority": 4,
      "findingIds": [
        "F014"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T005",
      "title": "Finish offline coverage for the advertised PWA",
      "priority": 5,
      "findingIds": [
        "F015"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T006",
      "title": "Modernise component responsiveness and navigation motion",
      "priority": 6,
      "findingIds": [
        "F004",
        "F005",
        "F008"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    },
    {
      "id": "T007",
      "title": "Optimise responsive below-fold images",
      "priority": 7,
      "findingIds": [
        "F010",
        "F019"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T008",
      "title": "Adopt logical layout properties",
      "priority": 8,
      "findingIds": [
        "F016"
      ],
      "guidanceId": "translator",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 5,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-22T21-17-49-292Z"
}
