{
  "url": "https://www.bilibili.com",
  "auditedAt": "2026-07-21T15:48:56.890Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Atomic coverage complete across 58 checks and six representative paths.",
  "page": {
    "appType": "hybrid",
    "framework": "Vue-like custom elements/components across server shell and hydrated routes",
    "notes": "Public Chinese video platform. Distinct homepage, listing, search, video, login and recovery surfaces were sampled. Live streams, upload, checkout, subscription cancellation and authenticated account settings were not covered because they require credentials or represent separate products."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "discoverability",
    "trace",
    "har",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "lighthouse",
    "curl robots/sitemap",
    "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/home-desktop.png",
      "caption": "home desktop.png",
      "findingIds": [
        "F04",
        "F05",
        "F06",
        "F08"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom.json",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile.png",
      "findingIds": [
        "F08",
        "F09",
        "F10",
        "F29"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout.json",
      "findingIds": [
        "F09",
        "F10",
        "F13",
        "F23"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark.png",
      "findingIds": [
        "F01",
        "F02"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-high-contrast.png",
      "caption": "home high contrast.png",
      "findingIds": [
        "F01",
        "F02"
      ]
    },
    {
      "type": "other",
      "path": "evidence/preferences-probe.json",
      "caption": "preferences probe.json",
      "findingIds": [
        "F01",
        "F02"
      ]
    },
    {
      "type": "other",
      "path": "evidence/default-motion.json",
      "caption": "default motion.json",
      "findingIds": [
        "F01",
        "F02"
      ]
    },
    {
      "type": "other",
      "path": "evidence/accessibility-structure.json",
      "caption": "accessibility structure.json",
      "findingIds": [
        "F11",
        "F17",
        "F19",
        "F20"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-summary.json",
      "caption": "lighthouse summary.json",
      "findingIds": [
        "F02",
        "F12",
        "F14",
        "F15",
        "F16",
        "F17",
        "F18",
        "F19",
        "F20",
        "F22"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary.json",
      "findingIds": [
        "F12",
        "F14"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-layout.json",
      "caption": "home layout.json",
      "findingIds": []
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home.har",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-summary.json",
      "caption": "home summary.json",
      "findingIds": [
        "F15",
        "F16",
        "F25",
        "F37",
        "F38"
      ]
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers.json",
      "findingIds": [
        "F24",
        "F27"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies.json",
      "findingIds": [
        "F24"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets.json",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-rendered.png",
      "caption": "discoverability rendered.png",
      "findingIds": [
        "F28"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-crawler.png",
      "caption": "discoverability crawler.png",
      "findingIds": [
        "F28"
      ]
    },
    {
      "type": "other",
      "path": "evidence/platform-probe.json",
      "caption": "platform probe.json",
      "findingIds": [
        "F07",
        "F21",
        "F30"
      ]
    },
    {
      "type": "other",
      "path": "evidence/robots.txt",
      "caption": "robots.txt",
      "findingIds": [
        "F23"
      ]
    },
    {
      "type": "other",
      "path": "evidence/sitemap.xml",
      "caption": "sitemap.xml",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/popular.png",
      "caption": "popular.png",
      "findingIds": [
        "F03"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/video.png",
      "caption": "video.png",
      "findingIds": [
        "F03"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/search.png",
      "caption": "search.png",
      "findingIds": [
        "F03"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/login.png",
      "caption": "login.png",
      "findingIds": [
        "F03",
        "F26",
        "F35"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "heap baseline.heapsnapshot",
      "findingIds": [
        "F39"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-post.heapsnapshot",
      "caption": "heap post.heapsnapshot",
      "findingIds": [
        "F39"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "images.json",
      "findingIds": [
        "F17",
        "F21",
        "F36"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/not-found.png",
      "caption": "not found.png",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/not-found-probe.json",
      "caption": "not found probe.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/overlay-probe.json",
      "caption": "overlay probe.json",
      "findingIds": [
        "F05",
        "F06",
        "F07",
        "F29"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/popular-dom.json",
      "caption": "popular dom.json",
      "findingIds": [
        "F10"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/search-dom.json",
      "caption": "search dom.json",
      "findingIds": [
        "F10"
      ]
    },
    {
      "type": "other",
      "path": "evidence/script-placement.json",
      "caption": "script placement.json",
      "findingIds": [
        "F15"
      ]
    },
    {
      "type": "other",
      "path": "evidence/video-probe.json",
      "caption": "video probe.json",
      "findingIds": [
        "F20",
        "F32",
        "F38"
      ]
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "recon.json",
      "findingIds": [
        "F23",
        "F28",
        "F31"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers.json",
      "findingIds": [
        "F25",
        "F37"
      ]
    },
    {
      "type": "other",
      "path": "evidence/login-probe.json",
      "caption": "login probe.json",
      "findingIds": [
        "F26",
        "F31",
        "F34",
        "F35"
      ]
    },
    {
      "type": "other",
      "path": "evidence/login-validation.json",
      "caption": "login validation.json",
      "findingIds": [
        "F33",
        "F34"
      ]
    }
  ],
  "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 browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Under emulated prefers-color-scheme: dark, the probe reports color-scheme: normal, body background rgb(241,242,243), dark media matched, and no theme media rules; the dark screenshot remains light.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-high-contrast.png",
        "evidence/preferences-probe.json",
        "evidence/default-motion.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "Default and reduced-motion probes both observed zero active animations, so no non-essential motion or auto-advance was present in the tested initial state.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "The high-contrast screenshot is visually unchanged, no prefers-contrast/forced-colors rules were found, and Lighthouse measured 2.75:1 on pink primary controls.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-high-contrast.png",
        "evidence/preferences-probe.json",
        "evidence/default-motion.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "DOM/CSS inspection across homepage, listing, search and detail found no view-transition declarations or API use despite route, carousel and disclosure state changes.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/popular.png",
        "evidence/video.png",
        "evidence/search.png",
        "evidence/login.png"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "DOM/CSS inspection found no scroll-linked animation feature to implement; scrolling is native and trace evidence did not expose a scroll-animation handler.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "Popular/search CSS includes overscroll-behavior and tested feed traversal used native scrolling without a custom gesture blocker.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Homepage and listing inspection found fixed/static navigation but no scroll-state container query, progress marker, or scroll-position feedback on long feeds.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "The load-time login overlay is a role-less .v-popover absolutely positioned at 361×256; no native popover or CSS anchor declarations were found.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/overlay-probe.json",
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "Search tabs, active sorting controls, descriptive result titles, pagination, and video-detail hierarchy visibly preserve orientation across tested paths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "The initial homepage screenshot shows a 361×256 login promotion covering the first viewport before user interaction.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/overlay-probe.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "The visible .v-popover has no role; platform probe found 0 dialog, 0 [popover], and 0 details elements.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/overlay-probe.json",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "The homepage first viewport combines a full-width animated banner, two navigation rows, many category pills and an unsolicited login panel before the recommendation grid.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "At 360×800 the page has no viewport meta and Chrome lays it out at 1105 CSS px then scales it to 0.326; controls and text become tiny rather than reflowing.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "DOM/CSS inspection of home, popular and search card grids found no @container rules; the mobile capture retains the desktop card density.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json",
        "evidence/popular-dom.json",
        "evidence/search-dom.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Focus probing found links and inputs with outline none, two unlabeled 28×28 buttons, and many 24–28 px targets.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/accessibility-structure.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "Homepage visibly presents search and recommended videos; search presents query results; video detail presents title and player in the first viewport.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "A guest could search, open a result/detail and play the representative video, with a clearly disclosed 30-second guest preview rather than a dead end.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "Video shows playback time/login state, search shows populated results and pagination, and invalid route shows an explicit error with “return to previous page”.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Lighthouse measured LCP 17.6 s, FCP 3.5 s, TBT 350 ms and performance 0.55; trace corroborated four long tasks.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "The 360×800 layout observer recorded CLS 0.240, including shifts of 0.165 and 0.076 after about 5–6 seconds.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Trace recorded 4 long tasks, longest 94 ms and TBT 106 ms; Lighthouse measured 2.0 s main-thread work and 350 ms TBT.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "HAR found parser-blocking scripts without async/defer and Lighthouse estimated 1.37 s savings from render-blocking requests; 158 requests transferred 2.38 MB.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/script-placement.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Lighthouse estimated 303 KiB unused JS, 72 KiB unused CSS and 219 KiB unminified JS; HAR transferred 731 KiB of scripts.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Lighthouse failed link-name; probing found two unlabeled buttons, image-heavy links with empty text, and 36 images without alt.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/accessibility-structure.json",
        "evidence/images.json"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Lighthouse measured only 2.75:1 for white text on #ff6699 Download/Open App controls, below 4.5:1.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Homepage probe found no h1/h2, only h3 cards and a single main landmark; Lighthouse mobile found no main landmark, and all sampled focus outlines were none.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/accessibility-structure.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "Desktop home, listing, search, detail and login screenshots show readable Chinese text with stable card alignment at the tested desktop viewport.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Lighthouse found user-scalable=no/maximum-scale=1 on the mobile variant; the tested video had zero text tracks and many controls were 28 px.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/video-probe.json",
        "evidence/accessibility-structure.json"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "Lighthouse completed its console/exception audit without reporting a console-error or uncaught-exception failure.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Images audit found 26/58 missing dimensions, 39 oversized, 53 without srcset and 36 missing alt, despite a valid doctype and UTF-8 charset.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Lighthouse reported deprecated StorageType.persistent usage and 37 KiB legacy JavaScript savings.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "Homepage DOM reports a descriptive bilibili title and a non-empty Chinese meta description.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/discoverability-rendered.png",
        "evidence/discoverability-crawler.png",
        "evidence/platform-probe.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "The desktop homepage has no viewport meta; its mobile rendering is scaled from an 1105 px layout. Links are crawlable and robots permits the page, but the mobile requirement fails.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/recon.json",
        "evidence/robots.txt"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "Homepage returned 200, has canonical https://www.bilibili.com/, robots permits it, and sitemap index lists current content sitemaps.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/discoverability-rendered.png",
        "evidence/discoverability-crawler.png",
        "evidence/platform-probe.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "Representative video detail exposes JSON-LD, canonical URL and og:type/title/image/url matching its visible title and player.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/discoverability-rendered.png",
        "evidence/discoverability-crawler.png",
        "evidence/platform-probe.json",
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "HTTPS is used, but headers probe found no CSP, HSTS or nosniff; all 13 cookies lacked Secure and used SameSite=None.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "HAR classified 154/158 requests and 2.12 MB as cross-origin, including data.bilibili.com and cm.bilibili.com; tracker probe saw 10 cross-origin hosts.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F25"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Login probe exposed password, SMS, QR and social paths but no navigator.credentials use or passkey option. No permission prompt appeared on load.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/login.png"
      ],
      "findingIds": [
        "F26"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Headers probe found no HSTS, clickjacking defense, Referrer-Policy or Permissions-Policy, and no CSP/frame-ancestors.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F27"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Discoverability fetch found 0% rendered-word coverage in 1,374 bytes of raw HTML; title and description were absent from raw markup.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/discoverability-rendered.png",
        "evidence/discoverability-crawler.png",
        "evidence/recon.json"
      ],
      "findingIds": [
        "F28"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "The custom absolute login popover has no anchor fallback and the mobile page is a scaled desktop canvas, increasing clipping and positioning risk.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/overlay-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F29"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Platform probe found no manifest and no service-worker registration for this app-like video service.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F30"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "medium",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "Direct DOM, screenshot and interaction inspection across the representative paths found the expected outcome for “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.”.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Homepage declares lang=zh-CN, but the login document has empty lang and dir; no logical-property evidence was found in inspected login/home styles.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/login-probe.json"
      ],
      "findingIds": [
        "F31"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "Rendered Chinese compact counts, dates and durations are consistently localized across search/video for the declared zh-CN audience.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Video detail renders “2026-07-16 10:20:00” without a timezone or semantic time element, so global interpretation is ambiguous.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/video-probe.json"
      ],
      "findingIds": [
        "F32"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "Search labels sponsored content as 广告, login displays agreement/privacy terms, and no confirmshaming or hidden cancellation was observed in tested guest paths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "After an empty login submit, inputs had no required or aria-invalid state and no field-specific error appeared; focus remained on body.",
      "pathIds": [
        "login"
      ],
      "artifacts": [
        "evidence/login-validation.json"
      ],
      "findingIds": [
        "F33"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Account and password inputs report autocomplete=\"on\" rather than username/current-password and have no associated labels in a semantic form.",
      "pathIds": [
        "login"
      ],
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/login-validation.json"
      ],
      "findingIds": [
        "F34"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "The account page exposes password/SMS/QR/social options but no passkey authentication or reauthentication path.",
      "pathIds": [
        "login"
      ],
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/login.png"
      ],
      "findingIds": [
        "F35"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "Images probe found 39 oversized images, 53 without srcset, 26 without dimensions and only 32/58 in a detected modern format.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json"
      ],
      "findingIds": [
        "F36"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "The page issued 68 XHR/fetches and 158 requests total, with analytics/reporting hosts active before interaction.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F37"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "2.38 MB transferred on load, including 1.16 MB images; 2.12 MB was cross-origin and the video begins playback muted on its detail page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/video-probe.json"
      ],
      "findingIds": [
        "F38"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Contextual applicability judgement from site recon and platform probe.",
      "evidence": "No declared agent-facing surface or WebMCP contract is offered; this emerging contextual opportunity is outside the tested consumer video scope.",
      "reason": "No declared agent-facing surface or WebMCP contract is offered; this emerging contextual opportunity is outside the tested consumer video scope."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Contextual applicability judgement from site recon and platform probe.",
      "evidence": "No user task in the tested browsing, playback or login paths requires on-device inference; absence is not a failure for this contextual check.",
      "reason": "No user task in the tested browsing, playback or login paths requires on-device inference; absence is not a failure for this contextual check."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "issues",
      "confidence": "medium",
      "method": "Direct browser evidence and guidance-backed judgement across representative paths.",
      "evidence": "After 10 bottom/top feed traversals, heap summary grew from 376,116 nodes/23.7 MB to 736,095 nodes/38.8 MB, with closures 26,285→64,282. Lazy feed retention may explain part, so confidence is medium.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot"
      ],
      "findingIds": [
        "F39"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "Baseline heap is 23.7 MB with 376,116 nodes and runtime probe reports 15.4 MB used JS heap, proportionate to a media feed before repeated traversal.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Direct visual, DOM, runtime and/or network inspection on representative paths.",
      "evidence": "Heap summaries did not show Detached* among retained top constructors; the available comparison shows growth but no direct detached-DOM signature.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot"
      ]
    }
  ],
  "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",
        "F05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06",
        "F07",
        "F08"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F09",
        "F10",
        "F11"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F12",
        "F13",
        "F14",
        "F15",
        "F16"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F17",
        "F18",
        "F19",
        "F20"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F21",
        "F22"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F24",
        "F25",
        "F26",
        "F27"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F28",
        "F29",
        "F30"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F31",
        "F32"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F33",
        "F34",
        "F35"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F36",
        "F37",
        "F38"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "All checks were judged contextually not applicable to the tested consumer video experience."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F39"
      ]
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and recommendation feed, representing discovery and browsing.",
      "url": "https://www.bilibili.com/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "prefers-contrast: more",
        "keyboard focus"
      ],
      "result": "issues"
    },
    {
      "id": "popular",
      "description": "Popular listing, representing a dense ranked content index.",
      "url": "https://www.bilibili.com/v/popular/all",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "video",
      "description": "Video detail and playback, the primary content-consumption journey.",
      "url": "https://www.bilibili.com/video/BV14hKG6wEWZ",
      "conditions": [
        "guest playback"
      ],
      "result": "issues"
    },
    {
      "id": "search",
      "description": "Search results for “AI”, representing query, filtering, ads and pagination.",
      "url": "https://search.bilibili.com/all?keyword=AI",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "login",
      "description": "Account login, representing authentication and input assistance.",
      "url": "https://passport.bilibili.com/login",
      "conditions": [
        "empty submit"
      ],
      "result": "issues"
    },
    {
      "id": "not-found",
      "description": "Deliberately invalid route, representing HTTP/navigation recovery.",
      "url": "https://www.bilibili.com/this-route-should-not-exist-web-uplift",
      "conditions": [
        "invalid route"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "severity": "medium",
      "guidanceId": "dark-mode",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Dark preference is ignored",
      "evidence": "Under emulated prefers-color-scheme: dark, the probe reports color-scheme: normal, body background rgb(241,242,243), dark media matched, and no theme media rules; the dark screenshot remains light.",
      "suggestedFix": "Declare color-scheme: light dark and theme surfaces using prefers-color-scheme or light-dark().",
      "effort": "small",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-high-contrast.png",
        "evidence/preferences-probe.json",
        "evidence/default-motion.json"
      ]
    },
    {
      "id": "F02",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-contrast",
      "severity": "medium",
      "guidanceId": "adapt-scrollbar-to-contrast-preferences",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Low-contrast controls are not adapted",
      "evidence": "The high-contrast screenshot is visually unchanged, no prefers-contrast/forced-colors rules were found, and Lighthouse measured 2.75:1 on pink primary controls.",
      "suggestedFix": "Add forced-colors and prefers-contrast handling, preserving system colors and visible control boundaries.",
      "effort": "small",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-high-contrast.png",
        "evidence/preferences-probe.json",
        "evidence/default-motion.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F03",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "severity": "low",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "State changes use abrupt swaps",
      "evidence": "DOM/CSS inspection across homepage, listing, search and detail found no view-transition declarations or API use despite route, carousel and disclosure state changes.",
      "suggestedFix": "Progressively enhance meaningful route and state changes with View Transitions, respecting reduced motion.",
      "effort": "medium",
      "artifacts": [
        "evidence/popular.png",
        "evidence/video.png",
        "evidence/search.png",
        "evidence/login.png"
      ]
    },
    {
      "id": "F04",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "severity": "low",
      "guidanceId": "shrinking-header-on-scroll",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Navigation chrome does not react to scroll state",
      "evidence": "Homepage and listing inspection found fixed/static navigation but no scroll-state container query, progress marker, or scroll-position feedback on long feeds.",
      "suggestedFix": "Add proportionate scroll-state feedback such as a shrinking sticky header or progress affordance without obscuring content.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ]
    },
    {
      "id": "F05",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "anchored-positioning",
      "severity": "medium",
      "guidanceId": "position-aware-tooltips",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Large custom popovers lack semantic anchored positioning",
      "evidence": "The load-time login overlay is a role-less .v-popover absolutely positioned at 361×256; no native popover or CSS anchor declarations were found.",
      "suggestedFix": "Use popover with CSS anchor positioning and position-try fallbacks, plus an accessible trigger relationship.",
      "effort": "medium",
      "artifacts": [
        "evidence/overlay-probe.json",
        "evidence/home-desktop.png"
      ]
    },
    {
      "id": "F06",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "severity": "high",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Login promotion obscures content on load",
      "evidence": "The initial homepage screenshot shows a 361×256 login promotion covering the first viewport before user interaction.",
      "suggestedFix": "Do not open account promotion on load; keep login available in navigation and show dismissible prompts only after relevant intent.",
      "effort": "small",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/overlay-probe.json"
      ]
    },
    {
      "id": "F07",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "severity": "medium",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Overlays are ad-hoc divs",
      "evidence": "The visible .v-popover has no role; platform probe found 0 dialog, 0 [popover], and 0 details elements.",
      "suggestedFix": "Replace custom overlay containers with popover/dialog/details as appropriate and use declarative light dismiss.",
      "effort": "medium",
      "artifacts": [
        "evidence/overlay-probe.json",
        "evidence/platform-probe.json"
      ]
    },
    {
      "id": "F08",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "reduced-chrome",
      "severity": "medium",
      "guidanceId": "improve-text-layout-and-legibility",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Dense chrome competes with content",
      "evidence": "The homepage first viewport combines a full-width animated banner, two navigation rows, many category pills and an unsolicited login panel before the recommendation grid.",
      "suggestedFix": "Collapse secondary categories, remove the unsolicited panel, and reserve the first viewport for search and primary content.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ]
    },
    {
      "id": "F09",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "responsive-no-horizontal-scroll",
      "severity": "high",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Desktop layout is scaled down on mobile",
      "evidence": "At 360×800 the page has no viewport meta and Chrome lays it out at 1105 CSS px then scales it to 0.326; controls and text become tiny rather than reflowing.",
      "suggestedFix": "Add a standard viewport meta tag and implement intrinsic mobile reflow without fixed desktop minimum widths.",
      "effort": "large",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json"
      ]
    },
    {
      "id": "F10",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "severity": "medium",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Reusable cards do not adapt at component level",
      "evidence": "DOM/CSS inspection of home, popular and search card grids found no @container rules; the mobile capture retains the desktop card density.",
      "suggestedFix": "Give reusable grids/cards containment and size-aware container queries, with fluid intrinsic fallbacks.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json",
        "evidence/popular-dom.json",
        "evidence/search-dom.json"
      ]
    },
    {
      "id": "F11",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "severity": "high",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Keyboard focus and touch targets are inadequate",
      "evidence": "Focus probing found links and inputs with outline none, two unlabeled 28×28 buttons, and many 24–28 px targets.",
      "suggestedFix": "Restore strong :focus-visible indicators and enlarge compact controls to at least a comfortable 44 CSS px target or equivalent spacing.",
      "effort": "medium",
      "artifacts": [
        "evidence/accessibility-structure.json"
      ]
    },
    {
      "id": "F12",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "severity": "high",
      "guidanceId": "performance",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Mobile loading is slow",
      "evidence": "Lighthouse measured LCP 17.6 s, FCP 3.5 s, TBT 350 ms and performance 0.55; trace corroborated four long tasks.",
      "suggestedFix": "Prioritize the LCP asset, reduce redirects and critical work, and break up startup JavaScript.",
      "effort": "large",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "id": "F13",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "visual-stability",
      "severity": "high",
      "guidanceId": "visually-stable-font-fallbacks",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Mobile feed shifts substantially",
      "evidence": "The 360×800 layout observer recorded CLS 0.240, including shifts of 0.165 and 0.076 after about 5–6 seconds.",
      "suggestedFix": "Reserve stable space for late feed/banner content and give media explicit dimensions/aspect-ratio.",
      "effort": "medium",
      "artifacts": [
        "evidence/home-mobile-layout.json"
      ]
    },
    {
      "id": "F14",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-main-thread",
      "severity": "medium",
      "guidanceId": "break-up-long-tasks",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Startup scripting blocks the main thread",
      "evidence": "Trace recorded 4 long tasks, longest 94 ms and TBT 106 ms; Lighthouse measured 2.0 s main-thread work and 350 ms TBT.",
      "suggestedFix": "Split startup work, schedule non-critical tasks by priority, and defer analytics and below-fold hydration.",
      "effort": "large",
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F15",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "severity": "high",
      "guidanceId": "optimize-script-priority",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Critical delivery has long blocking chains",
      "evidence": "HAR found parser-blocking scripts without async/defer and Lighthouse estimated 1.37 s savings from render-blocking requests; 158 requests transferred 2.38 MB.",
      "suggestedFix": "Defer non-critical parser scripts, inline only critical CSS, preload only the true LCP resource, and improve cache lifetimes.",
      "effort": "large",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/script-placement.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F16",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "severity": "medium",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Large unused client bundles ship on first load",
      "evidence": "Lighthouse estimated 303 KiB unused JS, 72 KiB unused CSS and 219 KiB unminified JS; HAR transferred 731 KiB of scripts.",
      "suggestedFix": "Code-split by route, remove legacy/duplicate bundles for modern clients, minify production assets, and load optional features on demand.",
      "effort": "large",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-summary.json"
      ]
    },
    {
      "id": "F17",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "severity": "high",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Interactive controls lack accessible names and structure",
      "evidence": "Lighthouse failed link-name; probing found two unlabeled buttons, image-heavy links with empty text, and 36 images without alt.",
      "suggestedFix": "Give every control/link an accessible name, label inputs, and provide meaningful alt while keeping decorative images empty.",
      "effort": "medium",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/accessibility-structure.json",
        "evidence/images.json"
      ]
    },
    {
      "id": "F18",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "severity": "medium",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Primary controls fail text contrast",
      "evidence": "Lighthouse measured only 2.75:1 for white text on #ff6699 Download/Open App controls, below 4.5:1.",
      "suggestedFix": "Darken the pink surface or use dark foreground text to meet WCAG contrast in every state.",
      "effort": "small",
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F19",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "severity": "high",
      "guidanceId": "accessibility",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Heading/landmark and focus structure is weak",
      "evidence": "Homepage probe found no h1/h2, only h3 cards and a single main landmark; Lighthouse mobile found no main landmark, and all sampled focus outlines were none.",
      "suggestedFix": "Use a logical h1→h2→h3 hierarchy, consistent landmarks, and visible focus styles in DOM order.",
      "effort": "medium",
      "artifacts": [
        "evidence/accessibility-structure.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F20",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "severity": "high",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Zoom, reflow and media alternatives are restricted",
      "evidence": "Lighthouse found user-scalable=no/maximum-scale=1 on the mobile variant; the tested video had zero text tracks and many controls were 28 px.",
      "suggestedFix": "Allow pinch zoom, reflow at narrow widths, enlarge targets, and provide caption tracks/transcripts for video.",
      "effort": "large",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/video-probe.json",
        "evidence/accessibility-structure.json"
      ]
    },
    {
      "id": "F21",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "severity": "medium",
      "guidanceId": "html",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Image sizing is inconsistent",
      "evidence": "Images audit found 26/58 missing dimensions, 39 oversized, 53 without srcset and 36 missing alt, despite a valid doctype and UTF-8 charset.",
      "suggestedFix": "Add intrinsic dimensions/aspect-ratio and responsive srcset/sizes, while retaining valid document metadata.",
      "effort": "medium",
      "artifacts": [
        "evidence/images.json",
        "evidence/platform-probe.json"
      ]
    },
    {
      "id": "F22",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "severity": "medium",
      "guidanceId": "html",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Deprecated and legacy platform code remains",
      "evidence": "Lighthouse reported deprecated StorageType.persistent usage and 37 KiB legacy JavaScript savings.",
      "suggestedFix": "Replace deprecated persistent storage APIs with navigator.storage and modernize delivery while preserving Baseline fallbacks.",
      "effort": "medium",
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F23",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "severity": "high",
      "guidanceId": "html",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Homepage is not mobile-friendly",
      "evidence": "The desktop homepage has no viewport meta; its mobile rendering is scaled from an 1105 px layout. Links are crawlable and robots permits the page, but the mobile requirement fails.",
      "suggestedFix": "Add viewport metadata and responsive reflow while retaining real href links and descriptive text.",
      "effort": "large",
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/recon.json",
        "evidence/robots.txt"
      ]
    },
    {
      "id": "F24",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "severity": "high",
      "guidanceId": "security",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Transport defenses and cookie flags are missing",
      "evidence": "HTTPS is used, but headers probe found no CSP, HSTS or nosniff; all 13 cookies lacked Secure and used SameSite=None.",
      "suggestedFix": "Set HSTS, a restrictive CSP, nosniff, and Secure/SameSite cookie attributes; make sensitive cookies HttpOnly.",
      "effort": "medium",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ]
    },
    {
      "id": "F25",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "severity": "medium",
      "guidanceId": "privacy",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Large tracking and third-party footprint loads by default",
      "evidence": "HAR classified 154/158 requests and 2.12 MB as cross-origin, including data.bilibili.com and cm.bilibili.com; tracker probe saw 10 cross-origin hosts.",
      "suggestedFix": "Minimize default telemetry, batch necessary events, and defer non-essential measurement until consent or clear need.",
      "effort": "large",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ]
    },
    {
      "id": "F26",
      "principleId": "be-private-and-secure",
      "principleCheckId": "in-context-permissions-and-modern-auth",
      "severity": "medium",
      "guidanceId": "passkeys",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Authentication offers no passkey path",
      "evidence": "Login probe exposed password, SMS, QR and social paths but no navigator.credentials use or passkey option. No permission prompt appeared on load.",
      "suggestedFix": "Add passkey registration/authentication as a phishing-resistant option and retain contextual fallback methods.",
      "effort": "large",
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/login.png"
      ]
    },
    {
      "id": "F27",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "severity": "high",
      "guidanceId": "security",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Browser-enforced policies are absent",
      "evidence": "Headers probe found no HSTS, clickjacking defense, Referrer-Policy or Permissions-Policy, and no CSP/frame-ancestors.",
      "suggestedFix": "Deploy HSTS, frame-ancestors (or X-Frame-Options fallback), strict referrer policy and a least-privilege Permissions-Policy.",
      "effort": "medium",
      "artifacts": [
        "evidence/headers.json"
      ]
    },
    {
      "id": "F28",
      "principleId": "be-resilient",
      "principleCheckId": "progressive-enhancement",
      "severity": "high",
      "guidanceId": "stabilize-reactive-state",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Core homepage content disappears without JavaScript",
      "evidence": "Discoverability fetch found 0% rendered-word coverage in 1,374 bytes of raw HTML; title and description were absent from raw markup.",
      "suggestedFix": "Server-render core navigation and feed content, then hydrate enhancements so no-JS users and crawlers retain the primary experience.",
      "effort": "large",
      "artifacts": [
        "evidence/discoverability-rendered.png",
        "evidence/discoverability-crawler.png",
        "evidence/recon.json"
      ]
    },
    {
      "id": "F29",
      "principleId": "be-resilient",
      "principleCheckId": "resilient-runtime-behaviour",
      "severity": "medium",
      "guidanceId": "resilient-context-menus-and-nested-dropdowns",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Custom overlay is fragile at constrained viewports",
      "evidence": "The custom absolute login popover has no anchor fallback and the mobile page is a scaled desktop canvas, increasing clipping and positioning risk.",
      "suggestedFix": "Use native popover plus CSS anchor fallback positions and test edge placement at narrow/zoomed conditions.",
      "effort": "medium",
      "artifacts": [
        "evidence/overlay-probe.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "id": "F30",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "severity": "low",
      "guidanceId": "conditional-async-dependencies",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "App-like media experience has no install/offline layer",
      "evidence": "Platform probe found no manifest and no service-worker registration for this app-like video service.",
      "suggestedFix": "Provide a web app manifest and a small offline fallback for navigation/history; keep streaming features explicitly online-only.",
      "effort": "large",
      "artifacts": [
        "evidence/platform-probe.json"
      ]
    },
    {
      "id": "F31",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "severity": "medium",
      "guidanceId": "translator",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Language metadata is inconsistent across account flow",
      "evidence": "Homepage declares lang=zh-CN, but the login document has empty lang and dir; no logical-property evidence was found in inspected login/home styles.",
      "suggestedFix": "Set lang and dir on every document and prefer inline/block logical properties for translation-ready layouts.",
      "effort": "medium",
      "artifacts": [
        "evidence/recon.json",
        "evidence/login-probe.json"
      ]
    },
    {
      "id": "F32",
      "principleId": "be-internationalised",
      "principleCheckId": "time-zone-correctness",
      "severity": "low",
      "guidanceId": "coordinate-global-events",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Published timestamps are timezone-ambiguous",
      "evidence": "Video detail renders “2026-07-16 10:20:00” without a timezone or semantic time element, so global interpretation is ambiguous.",
      "suggestedFix": "Store instants unambiguously and render localized time with an explicit zone/offset and semantic datetime.",
      "effort": "small",
      "artifacts": [
        "evidence/video-probe.json"
      ]
    },
    {
      "id": "F33",
      "principleId": "be-trustworthy",
      "principleCheckId": "humane-error-handling",
      "severity": "medium",
      "guidanceId": "accessible-error-announcement",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Empty login submit gives no actionable validation",
      "evidence": "After an empty login submit, inputs had no required or aria-invalid state and no field-specific error appeared; focus remained on body.",
      "suggestedFix": "Validate after interaction, focus the first invalid field, set aria-invalid, and announce concise recovery text.",
      "effort": "small",
      "artifacts": [
        "evidence/login-validation.json"
      ],
      "pathId": "login"
    },
    {
      "id": "F34",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "severity": "medium",
      "guidanceId": "autofill-sign-in-form",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Sign-in autofill tokens are generic",
      "evidence": "Account and password inputs report autocomplete=\"on\" rather than username/current-password and have no associated labels in a semantic form.",
      "suggestedFix": "Use a real form, persistent labels, and autocomplete=username/current-password (plus one-time-code for SMS).",
      "effort": "small",
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/login-validation.json"
      ],
      "pathId": "login"
    },
    {
      "id": "F35",
      "principleId": "be-trustworthy",
      "principleCheckId": "safe-commercial-and-account-flows",
      "severity": "medium",
      "guidanceId": "passkey-authentication",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Account flow lacks phishing-resistant authentication",
      "evidence": "The account page exposes password/SMS/QR/social options but no passkey authentication or reauthentication path.",
      "suggestedFix": "Offer passkeys and clear recovery/reauthentication, while preserving visible terms and alternative methods.",
      "effort": "large",
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/login.png"
      ],
      "pathId": "login"
    },
    {
      "id": "F36",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "severity": "medium",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Image delivery wastes bytes",
      "evidence": "Images probe found 39 oversized images, 53 without srcset, 26 without dimensions and only 32/58 in a detected modern format.",
      "suggestedFix": "Generate responsive AVIF/WebP variants with srcset/sizes and correctly prioritize only the LCP image.",
      "effort": "medium",
      "artifacts": [
        "evidence/images.json"
      ]
    },
    {
      "id": "F37",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "severity": "medium",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Initial load performs disproportionate background work",
      "evidence": "The page issued 68 XHR/fetches and 158 requests total, with analytics/reporting hosts active before interaction.",
      "suggestedFix": "Defer and batch background telemetry, eliminate redundant fetches, and suspend non-essential work offscreen/backgrounded.",
      "effort": "large",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ]
    },
    {
      "id": "F38",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "severity": "medium",
      "guidanceId": "efficient-background-processing",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "high",
      "summary": "Third-party and media budget is heavy",
      "evidence": "2.38 MB transferred on load, including 1.16 MB images; 2.12 MB was cross-origin and the video begins playback muted on its detail page.",
      "suggestedFix": "Budget third-party/media bytes, lazy-load nonessential assets, and avoid starting media before explicit user intent.",
      "effort": "large",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/video-probe.json"
      ]
    },
    {
      "id": "F39",
      "principleId": "be-memory-efficient",
      "principleCheckId": "no-leak-under-repeated-interaction",
      "severity": "medium",
      "guidanceId": "manage-recurring-intervals",
      "guidanceCategory": "modern-web-guidance",
      "confidence": "medium",
      "summary": "Repeated feed traversal grows retained heap sharply",
      "evidence": "After 10 bottom/top feed traversals, heap summary grew from 376,116 nodes/23.7 MB to 736,095 nodes/38.8 MB, with closures 26,285→64,282. Lazy feed retention may explain part, so confidence is medium.",
      "suggestedFix": "Bound feed caches, virtualize offscreen cards, release observers/listeners, and verify with same-session baseline/target/final snapshots.",
      "effort": "large",
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot",
        "evidence/heap-post.heapsnapshot"
      ]
    }
  ],
  "taskList": [
    {
      "id": "T1",
      "title": "Build a responsive, zoomable and keyboard-visible shell",
      "priority": 1,
      "findingIds": [
        "F09",
        "F10",
        "F11",
        "F19",
        "F20",
        "F23"
      ],
      "guidanceId": "fluid-scaling",
      "status": "open"
    },
    {
      "id": "T2",
      "title": "Reduce critical load work and stabilize late content",
      "priority": 2,
      "findingIds": [
        "F12",
        "F13",
        "F14",
        "F15",
        "F16"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T3",
      "title": "Deploy security headers and safe cookie policy",
      "priority": 3,
      "findingIds": [
        "F24",
        "F27"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T4",
      "title": "Server-render core content for no-JS resilience",
      "priority": 4,
      "findingIds": [
        "F28"
      ],
      "guidanceId": "stabilize-reactive-state",
      "status": "open"
    },
    {
      "id": "T5",
      "title": "Repair names, landmarks, headings, contrast and captions",
      "priority": 5,
      "findingIds": [
        "F17",
        "F18",
        "F19",
        "F20"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T6",
      "title": "Remove unsolicited login overlay and adopt native anchored popovers",
      "priority": 6,
      "findingIds": [
        "F05",
        "F06",
        "F07",
        "F08",
        "F29"
      ],
      "guidanceId": "declarative-dialog-popover-control",
      "status": "open"
    },
    {
      "id": "T7",
      "title": "Optimize responsive media and telemetry budgets",
      "priority": 7,
      "findingIds": [
        "F21",
        "F25",
        "F36",
        "F37",
        "F38"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T8",
      "title": "Add dark/high-contrast preference themes",
      "priority": 8,
      "findingIds": [
        "F01",
        "F02"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T9",
      "title": "Modernize account forms with validation, autofill and passkeys",
      "priority": 9,
      "findingIds": [
        "F26",
        "F33",
        "F34",
        "F35"
      ],
      "guidanceId": "passkey-authentication",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Bound long-feed memory retention",
      "priority": 10,
      "findingIds": [
        "F39"
      ],
      "guidanceId": "manage-recurring-intervals",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 6,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-21T15-48-56-890Z"
}
