{
  "url": "https://race.sp.netkeiba.com",
  "auditedAt": "2026-07-20T18:31:48.445Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete multi-path remote audit; no source was provided and no fixes were applied.",
  "page": {
    "appType": "mpa",
    "framework": "legacy server-rendered MPA with jQuery/Slick and extensive third-party advertising",
    "notes": "Japanese mobile race/odds service. Entry, race detail, odds, date listing, linked login, crawler and failure route were inspected. Authenticated wagering, payment, account cancellation, and post-login data were not covered because no credentials or transactional authorisation were provided."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary comparison",
    "Lighthouse",
    "raw robots/sitemap fetch",
    "Modern Web Guidance 0.0.172"
  ],
  "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/entry-mobile.png",
      "caption": "First-load mobile view; the consent wall covers the primary race content.",
      "condition": "viewport 390x844",
      "findingIds": [
        "F007",
        "F008",
        "F009",
        "F012",
        "F021",
        "F037"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/entry-desktop.png",
      "caption": "First-load desktop view; the same consent wall interrupts the page.",
      "condition": "viewport 1440x900",
      "findingIds": [
        "F007",
        "F009",
        "F037"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/entry-dark.png",
      "caption": "Dark-preference capture remains a light surface.",
      "condition": "prefers-color-scheme: dark; viewport 390x844",
      "findingIds": [
        "F001"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/entry-high-contrast.png",
      "caption": "High-contrast preference capture.",
      "condition": "prefers-contrast: more; viewport 390x844",
      "findingIds": [
        "F003"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/race-card-mobile.png",
      "caption": "Race-card detail behind the first-visit consent wall.",
      "condition": "viewport 390x844",
      "findingIds": [
        "F007",
        "F012"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/odds-mobile.png",
      "caption": "Odds view behind the first-visit consent wall.",
      "condition": "viewport 390x844",
      "findingIds": [
        "F012"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/race-list-mobile.png",
      "caption": "Race-list view behind the first-visit consent wall.",
      "condition": "viewport 390x844",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-rendered.png",
      "caption": "Browser-rendered homepage.",
      "condition": "JavaScript enabled",
      "findingIds": [
        "F032"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-crawler.png",
      "caption": "Crawler/no-JavaScript view showing only shell chrome and a loader.",
      "condition": "JavaScript disabled",
      "findingIds": [
        "F032"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/entry-dom.json",
      "caption": "Rendered DOM and styles for the entry page.",
      "condition": "default",
      "findingIds": [
        "F005"
      ]
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "Entry-page links, metadata, visible text, canonical, and language recon.",
      "condition": "default",
      "findingIds": [
        "F027"
      ]
    },
    {
      "type": "other",
      "path": "evidence/platform-probe.json",
      "caption": "Platform, semantics, links, inputs and CSS-feature probe.",
      "condition": "default",
      "findingIds": [
        "F001",
        "F004",
        "F005",
        "F006",
        "F008",
        "F010",
        "F011",
        "F020",
        "F022",
        "F026",
        "F034",
        "F036"
      ]
    },
    {
      "type": "other",
      "path": "evidence/reduced-motion-probe.json",
      "caption": "Animations and transitions under reduced motion.",
      "condition": "prefers-reduced-motion: reduce",
      "findingIds": [
        "F002"
      ]
    },
    {
      "type": "other",
      "path": "evidence/race-card-probe.json",
      "caption": "Race-card text, tables, metadata and structure.",
      "condition": "default",
      "findingIds": [
        "F039"
      ]
    },
    {
      "type": "other",
      "path": "evidence/login-probe.json",
      "caption": "Authentication form input and WebAuthn probe.",
      "condition": "default",
      "findingIds": [
        "F030",
        "F038"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/entry-layout.json",
      "caption": "Mobile overflow, CLS and long-task observer result.",
      "condition": "viewport 390x844",
      "findingIds": [
        "F006"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/entry-trace.json",
      "caption": "DevTools performance trace for mobile load.",
      "condition": "viewport 390x844",
      "findingIds": []
    },
    {
      "type": "trace-summary",
      "path": "evidence/entry-trace-summary.json",
      "caption": "Trace summary: LCP 4.68s in primitive run, no long task in its observation window.",
      "condition": "viewport 390x844",
      "findingIds": [
        "F014",
        "F015"
      ]
    },
    {
      "type": "har",
      "path": "evidence/entry.har",
      "caption": "Network capture for mobile load.",
      "condition": "viewport 390x844",
      "findingIds": [
        "F016"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/entry-summary.json",
      "caption": "HAR summary: 282 requests, 3.12 MB, 274 third-party requests.",
      "condition": "viewport 390x844",
      "findingIds": [
        "F016",
        "F017",
        "F029",
        "F033",
        "F041",
        "F042"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability",
      "caption": "Raw-HTML comparison: 21% content coverage, no empty SPA mount.",
      "condition": "crawler without JavaScript",
      "findingIds": [
        "F032"
      ]
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "Security-header inspection.",
      "condition": "default",
      "findingIds": [
        "F028",
        "F031"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "Cookie security attributes.",
      "condition": "default",
      "findingIds": [
        "F028"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "Third-party and known-tracker inventory.",
      "condition": "default",
      "findingIds": [
        "F029",
        "F042"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "Client-side secret scan; no sensitive secret found.",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "Image dimensions, loading, format and alternative-text inventory.",
      "condition": "default",
      "findingIds": [
        "F018",
        "F024",
        "F040"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "Readable baseline heap summary.",
      "condition": "after initial load",
      "findingIds": [
        "F043"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-post.heapsnapshot",
      "caption": "Readable heap summary after ten carousel advances.",
      "condition": "after 10 representative interactions",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "Full Lighthouse report.",
      "condition": "mobile simulated throttling",
      "findingIds": [
        "F017"
      ]
    },
    {
      "type": "other",
      "path": "evidence/lighthouse-summary.json",
      "caption": "Compact Lighthouse scores, metrics and failing audits.",
      "condition": "mobile simulated throttling",
      "findingIds": [
        "F003",
        "F011",
        "F014",
        "F015",
        "F018",
        "F019",
        "F020",
        "F021",
        "F022",
        "F023",
        "F024",
        "F025",
        "F026",
        "F031",
        "F033",
        "F036"
      ]
    },
    {
      "type": "other",
      "path": "evidence/robots.txt",
      "caption": "robots.txt allows crawling.",
      "condition": "raw route",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/sitemap.txt",
      "caption": "Missing sitemap responds with bare Not Found text.",
      "condition": "raw route",
      "findingIds": [
        "F013",
        "F035"
      ]
    }
  ],
  "config": {
    "loaded": false
  },
  "coverage": {
    "catalogVersion": "modern-web-guidance@0.0.172",
    "catalogChecksum": "sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7",
    "expected": 58,
    "recorded": 58,
    "judged": 58,
    "blocked": 0,
    "notRun": 0,
    "missing": 0,
    "unknown": 0,
    "duplicates": 0,
    "complete": true
  },
  "checkOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-color-scheme",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Computed color-scheme is normal and the dark-preference screenshot remains light, with the same white consent and content surfaces.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/entry-dark.png",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F001"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Under prefers-reduced-motion: reduce, two bell_active animations still run for 5 seconds and many 0.2–0.5s transitions remain enabled.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/reduced-motion-probe.json"
      ],
      "findingIds": [
        "F002"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Lighthouse found multiple WCAG contrast failures, including white GIII text on #58af4a at 2.74:1.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/entry-high-contrast.png"
      ],
      "findingIds": [
        "F003"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Platform probe found no view-transition usage; navigation and content-state changes use abrupt legacy swaps.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F004"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Recon across representative paths and DOM/platform feature inspection.",
      "evidence": "No parallax, scrollytelling, or scroll-linked animation surface was found on the representative pages, so there is no scroll-linked motion implementation to judge.",
      "reason": "No parallax, scrollytelling, or scroll-linked animation surface was found on the representative pages, so there is no scroll-linked motion implementation to judge."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The carousel uses Slick controls but no CSS scroll snap or overscroll primitive was detected.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/entry-dom.json"
      ],
      "findingIds": [
        "F005"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The long 4,505px page has static header chrome and no container/scroll-state implementation in the DOM/CSS probe.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/entry-layout.json",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F006"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Recon across representative paths and DOM/platform feature inspection.",
      "evidence": "No tooltip or edge-sensitive anchored popover was found on the representative race surfaces.",
      "reason": "No tooltip or edge-sensitive anchored popover was found on the representative race surfaces."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct objective/visual inspection using the referenced artifact(s).",
      "evidence": "Screenshots show the active レース navigation item with an underline and race-list controls provide visible directional affordances.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "On every first-visit capture, a near-full-viewport consent modal obscures the race content before interaction.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/entry-mobile.png",
        "evidence/entry-desktop.png",
        "evidence/race-card-mobile.png"
      ],
      "findingIds": [
        "F007"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The rendered page has zero dialog, popover, and details elements although the consent UI is modal and custom controls are extensive.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/entry-mobile.png"
      ],
      "findingIds": [
        "F008"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The first viewport is dominated by app promotion, two navigation bars, and the consent layer rather than race data.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/entry-mobile.png",
        "evidence/entry-desktop.png"
      ],
      "findingIds": [
        "F009"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Direct objective/visual inspection using the referenced artifact(s).",
      "evidence": "At 390px, layout metrics report scrollWidth=clientWidth=390 and zero horizontal overflow; viewport meta is present.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/entry-layout.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "No container-query rules were detected; the mobile-specific page relies on global/mobile templates rather than reusable container adaptation.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F010"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Lighthouse found unnamed links and an unnamed submit input; 32 javascript: anchors act as controls, weakening keyboard semantics and focus clarity.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F011"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Direct objective/visual inspection using the referenced artifact(s).",
      "evidence": "The race card title, date, venue, distance, runners, odds and tabs are explicit in the rendered text and table structure.",
      "pathIds": [
        "race-card"
      ],
      "artifacts": [
        "evidence/race-card-probe.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The race list, odds, and race-card paths are all blocked on first visit by consent; rejection requires the secondary Manage options path.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/entry-mobile.png",
        "evidence/odds-mobile.png",
        "evidence/race-card-mobile.png"
      ],
      "findingIds": [
        "F012"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The tested missing route returns only “Not Found” with no navigation, explanation, retry, or route recovery.",
      "pathIds": [
        "failure-route"
      ],
      "artifacts": [
        "evidence/sitemap.txt"
      ],
      "findingIds": [
        "F013"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Lighthouse measured LCP 12.4s, TBT 795ms and performance 0.42; the independent trace measured LCP 4.68s. Both LCP results miss the good threshold.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/entry-trace-summary.json"
      ],
      "findingIds": [
        "F014"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Direct objective/visual inspection using the referenced artifact(s).",
      "evidence": "The layout observer measured CLS 0.023, within the good range, with only small shifts.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/entry-layout.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Lighthouse reported 795ms total blocking time and 23.6s to interactive despite the shorter trace window finding no long task.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/entry-trace-summary.json"
      ],
      "findingIds": [
        "F015"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "HAR recorded 282 requests and 3.12MB, including many parser-inserted VeryHigh-priority stylesheets and missing cache headers.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/entry-summary.json",
        "evidence/entry.har"
      ],
      "findingIds": [
        "F016"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Lighthouse estimated 733KiB unused JavaScript and 161KiB unused CSS; repeated GTM/gtag and ad bundles dominate script transfer.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/entry-summary.json"
      ],
      "findingIds": [
        "F017"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Lighthouse failed image-alt, input-button-name and link-name; the image probe found 57 of 85 images without alt text.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F018"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Automated contrast testing found failures as low as 2.74:1 for small text.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F019"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The document has no html lang, no main landmark in the platform probe, five H1 elements after CMP injection, and unnamed focusable links.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F020"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The mobile UI uses dense race chrome and Lighthouse flags 9–12px labels with weak contrast, reducing reading comfort.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/entry-mobile.png",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F021"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Lighthouse fails the viewport audit because maximum-scale=1 limits zoom; it also reports accessibility failures on controls.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F022"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Lighthouse recorded repeated CORS failures from ad.ad-stir.com and aladdin.genieesspv.jp.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F023"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Image audit found 75/85 images missing one or both dimensions and Lighthouse found incorrect aspect ratios.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F024"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Lighthouse reports a deprecated Topics API call, inspector issues and a BFCache failure signal.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F025"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Direct objective/visual inspection using the referenced artifact(s).",
      "evidence": "The page has a descriptive Japanese title and a race-specific meta description in both raw and rendered HTML.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/discoverability"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The platform probe found 32 javascript: links; Lighthouse failed crawlable anchors and the viewport uses maximum-scale=1.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F026"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "Direct objective/visual inspection using the referenced artifact(s).",
      "evidence": "Main response was 200, robots.txt allows crawling, and canonical metadata is present; no noindex was observed.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/robots.txt"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The listing declares og:type=article and no JSON-LD was observed, so share/entity metadata does not accurately model a race listing/event surface.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/recon.json"
      ],
      "findingIds": [
        "F027"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "HTTPS is used, but CSP, HSTS, nosniff, clickjacking protection, Referrer-Policy and Permissions-Policy are all absent; all 14 observed first-party cookies lack Secure.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F028"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Tracker capture found 56 third-party origins and 18 known tracker domains; HAR attributed 274/282 requests and 3.08MB to third parties.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/entry-summary.json"
      ],
      "findingIds": [
        "F029"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The account page exposes password-only inputs with no autocomplete tokens and no WebAuthn/passkey implementation detected.",
      "pathIds": [
        "account-login"
      ],
      "artifacts": [
        "evidence/login-probe.json"
      ],
      "findingIds": [
        "F030"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Header inspection found no clickjacking, HSTS, referrer, permissions or CSP defenses, and Lighthouse observed ten third-party cookies.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F031"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The no-JavaScript crawler received only 21% rendered-content coverage and the crawler screenshot shows navigation plus a loader rather than race data.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/discoverability",
        "evidence/discoverability-crawler.png",
        "evidence/discoverability-rendered.png"
      ],
      "findingIds": [
        "F032"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The HAR recorded 52 status-0 requests and one 502 while Lighthouse logged repeated third-party CORS errors.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/entry-summary.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F033"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The race service is app-like and service-worker capable, but no web app manifest was linked; installability/offline fallback was not exposed.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F034"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The representative missing route renders bare “Not Found” and offers no recovery action.",
      "pathIds": [
        "failure-route"
      ],
      "artifacts": [
        "evidence/sitemap.txt"
      ],
      "findingIds": [
        "F035"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The Japanese page has an empty html lang attribute; Lighthouse independently failed html-has-lang.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F036"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Recon across representative paths and DOM/platform feature inspection.",
      "evidence": "The audited service is deliberately Japanese-only and did not expose currency, user-entered locale data, or locale selection in the representative public race paths.",
      "reason": "The audited service is deliberately Japanese-only and did not expose currency, user-entered locale data, or locale selection in the representative public race paths."
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Recon across representative paths and DOM/platform feature inspection.",
      "evidence": "Race times are venue-local schedule labels and no cross-zone scheduling or user-editable time concept was exposed in the audited paths.",
      "reason": "Race times are venue-local schedule labels and no cross-zone scheduling or user-editable time concept was exposed in the audited paths."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The consent first layer offers Consent and Manage options but no direct Reject all, while describing sharing with 214 partners and precise geolocation.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/entry-mobile.png",
        "evidence/entry-desktop.png"
      ],
      "findingIds": [
        "F037"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Recon across representative paths and DOM/platform feature inspection.",
      "evidence": "The representative public race paths contain no user-submitted validation form; account submission was not attempted with credentials.",
      "reason": "The representative public race paths contain no user-submitted validation form; account submission was not attempted with credentials."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The login ID and password fields have empty autocomplete attributes.",
      "pathIds": [
        "account-login"
      ],
      "artifacts": [
        "evidence/login-probe.json"
      ],
      "findingIds": [
        "F038"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "The race card promotes a 14-day free premium trial without the ongoing price or cancellation commitment visible in the captured context.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/race-card-probe.json"
      ],
      "findingIds": [
        "F039"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Image audit found 84/85 legacy-format images, zero modern-format images, 15 oversized images, and 27 below-fold images without lazy loading.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/images.json"
      ],
      "findingIds": [
        "F040"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "HAR recorded 282 requests including 116 fetch/XHR calls and multiple slow ad/affiliate requests during initial load.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/entry-summary.json"
      ],
      "findingIds": [
        "F041"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "Third parties account for 274 requests and 3.08MB of 3.12MB transferred, disproportionate to the core text/table experience.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/entry-summary.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F042"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Recon across representative paths and DOM/platform feature inspection.",
      "evidence": "No declared agent-facing intent or transactional agent surface was present; this emerging capability is outside the current public race-page scope.",
      "reason": "No declared agent-facing intent or transactional agent surface was present; this emerging capability is outside the current public race-page scope."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Recon across representative paths and DOM/platform feature inspection.",
      "evidence": "No experience requiring on-device inference was identified; absence is not a failure for this content and race-data site.",
      "reason": "No experience requiring on-device inference was identified; absence is not a failure for this content and race-data site."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "Direct objective/visual inspection using the referenced artifact(s).",
      "evidence": "After ten carousel advances, retained heap increased only about 72KB (52,842,648 to 52,914,797 bytes); closures rose by 3 and arrays by 22, not an unbounded-growth signal.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual/objective evidence from the referenced artifact(s), judged against the mapped Modern Web Guidance.",
      "evidence": "A single homepage state retained about 52.8MB across roughly 1,000,010 heap nodes, a high footprint for a race listing dominated by text and tables.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot"
      ],
      "findingIds": [
        "F043"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Direct objective/visual inspection using the referenced artifact(s).",
      "evidence": "The before/after summaries show stable closures (45,439 to 45,442), promises (401 to 399), and no Detached* constructor among top retained constructors.",
      "pathIds": [
        "race-home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F001",
        "F002",
        "F003"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F004",
        "F005"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F006"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F007",
        "F008",
        "F009"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F010",
        "F011"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F012",
        "F013"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F014",
        "F015",
        "F016",
        "F017"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F018",
        "F019",
        "F020",
        "F021",
        "F022"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F023",
        "F024",
        "F025"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F026",
        "F027"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F028",
        "F029",
        "F030",
        "F031"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F032",
        "F033",
        "F034",
        "F035"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F036"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F037",
        "F038",
        "F039"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F040",
        "F041",
        "F042"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "All checks were judged not applicable to the current site intent and representative public surfaces; see check-specific rationales."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F043"
      ]
    }
  ],
  "paths": [
    {
      "id": "race-home",
      "description": "Race portal and weekly race listing, the entry and navigation archetype.",
      "url": "https://race.sp.netkeiba.com/",
      "conditions": [
        "mobile 390x844",
        "desktop 1440x900",
        "prefers-color-scheme: dark",
        "prefers-contrast: more",
        "prefers-reduced-motion: reduce",
        "no JavaScript crawler"
      ],
      "result": "issues"
    },
    {
      "id": "race-card",
      "description": "Representative race detail and runner table, the primary information journey.",
      "url": "https://race.sp.netkeiba.com/race/shutuba.html?race_id=202604020207",
      "conditions": [
        "mobile 390x844",
        "consent first visit"
      ],
      "result": "issues"
    },
    {
      "id": "odds",
      "description": "Representative odds surface linked from the race card.",
      "url": "https://race.sp.netkeiba.com/?pid=odds_view&race_id=202604020207",
      "conditions": [
        "mobile 390x844",
        "consent first visit"
      ],
      "result": "issues"
    },
    {
      "id": "race-list",
      "description": "Historical/date-filtered race listing archetype.",
      "url": "https://race.sp.netkeiba.com/?pid=race_list&kaisai_date=20260719",
      "conditions": [
        "mobile 390x844",
        "consent first visit"
      ],
      "result": "issues"
    },
    {
      "id": "account-login",
      "description": "Linked authentication surface, inspected for input assistance and modern authentication.",
      "url": "https://regist.sp.netkeiba.com/",
      "conditions": [
        "default browser context"
      ],
      "result": "issues"
    },
    {
      "id": "failure-route",
      "description": "Missing sitemap/error response used as a representative HTTP failure state.",
      "url": "https://race.sp.netkeiba.com/sitemap.xml",
      "conditions": [
        "default browser context"
      ],
      "result": "issues"
    }
  ],
  "findings": [
    {
      "id": "F001",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "severity": "medium",
      "confidence": "high",
      "summary": "Honours prefers-color-scheme: a usable dark mode exists and is driven by the user's preference (color-scheme / prefers-color-scheme / light-dark()), not hard-coded light only.",
      "evidence": "Computed color-scheme is normal and the dark-preference screenshot remains light, with the same white consent and content surfaces.",
      "artifacts": [
        "evidence/entry-dark.png",
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Declare color-scheme and theme tokens driven by prefers-color-scheme or light-dark().",
      "effort": "small"
    },
    {
      "id": "F002",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-reduced-motion",
      "guidanceId": "accessibility",
      "severity": "medium",
      "confidence": "high",
      "summary": "Honours prefers-reduced-motion: non-essential animations and auto-advance are reduced or removed when the user asks for less motion.",
      "evidence": "Under prefers-reduced-motion: reduce, two bell_active animations still run for 5 seconds and many 0.2–0.5s transitions remain enabled.",
      "artifacts": [
        "evidence/reduced-motion-probe.json"
      ],
      "suggestedFix": "Disable non-essential animation and reduce transitions inside @media (prefers-reduced-motion: reduce).",
      "effort": "small"
    },
    {
      "id": "F003",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-contrast",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Honours prefers-contrast / forced-colors: controls, text and scrollbars remain visible under high-contrast preferences.",
      "evidence": "Lighthouse found multiple WCAG contrast failures, including white GIII text on #58af4a at 2.74:1.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/entry-high-contrast.png"
      ],
      "suggestedFix": "Adjust semantic color tokens to meet WCAG contrast and verify in forced/high-contrast modes.",
      "effort": "medium"
    },
    {
      "id": "F004",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "severity": "low",
      "confidence": "high",
      "summary": "State and route changes use View Transitions (including same-document, cross-document and scroll-driven/staggered) rather than instant, jarring swaps.",
      "evidence": "Platform probe found no view-transition usage; navigation and content-state changes use abrupt legacy swaps.",
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Progressively enhance meaningful route and tab changes with same- or cross-document View Transitions.",
      "effort": "small"
    },
    {
      "id": "F005",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "physical-gestures",
      "guidanceId": "carousel-slide-effects",
      "severity": "low",
      "confidence": "high",
      "summary": "Gesture-driven interactions and entry/exit motion feel native (declarative overscroll/scroll-snap, physics-based easing, animating to intrinsic sizes, pull/swipe gestures) rather than fighting the platform with custom pointer handlers.",
      "evidence": "The carousel uses Slick controls but no CSS scroll snap or overscroll primitive was detected.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/entry-dom.json"
      ],
      "suggestedFix": "Use scroll snap and native scrolling as the baseline, retaining buttons and keyboard control.",
      "effort": "small"
    },
    {
      "id": "F006",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "shrinking-header-on-scroll",
      "severity": "low",
      "confidence": "high",
      "summary": "Sticky/affixed UI reacts to scroll state and position (e.g. the new scroll-state(scrolled) query, shrinking headers, progress indicators) so chrome responds to position instead of static or JS-driven toggling.",
      "evidence": "The long 4,505px page has static header chrome and no container/scroll-state implementation in the DOM/CSS probe.",
      "artifacts": [
        "evidence/entry-layout.json",
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Use sticky state-aware chrome or a lightweight progress/scroll affordance without blocking content.",
      "effort": "small"
    },
    {
      "id": "F007",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "severity": "high",
      "confidence": "high",
      "summary": "No intrusive pop-ups, interstitials or banners that obscure content on load; overlays are dismissible and content-first.",
      "evidence": "On every first-visit capture, a near-full-viewport consent modal obscures the race content before interaction.",
      "artifacts": [
        "evidence/entry-mobile.png",
        "evidence/entry-desktop.png",
        "evidence/race-card-mobile.png"
      ],
      "suggestedFix": "Provide an equally prominent reject path and avoid blocking non-personalised core content.",
      "effort": "medium"
    },
    {
      "id": "F008",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "severity": "medium",
      "confidence": "high",
      "summary": "Overlays and rich controls use the right primitive: popover (with declarative light-dismiss) for transient UI, dialog for modal flows, details for disclosure, native-but-branded selects and pickers, rather than ad-hoc divs.",
      "evidence": "The rendered page has zero dialog, popover, and details elements although the consent UI is modal and custom controls are extensive.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/entry-mobile.png"
      ],
      "suggestedFix": "Use dialog for modal consent and native semantic controls for disclosure and transient overlays.",
      "effort": "small"
    },
    {
      "id": "F009",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "reduced-chrome",
      "guidanceId": "improve-text-layout-and-legibility",
      "severity": "medium",
      "confidence": "high",
      "summary": "Minimise non-content chrome and borders so the content is the focus, not the application frame; expressive/decorative visuals serve the content rather than crowd it.",
      "evidence": "The first viewport is dominated by app promotion, two navigation bars, and the consent layer rather than race data.",
      "artifacts": [
        "evidence/entry-mobile.png",
        "evidence/entry-desktop.png"
      ],
      "suggestedFix": "Collapse secondary navigation and promotions; reserve the first viewport for race information and the primary actions.",
      "effort": "small"
    },
    {
      "id": "F010",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "severity": "low",
      "confidence": "high",
      "summary": "Components adapt to their container with container queries (incl. anchored container queries) and content/state-based styling where reused at different sizes, not only global viewport breakpoints.",
      "evidence": "No container-query rules were detected; the mobile-specific page relies on global/mobile templates rather than reusable container adaptation.",
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Adopt container queries for race cards, odds tables, and reused navigation components.",
      "effort": "small"
    },
    {
      "id": "F011",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Touch targets are adequately sized and hover-only affordances have a non-hover fallback, and keyboard focus is visible, so the UI works for touch, pointer and keyboard alike.",
      "evidence": "Lighthouse found unnamed links and an unnamed submit input; 32 javascript: anchors act as controls, weakening keyboard semantics and focus clarity.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Use buttons for actions, real links for navigation, accessible names, visible :focus-visible styling, and 44px touch targets.",
      "effort": "medium"
    },
    {
      "id": "F012",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "support-core-task-success",
      "principleCheckId": "primary-flow-completion",
      "guidanceId": "forms",
      "severity": "high",
      "confidence": "high",
      "summary": "The representative primary flow can be completed end-to-end with predictable steps, no avoidable dead ends, no hidden required information, and no needless detours through modals, account walls, or upsells.",
      "evidence": "The race list, odds, and race-card paths are all blocked on first visit by consent; rejection requires the secondary Manage options path.",
      "artifacts": [
        "evidence/entry-mobile.png",
        "evidence/odds-mobile.png",
        "evidence/race-card-mobile.png"
      ],
      "suggestedFix": "Allow immediate non-personalised use and expose accept/reject/manage as equivalent, predictable choices.",
      "effort": "medium"
    },
    {
      "id": "F013",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "support-core-task-success",
      "principleCheckId": "clear-system-state-and-recovery",
      "guidanceId": "persistent-toast-notifications",
      "severity": "medium",
      "confidence": "high",
      "summary": "Loading, empty, success, error, offline, and partial-completion states are visible and actionable; users can retry, undo, cancel, go back, or continue without losing context.",
      "evidence": "The tested missing route returns only “Not Found” with no navigation, explanation, retry, or route recovery.",
      "artifacts": [
        "evidence/sitemap.txt"
      ],
      "suggestedFix": "Serve a branded 404 with useful race navigation, search, and retry/back options.",
      "effort": "small"
    },
    {
      "id": "F014",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "severity": "high",
      "confidence": "high",
      "summary": "Core Web Vitals are in the good range: LCP is fast, interaction latency (INP) is low, and CLS is minimal; work is prioritised and deferred sensibly.",
      "evidence": "Lighthouse measured LCP 12.4s, TBT 795ms and performance 0.42; the independent trace measured LCP 4.68s. Both LCP results miss the good threshold.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/entry-trace-summary.json"
      ],
      "suggestedFix": "Prioritise the LCP element, defer non-critical scripts, and measure field CWV after changes.",
      "effort": "medium"
    },
    {
      "id": "F015",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-main-thread",
      "guidanceId": "break-up-long-tasks",
      "severity": "high",
      "confidence": "high",
      "summary": "The main thread is not blocked by long tasks or heavy scripting; work is deferred, chunked, prioritised, or moved off-thread.",
      "evidence": "Lighthouse reported 795ms total blocking time and 23.6s to interactive despite the shorter trace window finding no long task.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/entry-trace-summary.json"
      ],
      "suggestedFix": "Defer ad/analytics startup, split long work, and schedule non-user-visible work after interaction/idle.",
      "effort": "medium"
    },
    {
      "id": "F016",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-preload-priority",
      "severity": "high",
      "confidence": "high",
      "summary": "Critical resources are delivered efficiently: cache headers are useful, render-blocking chains are short, fonts do not block or shift text, HTTP delivery is modern, and network dependency trees do not delay the main content.",
      "evidence": "HAR recorded 282 requests and 3.12MB, including many parser-inserted VeryHigh-priority stylesheets and missing cache headers.",
      "artifacts": [
        "evidence/entry-summary.json",
        "evidence/entry.har"
      ],
      "suggestedFix": "Inline/minimise critical CSS, defer page-specific styles, reduce dependency chains, and apply effective cache headers.",
      "effort": "medium"
    },
    {
      "id": "F017",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "severity": "high",
      "confidence": "high",
      "summary": "The page does not ship large unused or duplicated JavaScript/CSS, avoidable legacy bundles, or third-party code that dominates the load without user value.",
      "evidence": "Lighthouse estimated 733KiB unused JavaScript and 161KiB unused CSS; repeated GTM/gtag and ad bundles dominate script transfer.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/entry-summary.json"
      ],
      "suggestedFix": "Remove duplicate analytics tags, conditionally load ad stacks, and split page-specific CSS/JS.",
      "effort": "medium"
    },
    {
      "id": "F018",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Interactive elements have accessible names, correct roles, and form fields have labels; images have alt text where meaningful; canvas/expressive content is exposed to assistive technology.",
      "evidence": "Lighthouse failed image-alt, input-button-name and link-name; the image probe found 57 of 85 images without alt text.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/images.json"
      ],
      "suggestedFix": "Add meaningful names/labels, empty alt for decorative images, and semantic buttons/links.",
      "effort": "medium"
    },
    {
      "id": "F019",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Text and essential UI meet WCAG colour-contrast minimums against their background.",
      "evidence": "Automated contrast testing found failures as low as 2.74:1 for small text.",
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Update color tokens to meet 4.5:1 for normal text and 3:1 for large text and essential UI.",
      "effort": "medium"
    },
    {
      "id": "F020",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Heading and landmark structure is logical, focus order follows reading order, keyboard focus is always visible, and interactive state survives DOM moves.",
      "evidence": "The document has no html lang, no main landmark in the platform probe, five H1 elements after CMP injection, and unnamed focusable links.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Set lang=ja, provide one main landmark and logical headings, and preserve a visible sequential focus order.",
      "effort": "medium"
    },
    {
      "id": "F021",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "legible-text",
      "guidanceId": "improve-text-layout-and-legibility",
      "severity": "medium",
      "confidence": "high",
      "summary": "Text is legible and inclusively rendered: comfortable line layout, precise alignment, stable rendering across mixed fonts, no clipping or cramped wrapping that harms comprehension.",
      "evidence": "The mobile UI uses dense race chrome and Lighthouse flags 9–12px labels with weak contrast, reducing reading comfort.",
      "artifacts": [
        "evidence/entry-mobile.png",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Increase small-label size/line-height and simplify dense secondary information while preserving tabular alignment.",
      "effort": "small"
    },
    {
      "id": "F022",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "fluid-scaling",
      "severity": "high",
      "confidence": "high",
      "summary": "The experience remains usable when zoomed or reflowed, touch targets are large enough, media has captions or equivalents where needed, and the viewport does not prevent user scaling.",
      "evidence": "Lighthouse fails the viewport audit because maximum-scale=1 limits zoom; it also reports accessibility failures on controls.",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Remove maximum-scale/minimum-scale restrictions and validate at 200–400% zoom and narrow reflow.",
      "effort": "medium"
    },
    {
      "id": "F023",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "follow-best-practices",
      "principleCheckId": "no-console-errors",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "The page loads without console errors or uncaught exceptions.",
      "evidence": "Lighthouse recorded repeated CORS failures from ad.ad-stir.com and aladdin.genieesspv.jp.",
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Fix or remove failing third-party calls and keep production console/network logs clean.",
      "effort": "small"
    },
    {
      "id": "F024",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "Valid doctype and charset, images sized with correct aspect ratio, no deprecated APIs misused, and CSS/HTML are well structured and not needlessly repetitive. (HTTPS, CSP and permission hygiene are judged under be-private-and-secure, not here.)",
      "evidence": "Image audit found 75/85 images missing one or both dimensions and Lighthouse found incorrect aspect ratios.",
      "artifacts": [
        "evidence/images.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Provide intrinsic width/height or aspect-ratio and correct distorted asset dimensions.",
      "effort": "small"
    },
    {
      "id": "F025",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "The page uses the platform cleanly: no deprecated APIs, no avoidable BFCache blockers, no broken source maps or inspector issues, no stale vulnerable libraries, no paste-prevention on inputs, and no notification/geolocation prompts on load.",
      "evidence": "Lighthouse reports a deprecated Topics API call, inspector issues and a BFCache failure signal.",
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Remove deprecated ad APIs, resolve inspector issues, and retest BFCache after all frames finish loading.",
      "effort": "small"
    },
    {
      "id": "F026",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "Links are crawlable (real href), there is a viewport meta tag, robots does not block indexing, and link text is descriptive.",
      "evidence": "The platform probe found 32 javascript: links; Lighthouse failed crawlable anchors and the viewport uses maximum-scale=1.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Use real href URLs for navigable tabs, buttons for actions, descriptive link names, and a zoom-safe viewport.",
      "effort": "small"
    },
    {
      "id": "F027",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "Where the page represents an article, product, organization, event, place or other rich entity, structured data and share-preview metadata accurately describe the visible content.",
      "evidence": "The listing declares og:type=article and no JSON-LD was observed, so share/entity metadata does not accurately model a race listing/event surface.",
      "artifacts": [
        "evidence/recon.json"
      ],
      "suggestedFix": "Add accurate Event/SportsEvent or Dataset-style structured data where valid and align Open Graph type/URL with the visible page.",
      "effort": "small"
    },
    {
      "id": "F028",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "severity": "critical",
      "confidence": "high",
      "summary": "Served over HTTPS with a sensible Content-Security-Policy and secure, SameSite cookies; no mixed content or obvious transport/header smells.",
      "evidence": "HTTPS is used, but CSP, HSTS, nosniff, clickjacking protection, Referrer-Policy and Permissions-Policy are all absent; all 14 observed first-party cookies lack Secure.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Deploy HSTS, a restrictive CSP, nosniff, frame-ancestors, Referrer-Policy and Permissions-Policy; mark HTTPS cookies Secure with appropriate SameSite.",
      "effort": "medium"
    },
    {
      "id": "F029",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "severity": "critical",
      "confidence": "high",
      "summary": "No over-collection of user data, no leaky third parties, and analytics/background data collection is minimised and batched rather than chatty or session-wide by default.",
      "evidence": "Tracker capture found 56 third-party origins and 18 known tracker domains; HAR attributed 274/282 requests and 3.08MB to third parties.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/entry-summary.json"
      ],
      "suggestedFix": "Reduce vendors, gate non-essential tags until consent, consolidate analytics, and document a data-minimisation budget.",
      "effort": "medium"
    },
    {
      "id": "F030",
      "pathId": "account-login",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "in-context-permissions-and-modern-auth",
      "guidanceId": "passkeys",
      "severity": "high",
      "confidence": "high",
      "summary": "Permission prompts are requested in context (not on load), and authentication uses modern, phishing-resistant methods (passkeys / WebAuthn) where relevant rather than passwords alone.",
      "evidence": "The account page exposes password-only inputs with no autocomplete tokens and no WebAuthn/passkey implementation detected.",
      "artifacts": [
        "evidence/login-probe.json"
      ],
      "suggestedFix": "Add passkeys/WebAuthn and correct current-password/username autocomplete while retaining recovery options.",
      "effort": "medium"
    },
    {
      "id": "F031",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "severity": "critical",
      "confidence": "high",
      "summary": "Browser-enforced defenses are configured where appropriate: HSTS, clickjacking protection (frame-ancestors / X-Frame-Options), Trusted Types for XSS-sensitive apps, origin isolation, privacy-preserving third-party cookie posture, and sensible Referrer-Policy / Permissions-Policy.",
      "evidence": "Header inspection found no clickjacking, HSTS, referrer, permissions or CSP defenses, and Lighthouse observed ten third-party cookies.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Add browser-enforced policies and migrate tracking away from third-party-cookie dependence.",
      "effort": "medium"
    },
    {
      "id": "F032",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-resilient",
      "principleCheckId": "progressive-enhancement",
      "guidanceId": "flicker-free-client-side-ab-testing",
      "severity": "high",
      "confidence": "high",
      "summary": "Core content and primary flows are reachable and usable without JavaScript and on older or non-Baseline browsers; modern features layer on as enhancements with fallbacks, and reactive/transition state stabilises rather than flickering before it settles.",
      "evidence": "The no-JavaScript crawler received only 21% rendered-content coverage and the crawler screenshot shows navigation plus a loader rather than race data.",
      "artifacts": [
        "evidence/discoverability",
        "evidence/discoverability-crawler.png",
        "evidence/discoverability-rendered.png"
      ],
      "suggestedFix": "Server-render core race listings/details and progressively enhance tabs and live odds with JavaScript.",
      "effort": "medium"
    },
    {
      "id": "F033",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-resilient",
      "principleCheckId": "resilient-runtime-behaviour",
      "guidanceId": "conditional-async-dependencies",
      "severity": "medium",
      "confidence": "high",
      "summary": "The page behaves robustly at runtime: overlays and menus never get cut off, DOM state survives moves, background work and async dependencies are sequenced and conditional rather than fragile, and initial visibility state is detected correctly.",
      "evidence": "The HAR recorded 52 status-0 requests and one 502 while Lighthouse logged repeated third-party CORS errors.",
      "artifacts": [
        "evidence/entry-summary.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Conditionally load optional dependencies and isolate failures so ad/vendor errors cannot destabilise core UI.",
      "effort": "small"
    },
    {
      "id": "F034",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "detect-initial-visibility-state",
      "severity": "low",
      "confidence": "high",
      "summary": "Where the site is an app, it is installable (web app manifest) and offers an offline fallback and works on flaky networks. (Contextual: a brochure or intrinsically-online site may reasonably not need this.)",
      "evidence": "The race service is app-like and service-worker capable, but no web app manifest was linked; installability/offline fallback was not exposed.",
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Provide a manifest and a small offline shell/fallback for saved race information, or explicitly document the online-only scope.",
      "effort": "small"
    },
    {
      "id": "F035",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-resilient",
      "principleCheckId": "network-and-http-failure-states",
      "guidanceId": "persistent-toast-notifications",
      "severity": "medium",
      "confidence": "high",
      "summary": "HTTP errors, network failures, timeouts and stale data states are handled intentionally: users see useful recovery options rather than blank screens, infinite spinners, broken shells, or misleading success states.",
      "evidence": "The representative missing route renders bare “Not Found” and offers no recovery action.",
      "artifacts": [
        "evidence/sitemap.txt"
      ],
      "suggestedFix": "Provide useful error pages and actionable retry/back/navigation states for HTTP and fetch failures.",
      "effort": "small"
    },
    {
      "id": "F036",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "translator",
      "severity": "high",
      "confidence": "high",
      "summary": "Correct lang and dir attributes, logical CSS properties (inline/block) rather than physical left/right, and translation-ready markup so the layout and reading order survive other languages and writing modes.",
      "evidence": "The Japanese page has an empty html lang attribute; Lighthouse independently failed html-has-lang.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Set lang=ja (and dir where needed), then audit CSS for logical properties before translation/localisation.",
      "effort": "medium"
    },
    {
      "id": "F037",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "custom-button-actions",
      "severity": "high",
      "confidence": "high",
      "summary": "No deceptive design: no confirmshaming, forced continuity, disguised ads, or nagging consent walls; honest defaults; clear pricing and consent; easy reversal/cancel; predictable, declaratively-wired actions; and no hidden-text tricks (hidden content stays deep-linkable and indexable rather than used to deceive).",
      "evidence": "The consent first layer offers Consent and Manage options but no direct Reject all, while describing sharing with 214 partners and precise geolocation.",
      "artifacts": [
        "evidence/entry-mobile.png",
        "evidence/entry-desktop.png"
      ],
      "suggestedFix": "Offer equally prominent accept, reject, and manage choices with neutral wording and no extra rejection friction.",
      "effort": "medium"
    },
    {
      "id": "F038",
      "pathId": "account-login",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "autofill-sign-in-form",
      "severity": "medium",
      "confidence": "high",
      "summary": "Input is assisted, not obstructed: correct autocomplete tokens so address, payment, sign-in and sign-up fields autofill, and inputs are highlighted/sized to help the user rather than trip them up.",
      "evidence": "The login ID and password fields have empty autocomplete attributes.",
      "artifacts": [
        "evidence/login-probe.json"
      ],
      "suggestedFix": "Use autocomplete=username and autocomplete=current-password; provide passkey conditional mediation when supported.",
      "effort": "small"
    },
    {
      "id": "F039",
      "pathId": "race-card",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-trustworthy",
      "principleCheckId": "safe-commercial-and-account-flows",
      "guidanceId": "autofill-payment-form",
      "severity": "medium",
      "confidence": "high",
      "summary": "Checkout, subscription, consent, authentication and account-management flows are clear, reversible, and proportionate: pricing and commitments are visible, cancellation is findable, sensitive actions re-authenticate when appropriate, and users are not tricked into continuity.",
      "evidence": "The race card promotes a 14-day free premium trial without the ongoing price or cancellation commitment visible in the captured context.",
      "artifacts": [
        "evidence/race-card-probe.json"
      ],
      "suggestedFix": "Place recurring price, renewal timing, and cancellation terms next to the trial CTA and keep cancellation easy to find.",
      "effort": "small"
    },
    {
      "id": "F040",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "severity": "high",
      "confidence": "high",
      "summary": "Images and decorative assets are optimised and served at appropriate resolutions; decorative pseudo-element imagery and heavy decorative images are resolution-optimised rather than oversized.",
      "evidence": "Image audit found 84/85 legacy-format images, zero modern-format images, 15 oversized images, and 27 below-fold images without lazy loading.",
      "artifacts": [
        "evidence/images.json"
      ],
      "suggestedFix": "Serve AVIF/WebP where appropriate, responsive srcset/sizes, correct intrinsic dimensions, and lazy-load offscreen media.",
      "effort": "medium"
    },
    {
      "id": "F041",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "deprioritize-background-fetches",
      "severity": "high",
      "confidence": "high",
      "summary": "Background work and fetching are not wasteful: background processing is efficient and de-prioritised, and the lightest technique that achieves the result is preferred over heavy or redundant work.",
      "evidence": "HAR recorded 282 requests including 116 fetch/XHR calls and multiple slow ad/affiliate requests during initial load.",
      "artifacts": [
        "evidence/entry-summary.json"
      ],
      "suggestedFix": "Remove redundant calls and defer/batch non-essential analytics and advertising work until consent and idle.",
      "effort": "medium"
    },
    {
      "id": "F042",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "efficient-background-processing",
      "severity": "critical",
      "confidence": "high",
      "summary": "Third-party scripts, fonts, video, audio, animation and heavy media are proportionate to the user value they provide; autoplay or background media is avoided unless essential and resource use is cached or deferred where possible.",
      "evidence": "Third parties account for 274 requests and 3.08MB of 3.12MB transferred, disproportionate to the core text/table experience.",
      "artifacts": [
        "evidence/entry-summary.json",
        "evidence/trackers.json"
      ],
      "suggestedFix": "Set a strict third-party byte/request budget and load vendors only when they deliver measured user value.",
      "effort": "medium"
    },
    {
      "id": "F043",
      "pathId": "race-home",
      "url": "https://race.sp.netkeiba.com/",
      "principleId": "be-memory-efficient",
      "principleCheckId": "bounded-footprint",
      "guidanceId": "manage-recurring-intervals",
      "severity": "medium",
      "confidence": "high",
      "summary": "Heap size and DOM node count are reasonable for what the page is; the footprint is proportionate rather than bloated.",
      "evidence": "A single homepage state retained about 52.8MB across roughly 1,000,010 heap nodes, a high footprint for a race listing dominated by text and tables.",
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot"
      ],
      "suggestedFix": "Reduce vendor/script populations, detach unused modules, and set a measured heap/node budget for the entry route.",
      "effort": "small"
    }
  ],
  "taskList": [
    {
      "id": "T1",
      "title": "Reduce and consent-gate the third-party advertising/analytics stack",
      "priority": 1,
      "findingIds": [
        "F014",
        "F015",
        "F016",
        "F017",
        "F028",
        "F029",
        "F030",
        "F031",
        "F040",
        "F041",
        "F042"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T2",
      "title": "Deploy security headers and secure cookie attributes",
      "priority": 2,
      "findingIds": [
        "F028",
        "F029",
        "F030",
        "F031"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T3",
      "title": "Make consent non-blocking and provide equal accept/reject/manage choices",
      "priority": 3,
      "findingIds": [
        "F007",
        "F008",
        "F009",
        "F012",
        "F013",
        "F037",
        "F038",
        "F039"
      ],
      "guidanceId": "light-dismiss-a-dialog",
      "status": "open"
    },
    {
      "id": "T4",
      "title": "Restore accessible semantics, names, language, contrast, focus, and zoom",
      "priority": 4,
      "findingIds": [
        "F010",
        "F011",
        "F018",
        "F019",
        "F020",
        "F021",
        "F022",
        "F036"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T5",
      "title": "Cut LCP/TBT by removing duplicate tags, unused bundles, and blocking CSS",
      "priority": 5,
      "findingIds": [
        "F014",
        "F015",
        "F016",
        "F017"
      ],
      "guidanceId": "identify-heavy-scripts",
      "status": "open"
    },
    {
      "id": "T6",
      "title": "Server-render core race content and add recoverable HTTP/offline states",
      "priority": 6,
      "findingIds": [
        "F026",
        "F027",
        "F032",
        "F033",
        "F034",
        "F035"
      ],
      "guidanceId": "flicker-free-client-side-ab-testing",
      "status": "open"
    },
    {
      "id": "T7",
      "title": "Modernise responsive images and set intrinsic dimensions",
      "priority": 7,
      "findingIds": [
        "F023",
        "F024",
        "F025",
        "F040",
        "F041",
        "F042"
      ],
      "guidanceId": "deliver-optimized-decorative-images",
      "status": "open"
    },
    {
      "id": "T8",
      "title": "Add dark, reduced-motion, and high-contrast preference support",
      "priority": 8,
      "findingIds": [
        "F001",
        "F002",
        "F003"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T9",
      "title": "Improve account autofill and add passkeys",
      "priority": 9,
      "findingIds": [
        "F028",
        "F029",
        "F030",
        "F031",
        "F037",
        "F038",
        "F039"
      ],
      "guidanceId": "passkeys",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Reduce page chrome and adopt native responsive/interaction primitives",
      "priority": 10,
      "findingIds": [
        "F004",
        "F005",
        "F006",
        "F007",
        "F008",
        "F009",
        "F010",
        "F011"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    },
    {
      "id": "T11",
      "title": "Reduce initial heap footprint by unloading unused vendor modules",
      "priority": 11,
      "findingIds": [
        "F043"
      ],
      "guidanceId": "manage-recurring-intervals",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 6,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-20T18-31-48-445Z"
}
