{
  "url": "https://kakuyomu.jp",
  "auditedAt": "2026-07-22T09:41:58.998Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage complete across 58 catalog checks and six representative public paths.",
  "page": {
    "appType": "hybrid",
    "framework": "Next.js plus legacy/MPA reader surfaces",
    "notes": "Japanese web-fiction publishing and reading platform. Public SSR content with distinct home, discovery, work-detail, reader, and authentication templates."
  },
  "evidenceUsed": [
    "screenshots",
    "DOM and computed styles",
    "evaluate probes",
    "mobile layout metrics",
    "prefers-color-scheme",
    "prefers-reduced-motion",
    "prefers-contrast",
    "raw HTML discoverability",
    "Lighthouse",
    "DevTools trace",
    "HAR",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "image audit",
    "heap summaries",
    "404 recovery exercise"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "same-document-transitions",
    "scroll-progress-indicator",
    "fluid-scaling",
    "size-aware-styling",
    "performance",
    "break-up-long-tasks",
    "optimize-preload-priority",
    "identify-heavy-scripts",
    "optimize-image-priority",
    "improve-text-layout-and-legibility",
    "html",
    "css",
    "security",
    "privacy",
    "deliver-optimized-decorative-images",
    "deprioritize-background-fetches",
    "efficient-background-processing"
  ],
  "config": {
    "loaded": false
  },
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "Home at 1440 by 1000",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "Home at 360 by 800",
      "findingIds": [
        "F05",
        "F15"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/explore-mobile.png",
      "caption": "Explore at 360 by 800",
      "findingIds": [
        "F05",
        "F06"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/work-desktop.png",
      "caption": "Work detail at 1440 by 1000",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/work-mobile.png",
      "caption": "Work detail at 360 by 800",
      "findingIds": [
        "F05",
        "F06",
        "F15"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/episode-mobile.png",
      "caption": "Episode at 360 by 800",
      "findingIds": [
        "F05",
        "F15"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/episode-desktop.png",
      "caption": "Episode reader at 1440 by 1000",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "Home under dark color scheme",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/episode-dark.png",
      "caption": "Reader under dark color scheme",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-high-contrast.png",
      "caption": "Home under prefers-contrast more",
      "findingIds": [
        "F02",
        "F13"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-layout-mobile.json",
      "caption": "Home mobile layout metrics",
      "findingIds": [
        "F05",
        "F25"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/explore-layout-mobile.json",
      "caption": "Explore mobile layout metrics",
      "findingIds": [
        "F05",
        "F25"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/work-layout-mobile.json",
      "caption": "Work mobile layout metrics",
      "findingIds": [
        "F05",
        "F25"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/episode-layout-mobile.json",
      "caption": "Episode mobile layout metrics",
      "findingIds": [
        "F04",
        "F05",
        "F25"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "Rendered home DOM and computed styles",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/episode-dom.json",
      "caption": "Rendered episode DOM and computed styles",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/modern-css-probe.json",
      "caption": "Reduced-motion and modern CSS probe",
      "findingIds": [
        "F03"
      ]
    },
    {
      "type": "other",
      "path": "evidence/metadata-probe.json",
      "caption": "Robots, sitemap, manifest, and metadata probe",
      "findingIds": [
        "F16",
        "F20",
        "F21"
      ]
    },
    {
      "type": "other",
      "path": "evidence/ui-probe.json",
      "caption": "Controls, focus, structure, and CSS probe",
      "findingIds": [
        "F06",
        "F07",
        "F14"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "DevTools performance trace",
      "findingIds": []
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "Trace timing and long-task summary",
      "findingIds": [
        "F08",
        "F09"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "Home network archive",
      "findingIds": [
        "F10",
        "F28"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "Home network summary",
      "findingIds": [
        "F10",
        "F11",
        "F23",
        "F26",
        "F27",
        "F28"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/home-lighthouse.json",
      "caption": "Lighthouse report",
      "findingIds": [
        "F07",
        "F11",
        "F12",
        "F13",
        "F14",
        "F16",
        "F19"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/home-lighthouse-summary.json",
      "caption": "Compact Lighthouse summary",
      "findingIds": [
        "F02",
        "F08",
        "F09"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-headers.json",
      "caption": "Security-header audit",
      "findingIds": [
        "F22",
        "F24"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-cookies.json",
      "caption": "Cookie audit",
      "findingIds": [
        "F22"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-trackers.json",
      "caption": "Third-party tracker audit",
      "findingIds": [
        "F23",
        "F27"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-secrets.json",
      "caption": "Client secret scan",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/work-images.json",
      "caption": "Work-page image audit",
      "findingIds": [
        "F12",
        "F18",
        "F26"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/home-heap-baseline.json",
      "caption": "Baseline heap summary",
      "findingIds": [
        "F29"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/home-heap-post.json",
      "caption": "Heap after repeated carousel interaction",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "Home raw/rendered discoverability result",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "Home browser view",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "Home no-JS crawler view",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/episode-discoverability.json",
      "caption": "Episode raw/rendered discoverability result",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/episode-discoverability-crawler.png",
      "caption": "Episode no-JS crawler view",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/404-mobile.png",
      "caption": "Actionable 404 at mobile viewport",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/404-probe.json",
      "caption": "404 recovery-content probe",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/auth-probe.json",
      "caption": "Authentication and passkey probe",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/work-recon.json",
      "caption": "Work metadata and episode-link probe",
      "findingIds": [
        "F21"
      ]
    },
    {
      "type": "other",
      "path": "evidence/lighthouse-failure-details.txt",
      "caption": "Lighthouse failure details",
      "findingIds": [
        "F17",
        "F19"
      ]
    }
  ],
  "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": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "Dark-emulated screenshots of both the home and reading surfaces remain white, and computed color-scheme is normal.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/episode-dark.png"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "Under prefers-reduced-motion: reduce, the probe found zero active animations and no auto-advancing animation requiring suppression.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/modern-css-probe.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "The prefers-contrast screenshot is effectively unchanged, while Lighthouse reports color-contrast failures.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-high-contrast.png",
        "evidence/home-lighthouse-summary.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "The CSS/runtime probe found no view-transition rules, while the representative journey spans listing, work, and episode pages.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/modern-css-probe.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon and observed product scope",
      "evidence": "No scroll-linked visual effect was observed, so there is no scroll-handler implementation to judge.",
      "reason": "No scroll-linked visual effect was observed, so there is no scroll-handler implementation to judge."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "The observed carousel exposes conventional previous/next controls and the reading surface uses native scrolling rather than custom pointer handlers.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/work-desktop.png",
        "evidence/episode-desktop.png",
        "evidence/ui-probe.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "The episode is over 10,000 CSS px high, but CSS inspection found no scroll timeline or scroll-state rules and the reader screenshot has no progress indicator.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/episode-layout-mobile.json",
        "evidence/episode-desktop.png"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon and observed product scope",
      "evidence": "No tooltip or transient anchored overlay was present in the representative anonymous paths.",
      "reason": "No tooltip or transient anchored overlay was present in the representative anonymous paths."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "Explore and work screenshots show clear active tabs, section headings, and a marked current episode that preserve orientation.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/work-desktop.png",
        "evidence/episode-desktop.png",
        "evidence/ui-probe.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "All first-load screenshots show content immediately with no interstitial, consent wall, or viewport-obscuring popup.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/work-desktop.png",
        "evidence/episode-desktop.png",
        "evidence/ui-probe.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon and observed product scope",
      "evidence": "No modal or disclosure overlay appeared before interaction on the representative paths.",
      "reason": "No modal or disclosure overlay appeared before interaction on the representative paths."
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "The reading surface gives the majority of the desktop viewport to prose with restrained persistent reader controls.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/work-desktop.png",
        "evidence/episode-desktop.png",
        "evidence/ui-probe.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, DOM/focus probe, mobile screenshots, and mobile layout metrics",
      "evidence": "At 360 px, layout captures report 825 px overflow on home and explore, 640 px on work, and 380 px on the episode. Screenshots show clipped headings, navigation, controls, and content.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/explore-mobile.png",
        "evidence/work-mobile.png",
        "evidence/episode-mobile.png",
        "evidence/home-layout-mobile.json",
        "evidence/explore-layout-mobile.json",
        "evidence/work-layout-mobile.json",
        "evidence/episode-layout-mobile.json"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, DOM/focus probe, mobile screenshots, and mobile layout metrics",
      "evidence": "The CSS probe found no container queries and multiple templates retain wide desktop component geometry at 360 px.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/ui-probe.json",
        "evidence/work-mobile.png",
        "evidence/explore-mobile.png"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, DOM/focus probe, mobile screenshots, and mobile layout metrics",
      "evidence": "Lighthouse fails target-size and link-name audits; the carousel button probe shows two icon-only buttons without aria-label.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-lighthouse.json",
        "evidence/ui-probe.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "The home hero states write/read/share and exposes registration; work pages expose a prominent “read from episode 1” action.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/work-desktop.png",
        "evidence/episode-desktop.png",
        "evidence/ui-probe.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "The anonymous journey from home to work detail to episode completed without an account wall and the episode prose rendered.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/work-desktop.png",
        "evidence/episode-desktop.png",
        "evidence/ui-probe.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "The deliberate 404 displays a specific error explanation, search/discovery content, and links back to useful destinations.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/404-mobile.png",
        "evidence/404-probe.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace, HAR, layout metrics, and image audit",
      "evidence": "Lighthouse reports LCP 3.1 s, TBT 740 ms, interactive at 24.9 s, and a performance score of 0.72.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-lighthouse-summary.json",
        "evidence/home-trace-summary.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse, trace, HAR, layout metrics, and image audit",
      "evidence": "All five mobile layout captures report CLS 0; no observed layout shifts occurred during the capture window.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/work-desktop.png",
        "evidence/episode-desktop.png",
        "evidence/ui-probe.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace, HAR, layout metrics, and image audit",
      "evidence": "The trace records two long tasks up to 140 ms and 177 ms TBT; Lighthouse under throttling reports 740 ms TBT.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/home-lighthouse-summary.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace, HAR, layout metrics, and image audit",
      "evidence": "HAR records 139 requests, seven parser-inserted high-priority stylesheets, and major images without cache headers.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace, HAR, layout metrics, and image audit",
      "evidence": "Lighthouse estimates 519 KiB unused JavaScript; HAR attributes 1.30 MB and 85 requests to third parties.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-lighthouse.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, DOM/focus probe, mobile screenshots, and mobile layout metrics",
      "evidence": "Lighthouse fails image-alt, frame-title, link-name, and label-content-name-mismatch; its accessibility score is 0.72.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-lighthouse.json",
        "evidence/work-images.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, DOM/focus probe, mobile screenshots, and mobile layout metrics",
      "evidence": "Lighthouse’s axe-backed color-contrast audit fails on the home page.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-lighthouse.json",
        "evidence/home-high-contrast.png"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, DOM/focus probe, mobile screenshots, and mobile layout metrics",
      "evidence": "Lighthouse fails landmark-one-main and link-name; DOM probing found zero main and zero nav elements, and only a 1 px dotted focus outline on the first link.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/ui-probe.json",
        "evidence/home-lighthouse.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, DOM/focus probe, mobile screenshots, and mobile layout metrics",
      "evidence": "Mobile screenshots clip long headings, tabs, metadata, and reader content because templates are 740 to 1,185 px wide.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/work-mobile.png",
        "evidence/episode-mobile.png"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, DOM/focus probe, mobile screenshots, and mobile layout metrics",
      "evidence": "Every inspected public page declares maximum-scale=1.0 and user-scalable=no; Lighthouse fails meta-viewport and target-size.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/metadata-probe.json",
        "evidence/home-lighthouse.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "issues",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "Lighthouse records a CORS failure, net::ERR_FAILED, and React hydration error #418 in the console.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/lighthouse-failure-details.txt"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "The work-page image audit finds 27 of 31 images without width/height and 11 oversized images.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/work-images.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "Lighthouse reports one deprecated API, three BFCache failure reasons, missing source maps for large first-party JavaScript, and inspector issues.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-lighthouse.json",
        "evidence/lighthouse-failure-details.txt"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Raw HTML discoverability, crawler screenshots, metadata/robots/manifest probes, and 404 exercise",
      "evidence": "Home and work probes show descriptive unique titles and meta descriptions.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-discoverability-crawler.png",
        "evidence/episode-discoverability-crawler.png",
        "evidence/metadata-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Raw HTML discoverability, crawler screenshots, metadata/robots/manifest probes, and 404 exercise",
      "evidence": "All 305 home anchors have hrefs, robots allows public content, and a viewport meta is present; mobile layout quality is recorded separately.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-discoverability-crawler.png",
        "evidence/episode-discoverability-crawler.png",
        "evidence/metadata-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Raw HTML discoverability, crawler screenshots, metadata/robots/manifest probes, and 404 exercise",
      "evidence": "The home metadata probe finds no canonical URL and /sitemap.xml returns 404, although robots permits crawling.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/metadata-probe.json"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Raw HTML discoverability, crawler screenshots, metadata/robots/manifest probes, and 404 exercise",
      "evidence": "The work page has Open Graph metadata but no JSON-LD, and the home probe also finds no structured-data scripts.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/work-recon.json",
        "evidence/metadata-probe.json"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, secrets, and HAR inspection",
      "evidence": "HTTPS is used, but CSP and HSTS are absent; 9 of 9 observed cookies are flagged insecure and several use SameSite=None.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-headers.json",
        "evidence/home-cookies.json"
      ],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, secrets, and HAR inspection",
      "evidence": "The tracker probe sees 35 third-party origins and 14 known trackers; HAR records 85 third-party requests and 1.30 MB transferred.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-trackers.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "high",
      "method": "Headers, cookies, trackers, secrets, and HAR inspection",
      "evidence": "No permission prompt appeared on load, and the login entry prominently offers passkey authentication.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/work-desktop.png",
        "evidence/episode-desktop.png",
        "evidence/ui-probe.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, secrets, and HAR inspection",
      "evidence": "Headers lack CSP, HSTS, Referrer-Policy, and Permissions-Policy, while clickjacking and nosniff protections are present.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-headers.json"
      ],
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Raw HTML discoverability, crawler screenshots, metadata/robots/manifest probes, and 404 exercise",
      "evidence": "Crawler screenshots render the home and episode content without JavaScript; the episode title and prose remain visible.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-discoverability-crawler.png",
        "evidence/episode-discoverability-crawler.png",
        "evidence/metadata-probe.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "issues",
      "confidence": "high",
      "method": "Raw HTML discoverability, crawler screenshots, metadata/robots/manifest probes, and 404 exercise",
      "evidence": "Menus and content extend hundreds of pixels beyond the mobile viewport on four public templates.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/explore-layout-mobile.json",
        "evidence/work-layout-mobile.json",
        "evidence/episode-layout-mobile.json"
      ],
      "findingIds": [
        "F25"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon and observed product scope",
      "evidence": "This public publishing/content site supplies a browser manifest but is not presented as an installable offline application; offline installation is contextual.",
      "reason": "This public publishing/content site supplies a browser manifest but is not presented as an installable offline application; offline installation is contextual."
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Raw HTML discoverability, crawler screenshots, metadata/robots/manifest probes, and 404 exercise",
      "evidence": "A deliberate invalid route renders an explanatory, actionable 404 with discovery and top-page recovery links.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/404-mobile.png",
        "evidence/404-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon and observed product scope",
      "evidence": "The audited service and corpus are deliberately Japanese-language and left-to-right; multi-language layout was not part of the observed product scope.",
      "reason": "The audited service and corpus are deliberately Japanese-language and left-to-right; multi-language layout was not part of the observed product scope."
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon and observed product scope",
      "evidence": "The audited public paths are deliberately Japanese-locale and expose no locale-switching or user-entered locale-sensitive data.",
      "reason": "The audited public paths are deliberately Japanese-locale and expose no locale-switching or user-entered locale-sensitive data."
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon and observed product scope",
      "evidence": "The representative reading paths show publication dates rather than cross-zone scheduling or recurring-event functionality.",
      "reason": "The representative reading paths show publication dates rather than cross-zone scheduling or recurring-event functionality."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "No consent wall, confirmshaming, disguised action, forced continuity, or surprise commitment appeared in the anonymous paths.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/work-desktop.png",
        "evidence/episode-desktop.png",
        "evidence/ui-probe.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon and observed product scope",
      "evidence": "The inspected login entry uses identity-provider and passkey actions with no editable form or validation state to exercise.",
      "reason": "The inspected login entry uses identity-provider and passkey actions with no editable form or validation state to exercise."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon and observed product scope",
      "evidence": "No editable input appears until a user selects a separate email-auth path, which was outside the anonymous entry-flow coverage.",
      "reason": "No editable input appears until a user selects a separate email-auth path, which was outside the anonymous entry-flow coverage."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon and observed product scope",
      "evidence": "No checkout, subscription, cancellation, or authenticated account-management flow was available in anonymous scope.",
      "reason": "No checkout, subscription, cancellation, or authenticated account-management flow was available in anonymous scope."
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "The image audit flags 11 oversized work-page images; HAR’s largest image is 483 KB and major images lack cache headers.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/work-images.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F26"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "HAR logs 34 fetch/XHR requests, many ad-auction and conversion calls, and 85 third-party requests on an anonymous landing page.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trackers.json"
      ],
      "findingIds": [
        "F27"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Representative-path screenshot, DOM, CSS, and runtime probes",
      "evidence": "Of 3.24 MB transferred, 1.30 MB is third-party; Google Tag Manager and Facebook alone transfer about 924 KB.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F28"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon and observed product scope",
      "evidence": "Agent-facing capabilities are emerging and no explicit agent transaction intent was declared for this public reading site.",
      "reason": "Agent-facing capabilities are emerging and no explicit agent transaction intent was declared for this public reading site."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-path recon and observed product scope",
      "evidence": "On-device inference is an optional emerging enhancement and is not required for the core read/discover journey.",
      "reason": "On-device inference is an optional emerging enhancement and is not required for the core read/discover journey."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "Baseline and post-interaction heap summaries with 10 repeated carousel cycles",
      "evidence": "After 10 next/previous carousel cycles, heap self size was 50.2 MB versus 48.4 MB baseline, a bounded 3.8% difference across fresh captures with no runaway signal.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-heap-baseline.json",
        "evidence/home-heap-post.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "issues",
      "confidence": "high",
      "method": "Baseline and post-interaction heap summaries with 10 repeated carousel cycles",
      "evidence": "The baseline heap summary contains 869,025 nodes and 48.4 MB self size before extended interaction.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-heap-baseline.json"
      ],
      "findingIds": [
        "F29"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Baseline and post-interaction heap summaries with 10 repeated carousel cycles",
      "evidence": "Heap summaries contain no Detached constructor among top populations, and repeated carousel cycling did not show unbounded retained growth.",
      "pathIds": [
        "home",
        "explore",
        "work",
        "episode",
        "auth",
        "error404"
      ],
      "artifacts": [
        "evidence/home-heap-baseline.json",
        "evidence/home-heap-post.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01",
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05",
        "F06",
        "F07"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F08",
        "F09",
        "F10",
        "F11"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F12",
        "F13",
        "F14",
        "F15",
        "F16"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F17",
        "F18",
        "F19"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F20",
        "F21"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F22",
        "F23",
        "F24"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F25"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "The audited service and corpus are deliberately Japanese-language and left-to-right; multi-language layout was not part of the observed product scope. The audited public paths are deliberately Japanese-locale and expose no locale-switching or user-entered locale-sensitive data. The representative reading paths show publication dates rather than cross-zone scheduling or recurring-event functionality."
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "pass",
      "findingIds": []
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F26",
        "F27",
        "F28"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "Agent-facing capabilities are emerging and no explicit agent transaction intent was declared for this public reading site. On-device inference is an optional emerging enhancement and is not required for the core read/discover journey."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F29"
      ]
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Entry page and content-discovery hub; covers global navigation, hero, rankings, performance, privacy, and responsive behavior.",
      "url": "https://kakuyomu.jp/",
      "conditions": [
        "1440x1000",
        "360x800",
        "dark",
        "reduced motion",
        "high contrast",
        "no JavaScript"
      ],
      "result": "issues"
    },
    {
      "id": "explore",
      "description": "Novel discovery/search archetype; covers taxonomy navigation and mobile browsing.",
      "url": "https://kakuyomu.jp/explore",
      "conditions": [
        "1440x1000",
        "360x800"
      ],
      "result": "issues"
    },
    {
      "id": "work",
      "description": "Representative work-detail archetype; covers metadata, calls to read, episode list, and images.",
      "url": "https://kakuyomu.jp/works/1177354054882739112",
      "conditions": [
        "1440x1000",
        "360x800"
      ],
      "result": "issues"
    },
    {
      "id": "episode",
      "description": "Primary reading journey and long-form reader archetype; covers prose, reader chrome, no-JS content, and long-page behavior.",
      "url": "https://kakuyomu.jp/works/1177354054882739112/episodes/1177354054882739226",
      "conditions": [
        "1440x1000",
        "360x800",
        "dark",
        "no JavaScript"
      ],
      "result": "issues"
    },
    {
      "id": "auth",
      "description": "Anonymous login/signup entry; covers authentication options and passkey availability without creating an account.",
      "url": "https://kakuyomu.jp/auth/login?location=%2F",
      "conditions": [
        "1440x1000",
        "360x800"
      ],
      "result": "pass"
    },
    {
      "id": "error404",
      "description": "Deliberate invalid route; covers HTTP failure messaging and recovery.",
      "url": "https://kakuyomu.jp/definitely-not-a-real-route-web-uplift",
      "conditions": [
        "360x800"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "confidence": "high",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "web-quality",
      "summary": "The site ignores the user’s dark color-scheme preference.",
      "evidence": "Dark-emulated screenshots of both the home and reading surfaces remain white, and computed color-scheme is normal.",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/episode-dark.png"
      ],
      "suggestedFix": "Declare color-scheme and provide preference-driven dark surface, text, border, and control tokens.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F02",
      "severity": "medium",
      "confidence": "high",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "High-contrast preferences are not comprehensively supported.",
      "evidence": "The prefers-contrast screenshot is effectively unchanged, while Lighthouse reports color-contrast failures.",
      "artifacts": [
        "evidence/home-high-contrast.png",
        "evidence/home-lighthouse-summary.json"
      ],
      "suggestedFix": "Add prefers-contrast and forced-colors treatments, and fix baseline WCAG contrast failures.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F03",
      "severity": "low",
      "confidence": "high",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "web-quality",
      "summary": "Route and state changes do not expose declarative view transitions.",
      "evidence": "The CSS/runtime probe found no view-transition rules, while the representative journey spans listing, work, and episode pages.",
      "artifacts": [
        "evidence/modern-css-probe.json"
      ],
      "suggestedFix": "Add progressive-enhancement View Transitions for route and reader state changes, while respecting reduced motion.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F04",
      "severity": "low",
      "confidence": "high",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "scroll-progress-indicator",
      "guidanceCategory": "web-quality",
      "summary": "Long reading and listing pages provide no scroll-state-aware progress cue.",
      "evidence": "The episode is over 10,000 CSS px high, but CSS inspection found no scroll timeline or scroll-state rules and the reader screenshot has no progress indicator.",
      "artifacts": [
        "evidence/episode-layout-mobile.json",
        "evidence/episode-desktop.png"
      ],
      "suggestedFix": "Add a lightweight declarative reading-progress indicator or scroll-state-aware reader chrome.",
      "pathId": "episode",
      "url": "https://kakuyomu.jp/works/1177354054882739112/episodes/1177354054882739226",
      "effort": "medium"
    },
    {
      "id": "F05",
      "severity": "critical",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "responsive-no-horizontal-scroll",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "web-quality",
      "summary": "Core public templates render desktop-width layouts on mobile.",
      "evidence": "At 360 px, layout captures report 825 px overflow on home and explore, 640 px on work, and 380 px on the episode. Screenshots show clipped headings, navigation, controls, and content.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/explore-mobile.png",
        "evidence/work-mobile.png",
        "evidence/episode-mobile.png",
        "evidence/home-layout-mobile.json",
        "evidence/explore-layout-mobile.json",
        "evidence/work-layout-mobile.json",
        "evidence/episode-layout-mobile.json"
      ],
      "suggestedFix": "Replace fixed minimum widths with intrinsic responsive layouts; keep every template within the visual viewport.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "large"
    },
    {
      "id": "F06",
      "severity": "medium",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "web-quality",
      "summary": "Components do not adapt at their reuse boundary.",
      "evidence": "The CSS probe found no container queries and multiple templates retain wide desktop component geometry at 360 px.",
      "artifacts": [
        "evidence/ui-probe.json",
        "evidence/work-mobile.png",
        "evidence/explore-mobile.png"
      ],
      "suggestedFix": "Define containment for reusable cards, grids, and reader chrome, then adapt them with size container queries.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F07",
      "severity": "high",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Some controls have inaccessible names or undersized touch targets.",
      "evidence": "Lighthouse fails target-size and link-name audits; the carousel button probe shows two icon-only buttons without aria-label.",
      "artifacts": [
        "evidence/home-lighthouse.json",
        "evidence/ui-probe.json"
      ],
      "suggestedFix": "Give icon controls accessible names, provide at least 44 by 44 CSS px targets with spacing, and retain visible focus styles.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F08",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "web-quality",
      "summary": "Mobile load responsiveness misses the performance baseline.",
      "evidence": "Lighthouse reports LCP 3.1 s, TBT 740 ms, interactive at 24.9 s, and a performance score of 0.72.",
      "artifacts": [
        "evidence/home-lighthouse-summary.json",
        "evidence/home-trace-summary.json"
      ],
      "suggestedFix": "Prioritise the LCP resource, reduce startup JavaScript, and schedule non-critical work after the core content is usable.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F09",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-main-thread",
      "guidanceId": "break-up-long-tasks",
      "guidanceCategory": "web-quality",
      "summary": "Long JavaScript tasks block the main thread.",
      "evidence": "The trace records two long tasks up to 140 ms and 177 ms TBT; Lighthouse under throttling reports 740 ms TBT.",
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/home-lighthouse-summary.json"
      ],
      "suggestedFix": "Break up long tasks, defer analytics and advertising work, and use task priorities for non-user-blocking work.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F10",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-preload-priority",
      "guidanceCategory": "web-quality",
      "summary": "The critical delivery path is fragmented and cache hygiene is weak.",
      "evidence": "HAR records 139 requests, seven parser-inserted high-priority stylesheets, and major images without cache headers.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "suggestedFix": "Consolidate critical CSS, confirm script defer semantics, and set durable immutable caching on versioned assets.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F11",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "web-quality",
      "summary": "The page ships substantial unused JavaScript and third-party code.",
      "evidence": "Lighthouse estimates 519 KiB unused JavaScript; HAR attributes 1.30 MB and 85 requests to third parties.",
      "artifacts": [
        "evidence/home-lighthouse.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Remove duplicate tags, load analytics and ad code conditionally, and split non-critical application code.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F12",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Several images, frames, and links lack accessible names.",
      "evidence": "Lighthouse fails image-alt, frame-title, link-name, and label-content-name-mismatch; its accessibility score is 0.72.",
      "artifacts": [
        "evidence/home-lighthouse.json",
        "evidence/work-images.json"
      ],
      "suggestedFix": "Provide meaningful alt text, title embedded frames, and ensure every focusable link/control has a matching accessible name.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F13",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Text does not consistently meet WCAG contrast minimums.",
      "evidence": "Lighthouse’s axe-backed color-contrast audit fails on the home page.",
      "artifacts": [
        "evidence/home-lighthouse.json",
        "evidence/home-high-contrast.png"
      ],
      "suggestedFix": "Adjust foreground/background tokens to meet WCAG AA in normal and high-contrast conditions.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F14",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "The home page lacks a main landmark and has weak control semantics.",
      "evidence": "Lighthouse fails landmark-one-main and link-name; DOM probing found zero main and zero nav elements, and only a 1 px dotted focus outline on the first link.",
      "artifacts": [
        "evidence/ui-probe.json",
        "evidence/home-lighthouse.json"
      ],
      "suggestedFix": "Use main/nav landmarks, repair names, and provide a clearly visible focus-visible indicator in logical reading order.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F15",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "legible-text",
      "guidanceId": "improve-text-layout-and-legibility",
      "guidanceCategory": "web-quality",
      "summary": "Mobile clipping makes text difficult or impossible to read.",
      "evidence": "Mobile screenshots clip long headings, tabs, metadata, and reader content because templates are 740 to 1,185 px wide.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/work-mobile.png",
        "evidence/episode-mobile.png"
      ],
      "suggestedFix": "Reflow prose and headings within the viewport using fluid measure, wrapping, and responsive typography.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F16",
      "severity": "critical",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "The viewport explicitly disables user zoom.",
      "evidence": "Every inspected public page declares maximum-scale=1.0 and user-scalable=no; Lighthouse fails meta-viewport and target-size.",
      "artifacts": [
        "evidence/metadata-probe.json",
        "evidence/home-lighthouse.json"
      ],
      "suggestedFix": "Remove maximum-scale and user-scalable restrictions, then verify 200% and 400% reflow and target spacing.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F17",
      "severity": "medium",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "no-console-errors",
      "guidanceId": "html",
      "guidanceCategory": "web-quality",
      "summary": "Production load emits browser and React errors.",
      "evidence": "Lighthouse records a CORS failure, net::ERR_FAILED, and React hydration error #418 in the console.",
      "artifacts": [
        "evidence/lighthouse-failure-details.txt"
      ],
      "suggestedFix": "Fix the hydration mismatch and third-party CORS integration; prevent expected network failures from surfacing as application errors.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F18",
      "severity": "medium",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "web-quality",
      "summary": "Image markup does not reserve dimensions consistently.",
      "evidence": "The work-page image audit finds 27 of 31 images without width/height and 11 oversized images.",
      "artifacts": [
        "evidence/work-images.json"
      ],
      "suggestedFix": "Emit intrinsic width/height or aspect-ratio and request image widths close to rendered sizes.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F19",
      "severity": "medium",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "guidanceCategory": "web-quality",
      "summary": "The page has deprecations, BFCache blockers, and missing source maps.",
      "evidence": "Lighthouse reports one deprecated API, three BFCache failure reasons, missing source maps for large first-party JavaScript, and inspector issues.",
      "artifacts": [
        "evidence/home-lighthouse.json",
        "evidence/lighthouse-failure-details.txt"
      ],
      "suggestedFix": "Remove deprecated API use and unload-style BFCache blockers, and publish correct production source maps.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F20",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "guidanceCategory": "web-quality",
      "summary": "Indexing signals are incomplete.",
      "evidence": "The home metadata probe finds no canonical URL and /sitemap.xml returns 404, although robots permits crawling.",
      "artifacts": [
        "evidence/metadata-probe.json"
      ],
      "suggestedFix": "Publish canonical links on indexable templates and a sitemap referenced from robots.txt.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F21",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "guidanceCategory": "web-quality",
      "summary": "Content pages provide social metadata but no structured entity data.",
      "evidence": "The work page has Open Graph metadata but no JSON-LD, and the home probe also finds no structured-data scripts.",
      "artifacts": [
        "evidence/work-recon.json",
        "evidence/metadata-probe.json"
      ],
      "suggestedFix": "Add schema.org JSON-LD for WebSite and CreativeWork/Book-style entities that matches visible content.",
      "pathId": "work",
      "url": "https://kakuyomu.jp/works/1177354054882739112",
      "effort": "medium"
    },
    {
      "id": "F22",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security-and-privacy",
      "summary": "Transport policy and cookie attributes are unsafe by default.",
      "evidence": "HTTPS is used, but CSP and HSTS are absent; 9 of 9 observed cookies are flagged insecure and several use SameSite=None.",
      "artifacts": [
        "evidence/home-headers.json",
        "evidence/home-cookies.json"
      ],
      "suggestedFix": "Deploy an enforcing CSP and HSTS, then mark all HTTPS cookies Secure and use the narrowest SameSite policy.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F23",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "security-and-privacy",
      "summary": "The anonymous home page has a large tracking footprint.",
      "evidence": "The tracker probe sees 35 third-party origins and 14 known trackers; HAR records 85 third-party requests and 1.30 MB transferred.",
      "artifacts": [
        "evidence/home-trackers.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Reduce vendors, gate non-essential tracking on consent, minimise event payloads, and batch necessary analytics.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F24",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security-and-privacy",
      "summary": "Several browser-enforced defenses are missing.",
      "evidence": "Headers lack CSP, HSTS, Referrer-Policy, and Permissions-Policy, while clickjacking and nosniff protections are present.",
      "artifacts": [
        "evidence/home-headers.json"
      ],
      "suggestedFix": "Add strict Referrer-Policy and Permissions-Policy alongside CSP/HSTS; consider Trusted Types for the React surface.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F25",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-resilient",
      "principleCheckId": "resilient-runtime-behaviour",
      "guidanceId": "css",
      "guidanceCategory": "web-quality",
      "summary": "Runtime layout is not robust at narrow viewport edges.",
      "evidence": "Menus and content extend hundreds of pixels beyond the mobile viewport on four public templates.",
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/explore-layout-mobile.json",
        "evidence/work-layout-mobile.json",
        "evidence/episode-layout-mobile.json"
      ],
      "suggestedFix": "Use intrinsic responsive layout and edge-aware overlay positioning so content and controls remain reachable.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F26",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "guidanceCategory": "web-quality",
      "summary": "Several assets are oversized or lack efficient delivery metadata.",
      "evidence": "The image audit flags 11 oversized work-page images; HAR’s largest image is 483 KB and major images lack cache headers.",
      "artifacts": [
        "evidence/work-images.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Serve resolution-appropriate modern images, preserve responsive sources, and cache immutable assets.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F27",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "web-quality",
      "summary": "Background advertising and analytics create disproportionate work.",
      "evidence": "HAR logs 34 fetch/XHR requests, many ad-auction and conversion calls, and 85 third-party requests on an anonymous landing page.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trackers.json"
      ],
      "suggestedFix": "Deprioritise and conditionally load background fetches, consolidate analytics, and remove redundant vendors.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F28",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "efficient-background-processing",
      "guidanceCategory": "web-quality",
      "summary": "Third-party scripts dominate the page budget.",
      "evidence": "Of 3.24 MB transferred, 1.30 MB is third-party; Google Tag Manager and Facebook alone transfer about 924 KB.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "suggestedFix": "Set a third-party byte/request budget and delay non-essential vendors until user intent or consent.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    },
    {
      "id": "F29",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-memory-efficient",
      "principleCheckId": "bounded-footprint",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "web-quality",
      "summary": "The initial memory footprint is heavy for a content landing page.",
      "evidence": "The baseline heap summary contains 869,025 nodes and 48.4 MB self size before extended interaction.",
      "artifacts": [
        "evidence/home-heap-baseline.json"
      ],
      "suggestedFix": "Profile constructor and DOM populations, remove duplicate vendor runtimes, and lazy-create below-fold components.",
      "pathId": "home",
      "url": "https://kakuyomu.jp/",
      "effort": "medium"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Replace fixed minimum widths with intrinsic responsive layouts; keep every template within the visual viewport.",
      "priority": 1,
      "findingIds": [
        "F05"
      ],
      "guidanceId": "fluid-scaling",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Remove maximum-scale and user-scalable restrictions, then verify 200% and 400% reflow and target spacing.",
      "priority": 2,
      "findingIds": [
        "F16"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Deploy an enforcing CSP and HSTS, then mark all HTTPS cookies Secure and use the narrowest SameSite policy.",
      "priority": 3,
      "findingIds": [
        "F22"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Reduce vendors, gate non-essential tracking on consent, minimise event payloads, and batch necessary analytics.",
      "priority": 4,
      "findingIds": [
        "F23"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Prioritise the LCP resource, reduce startup JavaScript, and schedule non-critical work after the core content is usable.",
      "priority": 5,
      "findingIds": [
        "F08"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Break up long tasks, defer analytics and advertising work, and use task priorities for non-user-blocking work.",
      "priority": 6,
      "findingIds": [
        "F09"
      ],
      "guidanceId": "break-up-long-tasks",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Remove duplicate tags, load analytics and ad code conditionally, and split non-critical application code.",
      "priority": 7,
      "findingIds": [
        "F11"
      ],
      "guidanceId": "identify-heavy-scripts",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Provide meaningful alt text, title embedded frames, and ensure every focusable link/control has a matching accessible name.",
      "priority": 8,
      "findingIds": [
        "F12"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Adjust foreground/background tokens to meet WCAG AA in normal and high-contrast conditions.",
      "priority": 9,
      "findingIds": [
        "F13"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Use main/nav landmarks, repair names, and provide a clearly visible focus-visible indicator in logical reading order.",
      "priority": 10,
      "findingIds": [
        "F14"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T11",
      "title": "Reflow prose and headings within the viewport using fluid measure, wrapping, and responsive typography.",
      "priority": 11,
      "findingIds": [
        "F15"
      ],
      "guidanceId": "improve-text-layout-and-legibility",
      "status": "open"
    },
    {
      "id": "T12",
      "title": "Add strict Referrer-Policy and Permissions-Policy alongside CSP/HSTS; consider Trusted Types for the React surface.",
      "priority": 12,
      "findingIds": [
        "F24"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T13",
      "title": "Use intrinsic responsive layout and edge-aware overlay positioning so content and controls remain reachable.",
      "priority": 13,
      "findingIds": [
        "F25"
      ],
      "guidanceId": "css",
      "status": "open"
    },
    {
      "id": "T14",
      "title": "Deprioritise and conditionally load background fetches, consolidate analytics, and remove redundant vendors.",
      "priority": 14,
      "findingIds": [
        "F27"
      ],
      "guidanceId": "deprioritize-background-fetches",
      "status": "open"
    },
    {
      "id": "T15",
      "title": "Set a third-party byte/request budget and delay non-essential vendors until user intent or consent.",
      "priority": 15,
      "findingIds": [
        "F28"
      ],
      "guidanceId": "efficient-background-processing",
      "status": "open"
    },
    {
      "id": "T16",
      "title": "Give icon controls accessible names, provide at least 44 by 44 CSS px targets with spacing, and retain visible focus styles.",
      "priority": 16,
      "findingIds": [
        "F07"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T17",
      "title": "Declare color-scheme and provide preference-driven dark surface, text, border, and control tokens.",
      "priority": 17,
      "findingIds": [
        "F01"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T18",
      "title": "Add prefers-contrast and forced-colors treatments, and fix baseline WCAG contrast failures.",
      "priority": 18,
      "findingIds": [
        "F02"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T19",
      "title": "Define containment for reusable cards, grids, and reader chrome, then adapt them with size container queries.",
      "priority": 19,
      "findingIds": [
        "F06"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    },
    {
      "id": "T20",
      "title": "Consolidate critical CSS, confirm script defer semantics, and set durable immutable caching on versioned assets.",
      "priority": 20,
      "findingIds": [
        "F10"
      ],
      "guidanceId": "optimize-preload-priority",
      "status": "open"
    },
    {
      "id": "T21",
      "title": "Fix the hydration mismatch and third-party CORS integration; prevent expected network failures from surfacing as application errors.",
      "priority": 21,
      "findingIds": [
        "F17"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T22",
      "title": "Emit intrinsic width/height or aspect-ratio and request image widths close to rendered sizes.",
      "priority": 22,
      "findingIds": [
        "F18"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T23",
      "title": "Remove deprecated API use and unload-style BFCache blockers, and publish correct production source maps.",
      "priority": 23,
      "findingIds": [
        "F19"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T24",
      "title": "Publish canonical links on indexable templates and a sitemap referenced from robots.txt.",
      "priority": 24,
      "findingIds": [
        "F20"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T25",
      "title": "Add schema.org JSON-LD for WebSite and CreativeWork/Book-style entities that matches visible content.",
      "priority": 25,
      "findingIds": [
        "F21"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T26",
      "title": "Serve resolution-appropriate modern images, preserve responsive sources, and cache immutable assets.",
      "priority": 26,
      "findingIds": [
        "F26"
      ],
      "guidanceId": "deliver-optimized-decorative-images",
      "status": "open"
    },
    {
      "id": "T27",
      "title": "Profile constructor and DOM populations, remove duplicate vendor runtimes, and lazy-create below-fold components.",
      "priority": 27,
      "findingIds": [
        "F29"
      ],
      "guidanceId": "identify-heavy-scripts",
      "status": "open"
    },
    {
      "id": "T28",
      "title": "Add progressive-enhancement View Transitions for route and reader state changes, while respecting reduced motion.",
      "priority": 28,
      "findingIds": [
        "F03"
      ],
      "guidanceId": "same-document-transitions",
      "status": "open"
    },
    {
      "id": "T29",
      "title": "Add a lightweight declarative reading-progress indicator or scroll-state-aware reader chrome.",
      "priority": 29,
      "findingIds": [
        "F04"
      ],
      "guidanceId": "scroll-progress-indicator",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 6,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-22T09-30-35-490Z"
}
