{
  "url": "https://pk.sapphireonline.pk",
  "auditedAt": "2026-07-28T05:25:28.207Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Atomic coverage complete across 58 checks and five representative paths.",
  "page": {
    "appType": "mpa",
    "framework": "Salesforce Commerce Cloud / server-rendered MPA",
    "notes": "Public Pakistani fashion-commerce storefront with home, listing, product, search, and error templates. Locale/notification overlays appear on first load."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "images",
    "secrets",
    "heap-summary",
    "lighthouse",
    "HTTP fetch",
    "Modern Web Guidance search/retrieve"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "same-document-transitions",
    "scrollability-affordance-hints",
    "declarative-dialog-popover-control",
    "light-dismiss-a-dialog",
    "fluid-scaling",
    "forms",
    "performance",
    "html",
    "security",
    "privacy",
    "support-global-calendar-systems",
    "optimize-image-priority",
    "identify-heavy-scripts"
  ],
  "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
  },
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/collection-mobile.png",
      "caption": "collection mobile",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/product-mobile.png",
      "caption": "product mobile",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/search-mobile.png",
      "caption": "search mobile",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/404-mobile.png",
      "caption": "404 mobile",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-rendered.png",
      "caption": "discoverability rendered",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-crawler.png",
      "caption": "discoverability crawler",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "recon",
      "findingIds": [
        "F09",
        "F13",
        "F18",
        "F19"
      ]
    },
    {
      "type": "other",
      "path": "evidence/collection-recon.json",
      "caption": "collection recon",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/collection-probe.json",
      "caption": "collection probe",
      "findingIds": [
        "F18"
      ]
    },
    {
      "type": "other",
      "path": "evidence/product-probe.json",
      "caption": "product probe",
      "findingIds": [
        "F14",
        "F19"
      ]
    },
    {
      "type": "other",
      "path": "evidence/platform-probe.json",
      "caption": "platform probe",
      "findingIds": [
        "F04",
        "F05",
        "F09",
        "F10"
      ]
    },
    {
      "type": "other",
      "path": "evidence/preferences-probe.json",
      "caption": "preferences probe",
      "findingIds": [
        "F02",
        "F03",
        "F04"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-layout-mobile.json",
      "caption": "home layout mobile",
      "findingIds": []
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home",
      "findingIds": [
        "F06",
        "F20"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": [
        "F06",
        "F07",
        "F16",
        "F20"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace",
      "findingIds": []
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": [
        "F06"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability.json",
      "caption": "discoverability",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers",
      "findingIds": [
        "F15",
        "F17"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies",
      "findingIds": [
        "F15"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers",
      "findingIds": [
        "F16"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "images",
      "findingIds": [
        "F08",
        "F12",
        "F20"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home.json",
      "caption": "lighthouse home",
      "findingIds": [
        "F05",
        "F06",
        "F07",
        "F08",
        "F11",
        "F12",
        "F13"
      ]
    },
    {
      "type": "other",
      "path": "evidence/lighthouse-key-audits.json",
      "caption": "lighthouse key audits",
      "findingIds": [
        "F05",
        "F08",
        "F09",
        "F10",
        "F11"
      ]
    },
    {
      "type": "other",
      "path": "evidence/http-recon.txt",
      "caption": "http recon",
      "findingIds": [
        "F13"
      ]
    },
    {
      "type": "other",
      "path": "evidence/404-probe.json",
      "caption": "404 probe",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/add-to-cart-flow.json",
      "caption": "add to cart flow",
      "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/guidance-consulted.txt",
      "caption": "guidance consulted",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-performance.md",
      "caption": "guidance performance",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-accessibility.md",
      "caption": "guidance accessibility",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-security.md",
      "caption": "guidance security",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-privacy.md",
      "caption": "guidance privacy",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-optimize-image-priority.md",
      "caption": "guidance optimize image priority",
      "findingIds": []
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and first-load experience; global navigation, hero, overlays, preferences, performance, security, and crawler behavior. Represents global chrome. Not covering every campaign module because they reuse the same template.",
      "url": "https://pk.sapphireonline.pk",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "crawler without JavaScript"
      ],
      "result": "issues"
    },
    {
      "id": "collection",
      "description": "Ready-to-wear collection listing; represents product grids, filtering, scrolling, responsive cards, and repeated interaction. Other collection categories were de-duplicated as the same archetype.",
      "url": "https://pk.sapphireonline.pk/collections/ready-to-wear",
      "conditions": [
        "viewport: 360x800",
        "ten repeated scroll cycles"
      ],
      "result": "issues"
    },
    {
      "id": "product",
      "description": "Sample product detail and pre-cart journey; represents product metadata, pricing, sizing, and add-to-bag state. Checkout/payment was not submitted to avoid a real transaction.",
      "url": "https://pk.sapphireonline.pk/collections/ready-to-wear/products/PEW26CSTV815_999.html",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "search",
      "description": "Search results for “lawn”; represents search discovery and listing state.",
      "url": "https://pk.sapphireonline.pk/search?q=lawn",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "error-404",
      "description": "Deliberately invalid URL; represents HTTP/error recovery. Server 500 behavior and offline checkout were not forced against production.",
      "url": "https://pk.sapphireonline.pk/not-a-real-page-web-uplift",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "pass"
    }
  ],
  "checkOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-color-scheme",
      "confidence": "high",
      "status": "issues",
      "method": "Dark-media screenshot plus computed CSS probe",
      "evidence": "Under prefers-color-scheme: dark, the screenshot remains a light-only interface. The computed root color-scheme is normal, and CSS inspection found only scrollbar-specific dark rules.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/preferences-probe.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "confidence": "high",
      "status": "issues",
      "method": "Reduced-motion animation/CSS probe",
      "evidence": "The reduced-motion probe found three running 1.5-second blinker animations. Some Bootstrap transitions are disabled, but these repeated animations remain active.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences-probe.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "confidence": "high",
      "status": "pass",
      "method": "Lighthouse accessibility contrast audit plus screenshots",
      "evidence": "Lighthouse color-contrast passed and screenshots show controls/text remain visually distinct; no custom forced-colors suppression was found.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "confidence": "high",
      "status": "issues",
      "method": "Live CSS/platform feature inspection",
      "evidence": "Live CSS inspection found no View Transition rules, container queries, CSS anchor positioning, animation-timeline, or scroll-timeline despite route changes, reusable product tiles, menus, and dialogs.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/preferences-probe.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "confidence": "high",
      "status": "pass",
      "method": "Live CSS rule inspection and interaction recon",
      "evidence": "No scroll-linked parallax/scrollytelling animation was observed; the carousel uses declarative CSS scroll-snap rules rather than a scroll event animation.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences-probe.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "confidence": "high",
      "status": "pass",
      "method": "Live CSS scroll-snap inspection and mobile screenshots",
      "evidence": "CSS inspection found horizontal and vertical scroll-snap rules, and mobile screenshots show native scrolling layouts without custom pointer-gesture UI.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences-probe.json",
        "evidence/collection-mobile.png"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "confidence": "high",
      "status": "issues",
      "method": "Live CSS and screenshot review",
      "evidence": "Live CSS inspection found no View Transition rules, container queries, CSS anchor positioning, animation-timeline, or scroll-timeline despite route changes, reusable product tiles, menus, and dialogs.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/preferences-probe.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "confidence": "high",
      "status": "issues",
      "method": "Live CSS and overlay DOM inspection",
      "evidence": "Live CSS inspection found no View Transition rules, container queries, CSS anchor positioning, animation-timeline, or scroll-timeline despite route changes, reusable product tiles, menus, and dialogs.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/preferences-probe.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "confidence": "high",
      "status": "pass",
      "method": "Visual and DOM review of collection/product navigation",
      "evidence": "Collection/product paths expose breadcrumbs, active category underlines, clear section labels, and visible product selection states.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/collection-mobile.png",
        "evidence/product-mobile.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "confidence": "high",
      "status": "issues",
      "method": "First-load screenshots and overlay DOM probe",
      "evidence": "Desktop and mobile screenshots show a country-switch modal over the page; mobile also shows a notification solicitation above it. The modal occupies most of the 360×800 viewport on home, collection, product, and search paths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/product-mobile.png",
        "evidence/search-mobile.png"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "confidence": "high",
      "status": "issues",
      "method": "Overlay DOM inspection and Lighthouse dialog audit",
      "evidence": "Lighthouse accessibility scored 84 and failed aria-dialog-name and link-name. It identified the country modal without an accessible name and multiple focusable logo/banner/product links without discernible names. The image audit found 19 images without alt text.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-key-audits.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "confidence": "high",
      "status": "issues",
      "method": "First-viewport screenshot review",
      "evidence": "Desktop and mobile screenshots show a country-switch modal over the page; mobile also shows a notification solicitation above it. The modal occupies most of the 360×800 viewport on home, collection, product, and search paths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/product-mobile.png",
        "evidence/search-mobile.png"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "confidence": "high",
      "status": "pass",
      "method": "CDP layout metrics at 360×800",
      "evidence": "At 360×800, layout metrics reported scrollWidth=clientWidth=360 and 0 px horizontal overflow across a 4,365 px document.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-layout-mobile.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "confidence": "high",
      "status": "issues",
      "method": "Live CSS rule inspection",
      "evidence": "Live CSS inspection found no View Transition rules, container queries, CSS anchor positioning, animation-timeline, or scroll-timeline despite route changes, reusable product tiles, menus, and dialogs.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/preferences-probe.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "confidence": "high",
      "status": "issues",
      "method": "Programmatic focus-style probe plus Lighthouse target audit",
      "evidence": "The focus probe computed outline-style none and no box-shadow on sampled visible controls. Lighthouse failed target-size and identified controls as small as 104×15 CSS px.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-key-audits.json"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "confidence": "high",
      "status": "issues",
      "method": "First-viewport visual review",
      "evidence": "Desktop and mobile screenshots show a country-switch modal over the page; mobile also shows a notification solicitation above it. The modal occupies most of the 360×800 viewport on home, collection, product, and search paths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/product-mobile.png",
        "evidence/search-mobile.png"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "confidence": "high",
      "status": "issues",
      "method": "Product/search journey screenshots and add-to-cart probe",
      "evidence": "Desktop and mobile screenshots show a country-switch modal over the page; mobile also shows a notification solicitation above it. The modal occupies most of the 360×800 viewport on home, collection, product, and search paths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/product-mobile.png",
        "evidence/search-mobile.png"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "confidence": "high",
      "status": "pass",
      "method": "404 and product-state walkthrough",
      "evidence": "The sampled 404 clearly says the page cannot be found and provides a homepage recovery link; product alerts use role=alert and the add button visibly remains disabled until selection.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/404-probe.json",
        "evidence/add-to-cart-flow.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "confidence": "high",
      "status": "issues",
      "method": "Lighthouse and independent CDP trace",
      "evidence": "Lighthouse measured LCP 6.5 s, TBT 440 ms, Speed Index 9.7 s, and performance 56. The independent trace measured LCP 7.94 s, two long tasks, and 97.76 ms TBT. The HAR captured 162 requests and 8.46 MB transferred.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "confidence": "high",
      "status": "pass",
      "method": "CDP layout-shift observer and Lighthouse",
      "evidence": "Layout observation measured CLS 0.00039 with only two tiny shifts; Lighthouse independently measured CLS 0.00032.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/lighthouse-home.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "confidence": "high",
      "status": "issues",
      "method": "Lighthouse and CDP trace long-task analysis",
      "evidence": "Lighthouse measured LCP 6.5 s, TBT 440 ms, Speed Index 9.7 s, and performance 56. The independent trace measured LCP 7.94 s, two long tasks, and 97.76 ms TBT. The HAR captured 162 requests and 8.46 MB transferred.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "confidence": "high",
      "status": "issues",
      "method": "HAR summary confirmed against DOM/Lighthouse insights",
      "evidence": "Lighthouse measured LCP 6.5 s, TBT 440 ms, Speed Index 9.7 s, and performance 56. The independent trace measured LCP 7.94 s, two long tasks, and 97.76 ms TBT. The HAR captured 162 requests and 8.46 MB transferred.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "confidence": "high",
      "status": "issues",
      "method": "Lighthouse code diagnostics plus HAR",
      "evidence": "Lighthouse estimated 447 KiB unused JavaScript and 64 KiB unused CSS. HAR recorded 25 scripts and 92 third-party requests, including 674 KB from Google Tag Manager.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "confidence": "high",
      "status": "issues",
      "method": "Lighthouse accessibility tree audit plus image audit",
      "evidence": "Lighthouse accessibility scored 84 and failed aria-dialog-name and link-name. It identified the country modal without an accessible name and multiple focusable logo/banner/product links without discernible names. The image audit found 19 images without alt text.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-key-audits.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "confidence": "high",
      "status": "pass",
      "method": "Lighthouse accessibility audit and screenshots",
      "evidence": "Lighthouse did not flag color-contrast and screenshots show readable black/white text and controls on sampled templates.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "confidence": "high",
      "status": "issues",
      "method": "Lighthouse heading audit plus focus probe",
      "evidence": "Lighthouse failed heading-order for H4/H5 jumps; recon found two H1 elements on the home page. Focus probes found no visible CSS outline on sampled controls.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/lighthouse-key-audits.json",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "confidence": "high",
      "status": "pass",
      "method": "Multi-template mobile screenshot review and layout metrics",
      "evidence": "Mobile home, collection, product, and search screenshots show readable line lengths and no clipping or horizontal overflow once overlays are disregarded.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/collection-mobile.png",
        "evidence/product-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "confidence": "high",
      "status": "issues",
      "method": "Viewport DOM probe and Lighthouse",
      "evidence": "The live viewport meta is width=device-width, initial-scale=1, maximum-scale=1. Lighthouse failed meta-viewport because maximum-scale below 5 prevents magnification.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-key-audits.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "confidence": "high",
      "status": "issues",
      "method": "Lighthouse console audit",
      "evidence": "Lighthouse failed errors-in-console because ajax-loader.gif returned 404, failed inspector-issues, and reported five BFCache failure reasons.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-key-audits.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "confidence": "high",
      "status": "issues",
      "method": "Image primitive and Lighthouse",
      "evidence": "The image primitive found 38 images without width/height, 19 without alt, 68 without srcset, 15 oversized, and 35 in legacy formats. Lighthouse also failed unsized-images.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "confidence": "high",
      "status": "issues",
      "method": "Lighthouse BFCache/inspector audit",
      "evidence": "Lighthouse failed errors-in-console because ajax-loader.gif returned 404, failed inspector-issues, and reported five BFCache failure reasons.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-key-audits.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "confidence": "high",
      "status": "pass",
      "method": "DOM metadata probes on representative templates",
      "evidence": "Home, collection, and product probes each found descriptive titles and meta descriptions; titles are template-specific.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/collection-probe.json",
        "evidence/product-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "confidence": "high",
      "status": "issues",
      "method": "DOM links, robots fetch, and Lighthouse SEO",
      "evidence": "Lighthouse failed crawlable-anchors; recon found an href=\"javascript:;\" cart link. Lighthouse also failed robots.txt, and the file uses non-standard Sitemap2 rather than Sitemap for the product sitemap.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/http-recon.txt",
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "confidence": "high",
      "status": "issues",
      "method": "Canonical/robots/sitemap probes and Lighthouse SEO",
      "evidence": "Lighthouse failed crawlable-anchors; recon found an href=\"javascript:;\" cart link. Lighthouse also failed robots.txt, and the file uses non-standard Sitemap2 rather than Sitemap for the product sitemap.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/http-recon.txt",
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "confidence": "high",
      "status": "issues",
      "method": "Product JSON-LD/Open Graph probe",
      "evidence": "On the sampled product URL, JSON-LD types were Organization, ClothingStore, and WebPage, with no Product schema. og:type remained website rather than product, despite visible SKU, price, and availability UI.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/product-probe.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "confidence": "high",
      "status": "issues",
      "method": "Header and cookie primitives",
      "evidence": "HTTPS, HSTS, nosniff, and frame-ancestors are present, but CSP contains only frame-ancestors. Cookie audit found 18 flagged cookies, including analytics cookies without Secure, widespread SameSite=None, and several roughly 395–400 day cookies.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "confidence": "high",
      "status": "issues",
      "method": "Tracker and HAR primitives",
      "evidence": "Tracker capture found 26 third-party origins and six known tracker domains, including Google/DoubleClick, Facebook, and Mixpanel. HAR attributed 92 requests and 6.51 MB to third parties.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "confidence": "high",
      "status": "issues",
      "method": "First-load screenshot and notification UI inspection",
      "evidence": "Desktop and mobile screenshots show a country-switch modal over the page; mobile also shows a notification solicitation above it. The modal occupies most of the 360×800 viewport on home, collection, product, and search paths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/product-mobile.png",
        "evidence/search-mobile.png"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "confidence": "high",
      "status": "issues",
      "method": "Security-header primitive",
      "evidence": "Headers show no Referrer-Policy or Permissions-Policy. HSTS max-age is only 1800 seconds, and CSP provides clickjacking protection but no script/style XSS policy.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "confidence": "high",
      "status": "pass",
      "method": "Raw HTML versus rendered DOM discoverability comparison",
      "evidence": "Discoverability comparison found 92% raw/rendered content overlap, no JS shell, a raw meta description, and substantial crawler-visible content.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/discoverability.json",
        "evidence/discoverability-crawler.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "confidence": "high",
      "status": "pass",
      "method": "Mobile overlay/control walkthrough",
      "evidence": "Dialogs remained within the 360 px viewport, collection/product controls rendered, and no blank or unstable shell was observed on sampled runtime paths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/collection-mobile.png",
        "evidence/product-mobile.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "confidence": "high",
      "status": "not-applicable",
      "method": "Recon and applicability judgement against the contextual catalog criteria",
      "evidence": "This is a transactional web storefront rather than an installable app; offline checkout cannot complete and no install intent was observed.",
      "reason": "This is a transactional web storefront rather than an installable app; offline checkout cannot complete and no install intent was observed."
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "confidence": "high",
      "status": "pass",
      "method": "Invalid-route recovery test",
      "evidence": "A deliberately invalid URL rendered a clear 404 message and a working homepage recovery link rather than a blank shell or spinner.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/404-mobile.png",
        "evidence/404-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "confidence": "high",
      "status": "issues",
      "method": "DOM lang/dir and regional navigation inspection",
      "evidence": "The site links to PK, UK, US, UAE, and rest-of-world storefronts, but the sampled collection emits literal Rs. price strings and the rendered-script probe found no Intl or Temporal use. html lang is en and dir is omitted.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/collection-probe.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "confidence": "high",
      "status": "issues",
      "method": "Collection price/script probe",
      "evidence": "The site links to PK, UK, US, UAE, and rest-of-world storefronts, but the sampled collection emits literal Rs. price strings and the rendered-script probe found no Intl or Temporal use. html lang is en and dir is omitted.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/collection-probe.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "confidence": "high",
      "status": "not-applicable",
      "method": "Recon and applicability judgement against the contextual catalog criteria",
      "evidence": "No event scheduling, dates, times, or recurring time concepts appear on the sampled commerce templates.",
      "reason": "No event scheduling, dates, times, or recurring time concepts appear on the sampled commerce templates."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "confidence": "high",
      "status": "issues",
      "method": "First-load prompt and consent-pattern review",
      "evidence": "Desktop and mobile screenshots show a country-switch modal over the page; mobile also shows a notification solicitation above it. The modal occupies most of the 360×800 viewport on home, collection, product, and search paths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/product-mobile.png",
        "evidence/search-mobile.png"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "confidence": "high",
      "status": "pass",
      "method": "Form/product state DOM inspection",
      "evidence": "The newsletter uses a required native email field, the product prevents add-to-bag before size selection, and status messages are exposed as alerts rather than silent failure.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/add-to-cart-flow.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "confidence": "high",
      "status": "issues",
      "method": "Form field DOM inspection",
      "evidence": "Recon found the first email field has autocomplete=email, while a second visible email input has no name, label, aria-label, or autocomplete token.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/product-probe.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "confidence": "high",
      "status": "pass",
      "method": "Product purchase-surface walkthrough",
      "evidence": "The product surface visibly presents price, installment amount, SKU, required size choice, size chart, disabled add-to-bag state, and exchange/return policy link before commitment.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/product-mobile.png",
        "evidence/product-probe.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "confidence": "high",
      "status": "issues",
      "method": "Image and HAR primitives",
      "evidence": "HAR captured 8.46 MB total, including 6.51 MB images and 6.51 MB third-party bytes. The image audit found 15 oversized, 68 without srcset, and 21 below-fold images without lazy loading.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/images.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "confidence": "high",
      "status": "issues",
      "method": "HAR/trackers resource analysis",
      "evidence": "Tracker capture found 26 third-party origins and six known tracker domains, including Google/DoubleClick, Facebook, and Mixpanel. HAR attributed 92 requests and 6.51 MB to third parties. HAR captured 8.46 MB total, including 6.51 MB images and 6.51 MB third-party bytes. The image audit found 15 oversized, 68 without srcset, and 21 below-fold images without lazy loading.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/images.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F16",
        "F20"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "confidence": "high",
      "status": "issues",
      "method": "HAR and image audit",
      "evidence": "HAR captured 8.46 MB total, including 6.51 MB images and 6.51 MB third-party bytes. The image audit found 15 oversized, 68 without srcset, and 21 below-fold images without lazy loading.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/images.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "confidence": "high",
      "status": "not-applicable",
      "method": "Recon and applicability judgement against the contextual catalog criteria",
      "evidence": "No declared or visible agent-facing surface was present; this emerging capability is not treated as an obligation for this storefront.",
      "reason": "No declared or visible agent-facing surface was present; this emerging capability is not treated as an obligation for this storefront."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "confidence": "high",
      "status": "not-applicable",
      "method": "Recon and applicability judgement against the contextual catalog criteria",
      "evidence": "No summarisation or language-model task is part of the sampled shopping journeys; on-device inference is not applicable.",
      "reason": "No summarisation or language-model task is part of the sampled shopping journeys; on-device inference is not applicable."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "confidence": "high",
      "status": "pass",
      "method": "Baseline/post heap snapshots around ten scroll cycles",
      "evidence": "After ten collection scroll cycles, heap self-size increased only 197,784 bytes (0.7%) and node count 1,515 (0.3%), not evidence of unbounded retained growth.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "confidence": "high",
      "status": "pass",
      "method": "Heap summary plus Performance.memory and DOM count",
      "evidence": "The collection heap was about 28.3 MB with 2,366 live DOM elements and about 19.6 MB used JS heap, proportionate to a media-heavy product listing.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/collection-probe.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "confidence": "high",
      "status": "pass",
      "method": "Before/post heap comparison and live DOM probe",
      "evidence": "The live DOM probe found zero disconnected queried nodes; the repeated interaction produced only small bounded heap growth with no leak signal.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot",
        "evidence/collection-probe.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F02",
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01",
        "F08"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04",
        "F05"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06",
        "F07"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F08",
        "F09",
        "F10"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F11",
        "F12"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F13",
        "F14"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F15",
        "F16",
        "F01",
        "F17"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01",
        "F19"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F20",
        "F16"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "All checks are contextual and were judged outside the sampled storefront’s declared or observable user journeys."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "user-experience",
      "summary": "Two unsolicited overlays obscure the primary experience on arrival.",
      "evidence": "Desktop and mobile screenshots show a country-switch modal over the page; mobile also shows a notification solicitation above it. The modal occupies most of the 360×800 viewport on home, collection, product, and search paths.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/product-mobile.png",
        "evidence/search-mobile.png"
      ],
      "suggestedFix": "Do not open either prompt on first paint. Infer locale unobtrusively, offer a dismissible inline switcher, and ask for notifications only after a user action demonstrates intent. Use a named native dialog/popover with light dismiss if an overlay is necessary.",
      "effort": "medium"
    },
    {
      "id": "F02",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "summary": "The page does not provide a user-preference-driven dark theme.",
      "evidence": "Under prefers-color-scheme: dark, the screenshot remains a light-only interface. The computed root color-scheme is normal, and CSS inspection found only scrollbar-specific dark rules.",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/preferences-probe.json"
      ],
      "suggestedFix": "Declare color-scheme: light dark and move surface, text, border, form, and overlay colors to tokens using light-dark() or prefers-color-scheme.",
      "effort": "medium"
    },
    {
      "id": "F03",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-reduced-motion",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Motion continues when reduced motion is requested.",
      "evidence": "The reduced-motion probe found three running 1.5-second blinker animations. Some Bootstrap transitions are disabled, but these repeated animations remain active.",
      "artifacts": [
        "evidence/preferences-probe.json"
      ],
      "suggestedFix": "Within prefers-reduced-motion: reduce, stop all non-essential repeated animations and auto-advance, not only framework transitions.",
      "effort": "small"
    },
    {
      "id": "F04",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "low",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "user-experience",
      "summary": "Navigation and adaptive components rely on legacy viewport/global patterns rather than modern declarative primitives.",
      "evidence": "Live CSS inspection found no View Transition rules, container queries, CSS anchor positioning, animation-timeline, or scroll-timeline despite route changes, reusable product tiles, menus, and dialogs.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/preferences-probe.json"
      ],
      "suggestedFix": "Adopt View Transitions for route/state changes, container queries for reusable tiles, and anchor positioning for tethered menus where those interactions are next revised; retain fallbacks.",
      "effort": "large"
    },
    {
      "id": "F05",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Keyboard focus and touch targeting are not reliably perceivable or usable.",
      "evidence": "The focus probe computed outline-style none and no box-shadow on sampled visible controls. Lighthouse failed target-size and identified controls as small as 104×15 CSS px.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-key-audits.json"
      ],
      "suggestedFix": "Add a high-contrast :focus-visible indicator and increase interactive target boxes/spacing to at least 24×24 CSS px, preferably 44×44 for primary touch controls.",
      "effort": "small"
    },
    {
      "id": "F06",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "summary": "The mobile load is slow and ships excessive blocking work.",
      "evidence": "Lighthouse measured LCP 6.5 s, TBT 440 ms, Speed Index 9.7 s, and performance 56. The independent trace measured LCP 7.94 s, two long tasks, and 97.76 ms TBT. The HAR captured 162 requests and 8.46 MB transferred.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json",
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "suggestedFix": "Prioritize the hero/LCP image, reduce render-blocking CSS chains, defer non-critical scripts and third parties, split long tasks, and retest under mobile throttling.",
      "effort": "large"
    },
    {
      "id": "F07",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "summary": "Unused and third-party code materially inflates the critical load.",
      "evidence": "Lighthouse estimated 447 KiB unused JavaScript and 64 KiB unused CSS. HAR recorded 25 scripts and 92 third-party requests, including 674 KB from Google Tag Manager.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Remove duplicate tags, load analytics after consent/idle, code-split route features, and purge or defer unused CSS/JavaScript.",
      "effort": "large"
    },
    {
      "id": "F08",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Important links and dialogs are not fully exposed to assistive technology.",
      "evidence": "Lighthouse accessibility scored 84 and failed aria-dialog-name and link-name. It identified the country modal without an accessible name and multiple focusable logo/banner/product links without discernible names. The image audit found 19 images without alt text.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-key-audits.json",
        "evidence/images.json"
      ],
      "suggestedFix": "Give every dialog a valid accessible name, ensure linked images/overlay links expose meaningful names, and provide contextual alt text or empty alt for decorative images.",
      "effort": "medium"
    },
    {
      "id": "F09",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "medium",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Heading structure and focus treatment do not support reliable navigation.",
      "evidence": "Lighthouse failed heading-order for H4/H5 jumps; recon found two H1 elements on the home page. Focus probes found no visible CSS outline on sampled controls.",
      "artifacts": [
        "evidence/recon.json",
        "evidence/lighthouse-key-audits.json",
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Use one page-level H1, preserve sequential heading levels, and implement a visible focus order/indicator aligned with reading order.",
      "effort": "medium"
    },
    {
      "id": "F10",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "user-experience",
      "summary": "The viewport configuration restricts user zoom.",
      "evidence": "The live viewport meta is width=device-width, initial-scale=1, maximum-scale=1. Lighthouse failed meta-viewport because maximum-scale below 5 prevents magnification.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-key-audits.json"
      ],
      "suggestedFix": "Remove maximum-scale and any user-scalable restriction; verify reflow and controls at 200% and 400% zoom.",
      "effort": "trivial"
    },
    {
      "id": "F11",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "medium",
      "principleId": "follow-best-practices",
      "principleCheckId": "no-console-errors",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "The page logs a resource error and browser inspector issues.",
      "evidence": "Lighthouse failed errors-in-console because ajax-loader.gif returned 404, failed inspector-issues, and reported five BFCache failure reasons.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-key-audits.json"
      ],
      "suggestedFix": "Restore or remove the missing asset, resolve DevTools Issues, and eliminate avoidable BFCache blockers.",
      "effort": "medium"
    },
    {
      "id": "F12",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "medium",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Image markup is not consistently sized or semantically complete.",
      "evidence": "The image primitive found 38 images without width/height, 19 without alt, 68 without srcset, 15 oversized, and 35 in legacy formats. Lighthouse also failed unsized-images.",
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse-home.json"
      ],
      "suggestedFix": "Emit intrinsic width/height or aspect-ratio, responsive srcset/sizes, modern formats, and correct alt semantics from the image component.",
      "effort": "medium"
    },
    {
      "id": "F13",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "medium",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Some links and crawler directives are invalid.",
      "evidence": "Lighthouse failed crawlable-anchors; recon found an href=\"javascript:;\" cart link. Lighthouse also failed robots.txt, and the file uses non-standard Sitemap2 rather than Sitemap for the product sitemap.",
      "artifacts": [
        "evidence/recon.json",
        "evidence/http-recon.txt",
        "evidence/lighthouse-home.json"
      ],
      "suggestedFix": "Use real href destinations or buttons for actions, and replace Sitemap2 with a valid Sitemap directive. Revalidate robots.txt.",
      "effort": "small"
    },
    {
      "id": "F14",
      "pathId": "product",
      "url": "https://pk.sapphireonline.pk/collections/ready-to-wear/products/PEW26CSTV815_999.html",
      "confidence": "high",
      "severity": "medium",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Product rich metadata does not describe the product entity.",
      "evidence": "On the sampled product URL, JSON-LD types were Organization, ClothingStore, and WebPage, with no Product schema. og:type remained website rather than product, despite visible SKU, price, and availability UI.",
      "artifacts": [
        "evidence/product-probe.json"
      ],
      "suggestedFix": "Add Product JSON-LD with offers, currency, availability, canonical URL, images, and SKU; emit product-specific Open Graph fields matching visible content.",
      "effort": "small"
    },
    {
      "id": "F15",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "Cookie and CSP protections are substantially weaker than the HTTPS transport.",
      "evidence": "HTTPS, HSTS, nosniff, and frame-ancestors are present, but CSP contains only frame-ancestors. Cookie audit found 18 flagged cookies, including analytics cookies without Secure, widespread SameSite=None, and several roughly 395–400 day cookies.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Deploy a nonce/hash-based CSP covering script/style/connect/img/frame sources, mark all HTTPS cookies Secure, use Lax/Strict unless cross-site use is necessary, and reduce identifiers/lifetimes.",
      "effort": "large"
    },
    {
      "id": "F16",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "summary": "Tracking and third-party collection start before demonstrated user intent.",
      "evidence": "Tracker capture found 26 third-party origins and six known tracker domains, including Google/DoubleClick, Facebook, and Mixpanel. HAR attributed 92 requests and 6.51 MB to third parties.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Create a third-party inventory, remove low-value vendors, gate non-essential tracking behind consent, minimize identifiers, and batch remaining analytics.",
      "effort": "large"
    },
    {
      "id": "F17",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "medium",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "Several browser-enforced defensive policies are absent or too weak.",
      "evidence": "Headers show no Referrer-Policy or Permissions-Policy. HSTS max-age is only 1800 seconds, and CSP provides clickjacking protection but no script/style XSS policy.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "suggestedFix": "Set an appropriate Referrer-Policy and least-privilege Permissions-Policy, lengthen HSTS after validation, and expand CSP safely with report-only rollout.",
      "effort": "medium"
    },
    {
      "id": "F18",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "medium",
      "principleId": "be-internationalised",
      "principleCheckId": "locale-aware-data",
      "guidanceId": "support-global-calendar-systems",
      "guidanceCategory": "user-experience",
      "summary": "Regional commerce data appears hard-coded rather than locale-aware.",
      "evidence": "The site links to PK, UK, US, UAE, and rest-of-world storefronts, but the sampled collection emits literal Rs. price strings and the rendered-script probe found no Intl or Temporal use. html lang is en and dir is omitted.",
      "artifacts": [
        "evidence/recon.json",
        "evidence/collection-probe.json"
      ],
      "suggestedFix": "Format currency/numbers with Intl.NumberFormat using explicit locale/currency data, set lang/dir for each storefront, and use logical CSS properties so translated/RTL layouts remain sound.",
      "effort": "medium"
    },
    {
      "id": "F19",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "medium",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "forms",
      "guidanceCategory": "forms",
      "summary": "Newsletter input assistance is inconsistent.",
      "evidence": "Recon found the first email field has autocomplete=email, while a second visible email input has no name, label, aria-label, or autocomplete token.",
      "artifacts": [
        "evidence/recon.json",
        "evidence/product-probe.json"
      ],
      "suggestedFix": "Give every newsletter field a persistent label, stable name, type=email, and autocomplete=email; associate validation/help text programmatically.",
      "effort": "small"
    },
    {
      "id": "F20",
      "pathId": "home",
      "url": "https://pk.sapphireonline.pk",
      "confidence": "high",
      "severity": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "summary": "The page transfers a disproportionate image and third-party payload.",
      "evidence": "HAR captured 8.46 MB total, including 6.51 MB images and 6.51 MB third-party bytes. The image audit found 15 oversized, 68 without srcset, and 21 below-fold images without lazy loading.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/images.json",
        "evidence/home.har"
      ],
      "suggestedFix": "Generate responsive AVIF/WebP sources, correctly prioritize only the LCP image, lazy-load below-fold media, deduplicate repeated image downloads, and enforce per-template byte budgets.",
      "effort": "large"
    }
  ],
  "taskList": [
    {
      "id": "T1",
      "title": "Remove first-load prompt stacking and defer notification/locale asks",
      "priority": 1,
      "findingIds": [
        "F01"
      ],
      "guidanceId": "light-dismiss-a-dialog",
      "status": "open"
    },
    {
      "id": "T2",
      "title": "Cut LCP, JavaScript, image, and third-party payloads",
      "priority": 2,
      "findingIds": [
        "F06",
        "F07",
        "F16",
        "F20"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T3",
      "title": "Restore accessible names, headings, focus, touch targets, and zoom",
      "priority": 3,
      "findingIds": [
        "F05",
        "F08",
        "F09",
        "F10",
        "F19"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T4",
      "title": "Harden CSP, cookies, HSTS, Referrer-Policy, and Permissions-Policy",
      "priority": 4,
      "findingIds": [
        "F15",
        "F17"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T5",
      "title": "Repair image component semantics and responsive delivery",
      "priority": 5,
      "findingIds": [
        "F12",
        "F20"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T6",
      "title": "Fix crawler links/directives and add Product structured data",
      "priority": 6,
      "findingIds": [
        "F13",
        "F14"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T7",
      "title": "Add full preference and locale adaptation",
      "priority": 7,
      "findingIds": [
        "F02",
        "F03",
        "F18"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T8",
      "title": "Adopt modern declarative interaction primitives during component upgrades",
      "priority": 8,
      "findingIds": [
        "F04"
      ],
      "guidanceId": "same-document-transitions",
      "status": "open"
    },
    {
      "id": "T9",
      "title": "Clear console, DevTools, and BFCache issues",
      "priority": 9,
      "findingIds": [
        "F11"
      ],
      "guidanceId": "html",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 5,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-28T05-25-28-207Z"
}
