{
  "url": "https://www.sofascore.com",
  "auditedAt": "2026-07-18T16:03:51.302Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Atomic coverage complete across 58 checks and five representative public paths.",
  "page": {
    "appType": "hybrid",
    "framework": "Next.js",
    "notes": "Server-generated metadata and large rendered DOM with client-side live data, route transitions, ads, consent, and WebSocket behavior."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "Lighthouse",
    "axe-core",
    "raw HTTP fetch"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "component-specific-light-dark-theme",
    "accessibility",
    "adapt-scrollbar-to-contrast-preferences",
    "same-document-transitions",
    "cross-document-transitions",
    "group-element-transitions",
    "faster-spa-view-transitions",
    "scrollytelling",
    "parallax-scroll-effects",
    "scroll-entry-exit-effects",
    "carousel-slide-effects",
    "physics-based-easing",
    "individual-transform-properties",
    "animate-element-entry-exit",
    "animate-to-from-top-layer",
    "animate-to-intrinsic-sizes",
    "dynamic-sibling-animations",
    "interactive-content-reveal",
    "pull-to-reveal",
    "swipe-to-remove",
    "shrinking-header-on-scroll",
    "scroll-progress-indicator",
    "scroll-position-aware-elements",
    "scroll-snap-realtime-feedback",
    "scroll-snap-state-sync",
    "scroll-target-on-load",
    "soft-edge-content-fade",
    "scrollability-affordance-hints",
    "anchor-positioning-tab-underline",
    "position-aware-tooltips",
    "interest-triggered-tooltips",
    "interest-triggered-action-previews",
    "directional-navigation-transitions",
    "carousel-snap-highlights",
    "navigation-drawer",
    "stack-drill-down",
    "persistent-app-tours",
    "persistent-toast-notifications",
    "light-dismiss-a-dialog",
    "platform-controls-dismiss-dialog",
    "declarative-dialog-popover-control",
    "animated-select-picker",
    "branded-select-styling",
    "brand-consistent-forms",
    "custom-select-picker-layouts",
    "rich-media-picker",
    "complex-shapes",
    "shaped-cutouts",
    "overflow-clipping-control",
    "visually-texture-content",
    "apply-webgl-shaders",
    "interactive-content-in-3d-scenes",
    "highlight-text-ranges",
    "prevent-text-wrapping",
    "customize-scrollbar-color-and-thickness",
    "export-html-media-from-canvas",
    "fluid-scaling",
    "calculate-with-intrinsic-sizes",
    "css-layout",
    "size-aware-styling",
    "content-based-styling",
    "child-state-based-styling",
    "design-token-reactivity",
    "dynamic-sibling-styling",
    "form-fields-automatically-fit-contents",
    "improve-text-layout-and-legibility",
    "forms",
    "accessible-error-announcement",
    "required-field-feedback",
    "validate-input-after-interaction",
    "identify-inp-causes",
    "schedule-tasks-by-priority",
    "optimize-preload-priority",
    "improve-next-page-load-performance",
    "interactions-in-complex-layouts",
    "performance",
    "visually-stable-font-fallbacks",
    "break-up-long-tasks",
    "identify-heavy-scripts",
    "optimize-script-priority",
    "defer-rendering-heavy-content",
    "defer-work-until-scroll-ends",
    "optimize-image-priority",
    "conditional-async-dependencies",
    "expose-canvas-content-to-browser-features",
    "move-dom-element-without-losing-state",
    "precise-text-alignment",
    "visually-stable-mixed-fonts",
    "css",
    "html",
    "reduce-style-repetition",
    "security",
    "privacy",
    "batch-analytics-events",
    "full-session-analytics",
    "calculate-total-foreground-time",
    "passkeys",
    "passkey-registration",
    "passkey-authentication",
    "passkey-reauthentication",
    "passkey-conditional-create",
    "passkey-management",
    "flicker-free-client-side-ab-testing",
    "consistent-cross-document-transitions",
    "stabilize-reactive-state",
    "resilient-context-menus-and-nested-dropdowns",
    "persistent-top-layer-ui",
    "detect-initial-visibility-state",
    "sequence-distributed-events",
    "translator",
    "language-detection",
    "support-global-calendar-systems",
    "capture-location-agnostic-data",
    "format-human-readable-durations",
    "manage-recurring-intervals",
    "calculate-event-differentials",
    "coordinate-global-events",
    "model-partial-time-concepts",
    "search-hidden-content",
    "select-menu-interaction",
    "style-parent-with-has",
    "autofill-address-form",
    "autofill-payment-form",
    "autofill-sign-in-form",
    "autofill-sign-up-form",
    "autofill-highlight-inputs",
    "deliver-optimized-decorative-images",
    "resolution-optimized-pseudo-elements",
    "deprioritize-background-fetches",
    "efficient-background-processing",
    "webmcp",
    "agentic-forms",
    "agentic-javascript-tools",
    "language-model",
    "summarizer"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "Homepage at desktop viewport on first load",
      "condition": "desktop",
      "findingIds": [
        "F05",
        "F08",
        "F23",
        "F27"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "Homepage at 360x800 on first load",
      "condition": "360x800",
      "findingIds": [
        "F04",
        "F05",
        "F08",
        "F27"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-light.png",
      "caption": "Homepage under light preference",
      "condition": "prefers-color-scheme: light",
      "findingIds": [
        "F01",
        "F02"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "Homepage under dark preference",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F01",
        "F02"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/match-desktop.png",
      "caption": "Match detail on first load",
      "condition": "desktop",
      "findingIds": [
        "F05",
        "F08",
        "F27"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/tournament-mobile.png",
      "caption": "Tournament detail on first load",
      "condition": "360x800",
      "findingIds": [
        "F05",
        "F08",
        "F27"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/news-mobile.png",
      "caption": "News listing on first load",
      "condition": "360x800",
      "findingIds": [
        "F05",
        "F08",
        "F27"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/not-found-mobile.png",
      "caption": "Unknown route at mobile viewport",
      "condition": "360x800",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "Rendered homepage DOM and styles",
      "condition": "default",
      "findingIds": [
        "F06"
      ]
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "Route, links, metadata, and heading recon",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/preferences-focus.json",
      "caption": "Reduced-motion, contrast, theme, and keyboard focus probe",
      "condition": "reduced motion and increased contrast",
      "findingIds": [
        "F01",
        "F02",
        "F07",
        "F14",
        "F15",
        "F16"
      ]
    },
    {
      "type": "other",
      "path": "evidence/match-probe.json",
      "caption": "Match metadata, headings, controls, overlays, and modern CSS probe",
      "condition": "match detail",
      "findingIds": [
        "F03",
        "F06"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-layout-mobile.json",
      "caption": "Homepage layout shifts, long tasks, and overflow",
      "condition": "360x800",
      "findingIds": [
        "F09",
        "F11"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/match-layout-mobile.json",
      "caption": "Match-detail layout shifts, long tasks, and overflow",
      "condition": "360x800",
      "findingIds": [
        "F09",
        "F10",
        "F11"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/news-layout-mobile.json",
      "caption": "News layout shifts, long tasks, and overflow",
      "condition": "360x800",
      "findingIds": []
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "DevTools performance trace",
      "condition": "8 second load",
      "findingIds": []
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "Compact trace timings and long tasks",
      "condition": "8 second load",
      "findingIds": [
        "F09",
        "F11"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "Network archive",
      "condition": "8 second load",
      "findingIds": [
        "F12",
        "F30"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "Compact network and third-party summary",
      "condition": "8 second load",
      "findingIds": [
        "F12",
        "F13",
        "F28",
        "F29",
        "F30"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home.json",
      "caption": "Lighthouse performance, accessibility, best-practices, and SEO results",
      "condition": "mobile",
      "findingIds": [
        "F02",
        "F09",
        "F11",
        "F13",
        "F14",
        "F15",
        "F16",
        "F17",
        "F18",
        "F20",
        "F29"
      ]
    },
    {
      "type": "other",
      "path": "evidence/axe-home.json",
      "caption": "axe-core accessibility results",
      "condition": "default",
      "findingIds": [
        "F02",
        "F14",
        "F15",
        "F16"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "Raw HTML and rendered content comparison",
      "condition": "non-JavaScript crawler",
      "findingIds": [
        "F21",
        "F25"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "Rendered browser view",
      "condition": "JavaScript enabled",
      "findingIds": [
        "F21",
        "F25"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "Crawler view",
      "condition": "JavaScript disabled",
      "findingIds": [
        "F21",
        "F25"
      ]
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "Security response headers",
      "condition": "default",
      "findingIds": [
        "F22",
        "F23",
        "F24"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "Cookie flag audit",
      "condition": "default",
      "findingIds": [
        "F22",
        "F23"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "Third-party tracker inventory",
      "condition": "default",
      "findingIds": [
        "F12",
        "F22",
        "F23",
        "F30"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "Client-visible secret scan",
      "condition": "default",
      "findingIds": [
        "F22",
        "F23"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "Image sizing, lazy loading, and format audit",
      "condition": "default",
      "findingIds": [
        "F19",
        "F28"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/memory-summary.json",
      "caption": "Heap totals before and after repeated search interaction",
      "condition": "baseline and post",
      "findingIds": [
        "F31"
      ]
    },
    {
      "type": "other",
      "path": "evidence/memory-metrics.json",
      "caption": "Same-session memory and DOM samples across 20 cycles",
      "condition": "20 search cycles",
      "findingIds": [
        "F31"
      ]
    },
    {
      "type": "other",
      "path": "evidence/platform-probe.json",
      "caption": "Document, links, targets, modern CSS, and platform probe",
      "condition": "default",
      "findingIds": [
        "F03",
        "F07",
        "F17",
        "F26"
      ]
    },
    {
      "type": "other",
      "path": "evidence/css-modern-probe.json",
      "caption": "Contrast, scroll-state, anchor, and scroll-snap CSS probe",
      "condition": "prefers-contrast: more",
      "findingIds": [
        "F01",
        "F02",
        "F04"
      ]
    },
    {
      "type": "other",
      "path": "evidence/i18n-arabic.json",
      "caption": "Arabic localization and RTL probe",
      "condition": "Arabic route",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/signin-probe.json",
      "caption": "Optional authentication dialog probe",
      "condition": "after consent",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/robots.txt",
      "caption": "robots.txt fetched from target",
      "condition": "raw fetch",
      "findingIds": [
        "F21",
        "F25"
      ]
    },
    {
      "type": "other",
      "path": "evidence/sitemap.xml",
      "caption": "Sitemap fetched from target",
      "condition": "raw fetch",
      "findingIds": [
        "F21",
        "F25"
      ]
    },
    {
      "type": "other",
      "path": "evidence/manifest.json",
      "caption": "Web app manifest",
      "condition": "raw fetch",
      "findingIds": [
        "F26"
      ]
    }
  ],
  "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": "pass",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "Screenshot comparison under explicit light and dark media conditions shows the application surface switches between light and dark themes.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-light.png",
        "evidence/home-dark.png",
        "evidence/preferences-focus.json",
        "evidence/css-modern-probe.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "The reduced-motion probe still found three running animations with 800 to 1000 ms durations after prefers-reduced-motion: reduce was emulated.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-light.png",
        "evidence/home-dark.png",
        "evidence/preferences-focus.json",
        "evidence/css-modern-probe.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "Under prefers-contrast: more, only third-party sign-in rules referenced prefers-contrast, while axe found app and consent text as low as 1.82:1.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-light.png",
        "evidence/home-dark.png",
        "evidence/preferences-focus.json",
        "evidence/css-modern-probe.json",
        "evidence/axe-home.json",
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "Stylesheet inspection on home and match pages found zero view-transition rules, so route and state swaps do not use the platform View Transitions API.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/match-probe.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement against representative public journeys",
      "evidence": "No parallax, scrollytelling, or other scroll-linked animation was present on the representative pages, so there is no scroll animation implementation to assess.",
      "reason": "No parallax, scrollytelling, or other scroll-linked animation was present on the representative pages, so there is no scroll animation implementation to assess."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "Stylesheet inspection found six scroll-snap or overscroll rules, showing native scroll behavior is used for horizontal score and sport navigation.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/css-modern-probe.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "The mobile layout has sticky top and bottom chrome, but stylesheet inspection found no scroll-state queries or scroll-timeline behavior to adapt it as the page moves.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/css-modern-probe.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement against representative public journeys",
      "evidence": "No tooltip or edge-positioned transient menu was encountered in the representative public score, match, tournament, or news paths.",
      "reason": "No tooltip or edge-positioned transient menu was encountered in the representative public score, match, tournament, or news paths."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "Screenshots show selected sport, date, live-state, and bottom-navigation items with persistent active styling, and match detail exposes clear tab labels.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/match-desktop.png",
        "evidence/tournament-mobile.png",
        "evidence/news-mobile.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "Every fresh-load screenshot is covered by a consent modal before interaction, including the core scores, match, tournament, and news paths.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/match-desktop.png",
        "evidence/tournament-mobile.png",
        "evidence/news-mobile.png"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "DOM inspection found the consent and promotional overlays implemented as role=dialog DIV elements rather than native dialog or popover primitives.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/match-probe.json",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "Behind the consent layer, the score list and match information dominate the viewport; navigation chrome is compact and content-specific.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/match-desktop.png",
        "evidence/tournament-mobile.png",
        "evidence/news-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "Layout at 360x800 reported scrollWidth 360, clientWidth 360, zero horizontal overflow, and a viewport meta element on home, match, and news paths.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/match-layout-mobile.json",
        "evidence/news-layout-mobile.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "Live stylesheet inspection found four container-query rules, and narrow screenshots show score and navigation components reflowing without overflow.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/match-desktop.png",
        "evidence/tournament-mobile.png",
        "evidence/news-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "The focus probe reported outline style none on the first focused score link, and the target probe found many visible links only 14 to 16 CSS pixels high.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences-focus.json",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "The title, first-page heading, selected Football tab, date controls, and score list make the live-score purpose and next actions immediately identifiable behind the consent layer.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/recon.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "A full-viewport consent wall interrupts every primary public journey before users can inspect scores, match detail, tournament tables, or news.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/match-desktop.png",
        "evidence/tournament-mobile.png",
        "evidence/news-mobile.png"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "Score cards visibly distinguish live, finished, and upcoming states; match detail exposes overview, lineups, matches, knockout, and media states with persistent controls.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/match-probe.json",
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/match-desktop.png",
        "evidence/tournament-mobile.png"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace, layout observer, and HAR summary comparison",
      "evidence": "Lighthouse measured LCP 22.4 s, TBT 860 ms, Speed Index 8.0 s, and a 0.44 performance score; match mobile layout separately measured CLS 0.641.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/match-layout-mobile.json",
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace, layout observer, and HAR summary comparison",
      "evidence": "The match-detail mobile layout observer measured CLS 0.641, including a single 0.467 shift around 5.65 seconds.",
      "pathIds": [
        "match"
      ],
      "artifacts": [
        "evidence/match-layout-mobile.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace, layout observer, and HAR summary comparison",
      "evidence": "Lighthouse measured 860 ms TBT. The trace found two long tasks up to 117 ms, and mobile layout observation found six long tasks up to 100 ms.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/match-layout-mobile.json",
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace, layout observer, and HAR summary comparison",
      "evidence": "HAR recorded 409 requests and 4.27 MB transferred, including 92 scripts and 272 images; the largest app bundle transferred 421 KB.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace, layout observer, and HAR summary comparison",
      "evidence": "Lighthouse estimated 686 KiB unused JavaScript and 76 KiB unused CSS, including 46% waste in the 421 KB app chunk and 70% waste in ad code.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "axe-core, Lighthouse accessibility, keyboard focus probe, and responsive screenshot review",
      "evidence": "axe reported critical missing button names, a switch without a label, invalid aria-selected use on buttons, and a scrollbar role missing aria-valuenow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/lighthouse-home.json",
        "evidence/preferences-focus.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "axe-core, Lighthouse accessibility, keyboard focus probe, and responsive screenshot review",
      "evidence": "axe found serious contrast failures, including 3.43:1 live-state text and 1.82:1 consent text, below WCAG AA.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/lighthouse-home.json",
        "evidence/preferences-focus.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "axe-core, Lighthouse accessibility, keyboard focus probe, and responsive screenshot review",
      "evidence": "axe found content outside landmarks and nested interactive controls; the keyboard focus probe computed no visible outline style on the first focused score link.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/lighthouse-home.json",
        "evidence/preferences-focus.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "axe-core, Lighthouse accessibility, keyboard focus probe, and responsive screenshot review",
      "evidence": "Desktop and mobile screenshots show readable score labels and article headlines without clipping or horizontal overflow across the representative layouts.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/match-desktop.png",
        "evidence/tournament-mobile.png",
        "evidence/news-mobile.png",
        "evidence/home-layout-mobile.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "axe-core, Lighthouse accessibility, keyboard focus probe, and responsive screenshot review",
      "evidence": "Reflow itself succeeds, but the target probe found many visible links only 14 to 16 CSS pixels high, and Lighthouse accessibility scored 0.70.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "Lighthouse captured failed 403 and 404 resources plus an uncaught TypeError reading stages during application migration.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "Doctype and UTF-8 charset are valid, but the image audit found 98 of 100 images without width and height and 32 oversized images.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "Lighthouse reported a WebSocket preventing back-forward cache restoration. It also captured runtime and network errors, although no notification prompt appeared on load.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered DOM, raw-fetch discoverability diff, robots, sitemap, and metadata inspection",
      "evidence": "Home and match pages expose descriptive, route-specific titles and meta descriptions.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/match-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered DOM, raw-fetch discoverability diff, robots, sitemap, and metadata inspection",
      "evidence": "Lighthouse passed crawlable anchors, robots validity, viewport, and indexing audits; the DOM contained 1,477 real links and no anchor without href.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/platform-probe.json",
        "evidence/robots.txt"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, raw-fetch discoverability diff, robots, sitemap, and metadata inspection",
      "evidence": "The raw discoverability fetch received HTTP 403 with zero content coverage, and robots.txt explicitly disallows Bytespider, so important non-JavaScript and AI crawlers cannot retrieve public content.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-discoverability-rendered.png",
        "evidence/home-discoverability-crawler.png",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered DOM, raw-fetch discoverability diff, robots, sitemap, and metadata inspection",
      "evidence": "The home page includes Organization and WebSite JSON-LD, canonical and hreflang links; match detail has two JSON-LD blocks and route-specific metadata.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/match-probe.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, secrets, HAR, and consent UI inspection",
      "evidence": "HTTPS and nosniff are present, but HSTS is missing, CSP only declares frame-ancestors, and the FCCDCF cookie is not Secure while using SameSite=None.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json",
        "evidence/secrets.json"
      ],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, secrets, HAR, and consent UI inspection",
      "evidence": "The load contacted ten third-party origins, included DoubleClick and Google ad trackers, and the consent layer names 357 partners and possible precise geolocation use.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json",
        "evidence/secrets.json",
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement against representative public journeys",
      "evidence": "No browser permission prompt fired on load. Authentication is optional for the public scoring journey and the observed sign-in surface delegates to Apple and Facebook rather than collecting a password.",
      "reason": "No browser permission prompt fired on load. Authentication is optional for the public scoring journey and the observed sign-in surface delegates to Apple and Facebook rather than collecting a password."
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, secrets, HAR, and consent UI inspection",
      "evidence": "Clickjacking and nosniff protections are present, but HSTS and Referrer-Policy are absent and CSP is limited to frame-ancestors rather than script or Trusted Types defenses.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, raw-fetch discoverability diff, robots, sitemap, and metadata inspection",
      "evidence": "The discoverability primitive fetched only a 48-byte HTTP 403 response with zero raw-content coverage while the rendered page contains 8,974 text characters.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-discoverability-rendered.png",
        "evidence/home-discoverability-crawler.png",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "findingIds": [
        "F25"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "Consent, sign-in, and match-detail overlays remained within the 360px viewport, navigation state survived route changes, and no horizontal clipping was observed.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/signin-probe.json",
        "evidence/match-probe.json",
        "evidence/home-layout-mobile.json",
        "evidence/match-layout-mobile.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "A valid standalone web app manifest exists, but no service-worker controller or registration was observed, so the app has no evidenced offline fallback.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/manifest.json",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F26"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "medium",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "A representative missing route and a background API 404 did not crash the application shell; persistent navigation remained available and the HAR showed the page continued loading.",
      "pathIds": [
        "error-state"
      ],
      "artifacts": [
        "evidence/not-found-mobile.png",
        "evidence/home-summary.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "English and Arabic route DOM and rendered-content comparison",
      "evidence": "The Arabic route sets lang=ar and dir=rtl, renders Arabic labels in RTL order, and stylesheet inspection found 315 logical-property rules.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/i18n-arabic.json",
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "English and Arabic route DOM and rendered-content comparison",
      "evidence": "The Arabic route localizes sport names and renders times with Arabic AM/PM markers while preserving the same live-score content.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/i18n-arabic.json",
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "pass",
      "confidence": "high",
      "method": "English and Arabic route DOM and rendered-content comparison",
      "evidence": "Match metadata supplies an absolute UTC start time, while the Arabic and English home routes render localized display times for the same event.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/match-probe.json",
        "evidence/i18n-arabic.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "The consent wall offers Consent and Manage options but no equally immediate reject action, while describing sharing with 357 partners and precise geolocation use.",
      "pathIds": [
        "home",
        "match",
        "tournament",
        "news"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/match-desktop.png",
        "evidence/tournament-mobile.png",
        "evidence/news-mobile.png"
      ],
      "findingIds": [
        "F27"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement against representative public journeys",
      "evidence": "The representative public paths contain no user-submitted transactional form. Search is an immediate query field, not a validated submission flow.",
      "reason": "The representative public paths contain no user-submitted transactional form. Search is an immediate query field, not a validated submission flow."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement against representative public journeys",
      "evidence": "No address, payment, sign-up, or password input is present in the representative public flow.",
      "reason": "No address, payment, sign-up, or password input is present in the representative public flow."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "The optional sign-in dialog uses Apple and Facebook federation, states agreement to Terms and Privacy Policy, and does not collect a password on-site.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/signin-probe.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "The image audit found 98 missing dimensions, 84 below-fold images without lazy loading, and 32 oversized images; images transferred 1.94 MB.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F28"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "The initial page issued 409 requests, loaded 92 scripts, and Lighthouse estimated 686 KiB unused JavaScript and 76 KiB unused CSS.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F29"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM, computed-style probe, layout metrics, and screenshot review across representative paths",
      "evidence": "Third parties accounted for 282 requests and 2.51 MB, or 59% of transferred bytes, with ad, consent, identity, and font origins active on load.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F30"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement against representative public journeys",
      "evidence": "WebMCP is emerging and no declared agent-facing intent exists. The public sports site can reasonably omit structured agent tools today.",
      "reason": "WebMCP is emerging and no declared agent-facing intent exists. The public sports site can reasonably omit structured agent tools today."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon and applicability judgement against representative public journeys",
      "evidence": "No on-device inference use case is required for the core live-score journey, and the emerging API is not an audit obligation without declared intent.",
      "reason": "No on-device inference use case is required for the core live-score journey, and the emerging API is not an audit obligation without declared intent."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "Heap totals plus same-session repeated-interaction memory and DOM sampling",
      "evidence": "In one browser session, 20 search open and Escape cycles grew DOM nodes only on the first open, then plateaued at 7,686; heap samples similarly levelled near 70.2 MB.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/memory-summary.json",
        "evidence/memory-metrics.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "issues",
      "confidence": "high",
      "method": "Heap totals plus same-session repeated-interaction memory and DOM sampling",
      "evidence": "The baseline heap contained 1,456,507 V8 nodes and 78.9 MB self size before interaction, which is disproportionate for the initial score-list surface.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/memory-summary.json",
        "evidence/memory-metrics.json"
      ],
      "findingIds": [
        "F31"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Heap totals plus same-session repeated-interaction memory and DOM sampling",
      "evidence": "Across 20 repeated search cycles, live DOM count remained 7,686 after the first state transition and heap growth flattened, providing no signal of accumulating nodes or listeners in that flow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/memory-summary.json",
        "evidence/memory-metrics.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01",
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05",
        "F06"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F09",
        "F10",
        "F11",
        "F12",
        "F13"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F14",
        "F15",
        "F16",
        "F17"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F18",
        "F19",
        "F20"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F22",
        "F23",
        "F24"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F25",
        "F26"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F27"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F28",
        "F29",
        "F30"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "All checks are contextual or emerging and no declared agent-facing intent makes them applicable."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F31"
      ]
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and live-score listing, representing the primary core journey.",
      "url": "https://www.sofascore.com/",
      "conditions": [
        "desktop",
        "360x800",
        "light",
        "dark",
        "reduced motion",
        "increased contrast",
        "keyboard focus"
      ],
      "result": "issues"
    },
    {
      "id": "match",
      "description": "France vs England match detail, representing live event detail, tabs, rich data, and app promotion.",
      "url": "https://www.sofascore.com/football/match/england-france/GObsnUb#id:12813003",
      "conditions": [
        "desktop",
        "360x800"
      ],
      "result": "issues"
    },
    {
      "id": "tournament",
      "description": "World Championship tournament detail, representing standings and competition navigation.",
      "url": "https://www.sofascore.com/football/tournament/world/world-championship/16#id:58210",
      "conditions": [
        "360x800"
      ],
      "result": "issues"
    },
    {
      "id": "news",
      "description": "News listing, representing editorial content and a distinct template.",
      "url": "https://www.sofascore.com/news",
      "conditions": [
        "360x800"
      ],
      "result": "issues"
    },
    {
      "id": "error-state",
      "description": "Unknown route, representing HTTP or routing failure handling.",
      "url": "https://www.sofascore.com/definitely-not-a-real-route-web-uplift",
      "conditions": [
        "360x800"
      ],
      "result": "issues"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-reduced-motion",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Motion continues under reduced-motion",
      "evidence": "Three animations remain running under prefers-reduced-motion: reduce, with 800 to 1000 ms durations.",
      "suggestedFix": "Disable non-essential transitions and infinite animation in a prefers-reduced-motion: reduce media query.",
      "effort": "small",
      "artifacts": [
        "evidence/home-light.png",
        "evidence/home-dark.png",
        "evidence/preferences-focus.json",
        "evidence/css-modern-probe.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F02",
      "severity": "high",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-contrast",
      "guidanceId": "adapt-scrollbar-to-contrast-preferences",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "High-contrast preference is not applied across the app",
      "evidence": "Only third-party sign-in styles respond to prefers-contrast, while axe records contrast as low as 1.82:1.",
      "suggestedFix": "Add app-wide prefers-contrast and forced-colors treatment and verify every control in forced-colors mode.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-light.png",
        "evidence/home-dark.png",
        "evidence/preferences-focus.json",
        "evidence/css-modern-probe.json",
        "evidence/axe-home.json",
        "evidence/lighthouse-home.json",
        "evidence/preferences-focus.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F03",
      "severity": "low",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Route and state changes omit View Transitions",
      "evidence": "Stylesheet inspection found no view-transition rules on home or match detail.",
      "suggestedFix": "Use same-document and cross-document View Transitions for major route and tab changes, with a reduced-motion fallback.",
      "effort": "medium",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/match-probe.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F04",
      "severity": "low",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "shrinking-header-on-scroll",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Fixed navigation does not react to scroll state",
      "evidence": "The app has persistent top and bottom chrome but no scroll-state queries or scroll timelines.",
      "suggestedFix": "Use scroll-state container queries or a declarative progress treatment to reduce chrome and preserve context while scrolling.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/css-modern-probe.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F05",
      "severity": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Consent wall obscures every primary path on first load",
      "evidence": "Home, match, tournament, and news screenshots are all covered by a nearly full-viewport consent dialog.",
      "suggestedFix": "Minimize the first layer, preserve access to core content, and provide clear accept and reject choices without obscuring the journey.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/match-desktop.png",
        "evidence/tournament-mobile.png",
        "evidence/news-mobile.png"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F06",
      "severity": "medium",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Overlays use custom role=dialog DIVs",
      "evidence": "DOM inspection identifies consent and promotional overlays as DIV elements with role=dialog rather than native dialog or popover.",
      "suggestedFix": "Use native dialog for modal flows and popover for transient UI, with declarative close and focus behavior.",
      "effort": "medium",
      "artifacts": [
        "evidence/match-probe.json",
        "evidence/home-dom.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F07",
      "severity": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Keyboard focus and target sizing are inadequate",
      "evidence": "The focused score link computed outline style none, and many visible links are only 14 to 16 CSS pixels high.",
      "suggestedFix": "Provide a strong :focus-visible indicator and enlarge interactive hit areas to at least 24 by 24 CSS pixels, preferably 44 by 44 for touch.",
      "effort": "medium",
      "artifacts": [
        "evidence/preferences-focus.json",
        "evidence/platform-probe.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F08",
      "severity": "high",
      "principleId": "support-core-task-success",
      "principleCheckId": "primary-flow-completion",
      "guidanceId": "forms",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Primary score and content journeys are interrupted",
      "evidence": "Every representative journey requires dealing with the consent wall before core content can be used.",
      "suggestedFix": "Keep core public content usable while presenting a compact, reversible privacy choice.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/match-desktop.png",
        "evidence/tournament-mobile.png",
        "evidence/news-mobile.png"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F09",
      "severity": "critical",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "Core load performance is far outside the good range",
      "evidence": "Lighthouse measured 22.4 s LCP, 860 ms TBT, 8.0 s Speed Index, and performance 0.44.",
      "suggestedFix": "Profile the LCP chain, prioritize its resource, reduce hydration work, and defer non-critical third-party code.",
      "effort": "large",
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/match-layout-mobile.json",
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-home.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F10",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "visual-stability",
      "guidanceId": "visually-stable-font-fallbacks",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Match detail has severe layout shift",
      "evidence": "The 360px match path measured CLS 0.641, including a 0.467 shift near 5.65 seconds.",
      "suggestedFix": "Reserve space for late match, ad, and consent content; add intrinsic image sizing and stable font fallbacks.",
      "effort": "medium",
      "artifacts": [
        "evidence/match-layout-mobile.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F11",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-main-thread",
      "guidanceId": "break-up-long-tasks",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Main-thread work delays interactivity",
      "evidence": "Lighthouse measured 860 ms TBT and traces observed long tasks up to 117 ms.",
      "suggestedFix": "Break long tasks into prioritized chunks and defer analytics, ads, and below-fold rendering.",
      "effort": "large",
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/match-layout-mobile.json",
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-home.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F12",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-script-priority",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Initial delivery is excessively heavy",
      "evidence": "The HAR recorded 409 requests and 4.27 MB transferred, with 92 scripts and 272 image requests.",
      "suggestedFix": "Reduce request fan-out, prioritize only critical scripts and images, and defer below-fold and third-party resources.",
      "effort": "large",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/trackers.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F13",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Large amounts of unused code ship on first load",
      "evidence": "Lighthouse estimates 686 KiB unused JavaScript and 76 KiB unused CSS.",
      "suggestedFix": "Split route-specific bundles, conditionally load ads and identity code, and remove unused CSS from the initial route.",
      "effort": "large",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F14",
      "severity": "critical",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Core controls have invalid or missing accessible semantics",
      "evidence": "axe found unnamed buttons, an unlabeled switch, invalid aria-selected attributes, and a scrollbar missing aria-valuenow.",
      "suggestedFix": "Give every control an accessible name, use the correct tab or option roles, label the odds switch, and replace the invalid scrollbar role.",
      "effort": "medium",
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/lighthouse-home.json",
        "evidence/preferences-focus.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F15",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Text and controls fail WCAG contrast",
      "evidence": "axe measured 3.43:1 for live-state text and 1.82:1 in the consent UI.",
      "suggestedFix": "Adjust semantic color tokens to meet WCAG AA in every theme and consent state.",
      "effort": "small",
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/lighthouse-home.json",
        "evidence/preferences-focus.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F16",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Landmarks and keyboard focus are unreliable",
      "evidence": "axe found content outside landmarks and nested interactive controls; the focused link had no visible outline style.",
      "suggestedFix": "Contain page regions in landmarks, remove nested interactive semantics, and add a persistent :focus-visible ring.",
      "effort": "medium",
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/lighthouse-home.json",
        "evidence/preferences-focus.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F17",
      "severity": "medium",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Many visible targets are too short",
      "evidence": "The target probe found many score and competition links only 14 to 16 CSS pixels high despite successful reflow.",
      "suggestedFix": "Increase hit areas without changing visual density, using padding and pseudo-element target expansion.",
      "effort": "medium",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-home.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F18",
      "severity": "medium",
      "principleId": "follow-best-practices",
      "principleCheckId": "no-console-errors",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "The page logs runtime and network errors",
      "evidence": "Lighthouse captured failed resources and an uncaught TypeError while reading stages during migration.",
      "suggestedFix": "Fix the migration guard and handle expected API failures without console errors.",
      "effort": "small",
      "artifacts": [
        "evidence/lighthouse-home.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F19",
      "severity": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "Most images lack intrinsic dimensions",
      "evidence": "The image audit found 98 of 100 images without width and height and 32 oversized images.",
      "suggestedFix": "Emit width and height or aspect-ratio for every image and request the closest available image size.",
      "effort": "medium",
      "artifacts": [
        "evidence/images.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F20",
      "severity": "low",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "A persistent WebSocket blocks BFCache",
      "evidence": "Lighthouse reports that the page cannot enter back-forward cache because of its WebSocket.",
      "suggestedFix": "Close or suspend the live connection on pagehide and reconnect on pageshow where the browser permits.",
      "effort": "medium",
      "artifacts": [
        "evidence/lighthouse-home.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F21",
      "severity": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "Non-JavaScript and AI crawler access is blocked",
      "evidence": "The raw fetch returned HTTP 403 with zero coverage, and robots.txt blocks Bytespider.",
      "suggestedFix": "Serve meaningful server-rendered HTML to legitimate crawlers and review AI crawler policy against content-discovery goals.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-discoverability-rendered.png",
        "evidence/home-discoverability-crawler.png",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F22",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "confidence": "high",
      "summary": "Transport policy and cookie flags are incomplete",
      "evidence": "HSTS is missing, CSP only has frame-ancestors, and FCCDCF is not Secure while SameSite=None.",
      "suggestedFix": "Add HSTS, deploy a nonce or hash based script CSP, and set Secure on every SameSite=None cookie.",
      "effort": "medium",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json",
        "evidence/secrets.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F23",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "confidence": "high",
      "summary": "The first load has a large tracking and partner footprint",
      "evidence": "Ten third-party origins load, known ad trackers are active, and the consent UI names 357 partners plus precise geolocation.",
      "suggestedFix": "Minimize vendors and purposes, load optional partners only after choice, and batch essential analytics.",
      "effort": "large",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json",
        "evidence/trackers.json",
        "evidence/secrets.json",
        "evidence/home-desktop.png"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F24",
      "severity": "medium",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "confidence": "high",
      "summary": "Browser-enforced defenses are incomplete",
      "evidence": "HSTS and Referrer-Policy are absent, while CSP protects only against framing.",
      "suggestedFix": "Add HSTS, a restrictive Referrer-Policy, script-src enforcement, and Trusted Types for XSS-sensitive sinks.",
      "effort": "medium",
      "artifacts": [
        "evidence/headers.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F25",
      "severity": "high",
      "principleId": "be-resilient",
      "principleCheckId": "progressive-enhancement",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "Core public content is unavailable to the raw client",
      "evidence": "The raw response was a 48-byte HTTP 403 with zero overlap against 8,974 rendered text characters.",
      "suggestedFix": "Return server-rendered core scores and metadata, then hydrate enhancements without making JavaScript or crawler classification a content gate.",
      "effort": "large",
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-discoverability-rendered.png",
        "evidence/home-discoverability-crawler.png",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F26",
      "severity": "medium",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "The installable app has no evidenced offline fallback",
      "evidence": "A standalone manifest exists, but no service-worker controller or registration was observed.",
      "suggestedFix": "Register a service worker and provide an offline shell with a clear stale or reconnect state for recent scores.",
      "effort": "large",
      "artifacts": [
        "evidence/manifest.json",
        "evidence/platform-probe.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F27",
      "severity": "high",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "confidence": "high",
      "summary": "Consent has no first-layer reject choice",
      "evidence": "The modal presents Consent and Manage options, but no equally immediate Reject action, while describing 357 partners.",
      "suggestedFix": "Present Accept and Reject with equal prominence and make granular management optional rather than required for refusal.",
      "effort": "small",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/match-desktop.png",
        "evidence/tournament-mobile.png",
        "evidence/news-mobile.png"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F28",
      "severity": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Image delivery wastes bandwidth and layout stability",
      "evidence": "The image audit found 84 below-fold images without lazy loading, 32 oversized images, and 98 missing intrinsic dimensions.",
      "suggestedFix": "Lazy-load below-fold images, use size-specific endpoints or srcset, and emit intrinsic dimensions.",
      "effort": "medium",
      "artifacts": [
        "evidence/images.json",
        "evidence/home-summary.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F29",
      "severity": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "The initial route performs substantial avoidable work",
      "evidence": "The page makes 409 requests, loads 92 scripts, and ships an estimated 686 KiB of unused JavaScript.",
      "suggestedFix": "Defer non-essential data, ads, identity, and below-fold component code until user intent or idle time.",
      "effort": "large",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/lighthouse-home.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F30",
      "severity": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "efficient-background-processing",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Third parties consume most transferred bytes",
      "evidence": "Third parties account for 282 requests and 2.51 MB, about 59% of transfer.",
      "suggestedFix": "Set a third-party budget, self-host essential assets, and delay ad, identity, and consent-vendor code until needed.",
      "effort": "large",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/trackers.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    },
    {
      "id": "F31",
      "severity": "medium",
      "principleId": "be-memory-efficient",
      "principleCheckId": "bounded-footprint",
      "guidanceId": "defer-rendering-heavy-content",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Initial memory footprint is disproportionate",
      "evidence": "The baseline snapshot reported 1,456,507 V8 nodes and 78.9 MB self size before interaction.",
      "suggestedFix": "Virtualize long score lists, avoid rendering hidden responsive variants, and defer below-fold trees.",
      "effort": "large",
      "artifacts": [
        "evidence/memory-summary.json",
        "evidence/memory-metrics.json"
      ],
      "pathId": "home",
      "url": "https://www.sofascore.com"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Cut LCP, blocking time, and initial JavaScript",
      "priority": 1,
      "findingIds": [
        "F09",
        "F11",
        "F12",
        "F13",
        "F29"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Repair accessible names, roles, labels, focus, and contrast",
      "priority": 2,
      "findingIds": [
        "F02",
        "F07",
        "F14",
        "F15",
        "F16",
        "F17"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Redesign consent as an equal, compact privacy choice",
      "priority": 3,
      "findingIds": [
        "F05",
        "F08",
        "F23",
        "F27"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Reserve layout space and optimize image delivery",
      "priority": 4,
      "findingIds": [
        "F10",
        "F19",
        "F28"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Serve core public content to raw clients and crawlers",
      "priority": 5,
      "findingIds": [
        "F21",
        "F25"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Strengthen security headers and cookie flags",
      "priority": 6,
      "findingIds": [
        "F22",
        "F24"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Reduce third-party request and byte budgets",
      "priority": 7,
      "findingIds": [
        "F23",
        "F30"
      ],
      "guidanceId": "deprioritize-background-fetches",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Reduce initial DOM and heap footprint",
      "priority": 8,
      "findingIds": [
        "F31"
      ],
      "guidanceId": "defer-rendering-heavy-content",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Add reduced-motion, View Transition, and scroll-state treatment",
      "priority": 9,
      "findingIds": [
        "F01",
        "F03",
        "F04"
      ],
      "guidanceId": "same-document-transitions",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Use native modal and popover primitives",
      "priority": 10,
      "findingIds": [
        "F06"
      ],
      "guidanceId": "declarative-dialog-popover-control",
      "status": "open"
    },
    {
      "id": "T11",
      "title": "Fix runtime errors and BFCache lifecycle",
      "priority": 11,
      "findingIds": [
        "F18",
        "F20"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T12",
      "title": "Add an offline fallback to the installable app",
      "priority": 12,
      "findingIds": [
        "F26"
      ],
      "guidanceId": "html",
      "status": "open"
    }
  ],
  "budget": {
    "wallClockSeconds": 520,
    "pathCount": 5,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-18T16-03-51-302Z"
}
