{
  "url": "https://www.n-tv.de",
  "auditedAt": "2026-07-24T03:33:00.136Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete audit of four representative public templates. Search, checkout/account, live-TV playback, and authenticated flows were not covered.",
  "page": {
    "appType": "hybrid",
    "framework": "Next.js",
    "notes": "Server-rendered German news MPA/hybrid. Raw HTML contains 99% of rendered content. A consent/subscription wall appears on initial load."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "har",
    "trace",
    "images",
    "lighthouse",
    "heap-summary",
    "Modern Web Guidance live feed"
  ],
  "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"
  ],
  "config": {
    "loaded": false
  },
  "coverage": {
    "catalogVersion": "modern-web-guidance@0.0.172",
    "catalogChecksum": "sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7",
    "expected": 58,
    "recorded": 58,
    "judged": 58,
    "blocked": 0,
    "notRun": 0,
    "missing": 0,
    "unknown": 0,
    "duplicates": 0,
    "complete": true
  },
  "checkOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-color-scheme",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "Under emulated dark preference, the page remains white with dark text; computed color-scheme is normal and CSS inspection finds no prefers-color-scheme rule.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark-reduced.png",
        "evidence/preferences.json",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "medium",
      "method": "Emulated media plus Runtime animation probe",
      "evidence": "Under emulated prefers-reduced-motion: reduce, getAnimations() returned no active animations; no motion was imposed in the inspected state.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "CSS inspection found no forced-colors or prefers-contrast rules, while Lighthouse found 3.82:1 section-label contrast failures even in the default palette.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "CSS inspection across the rendered homepage found no view-transition rules; section navigation is ordinary document navigation.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/section-probe.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon of representative homepage, section, article, and video paths for the relevant surface",
      "evidence": "No parallax, scrollytelling, or entry/exit reveal interaction was present on the representative templates, so there is no scroll-linked implementation to judge.",
      "reason": "No parallax, scrollytelling, or entry/exit reveal interaction was present on the representative templates, so there is no scroll-linked implementation to judge.",
      "pathIds": [
        "home",
        "section",
        "article",
        "video"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon of representative homepage, section, article, and video paths for the relevant surface",
      "evidence": "No swipe, pull, drag, or comparable gesture-driven control was present in the audited news-reading paths.",
      "reason": "No swipe, pull, drag, or comparable gesture-driven control was present in the audited news-reading paths.",
      "pathIds": [
        "home",
        "section",
        "article",
        "video"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "The 32,118px homepage uses a sticky header, but CSS inspection found no scroll-timeline and no scroll-state-aware treatment or progress cue.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon of representative homepage, section, article, and video paths for the relevant surface",
      "evidence": "No tooltip or edge-sensitive anchored popover was required in the exercised reading paths; the blocking consent modal is not an anchored overlay.",
      "reason": "No tooltip or edge-sensitive anchored popover was required in the exercised reading paths; the blocking consent modal is not an anchored overlay.",
      "pathIds": [
        "home",
        "section",
        "article",
        "video"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon of representative homepage, section, article, and video paths for the relevant surface",
      "evidence": "The audited flows are ordinary page navigations with no in-page jump, carousel marker, tour, drill-down, or moved-focus state requiring a directional attention cue.",
      "reason": "The audited flows are ordinary page navigations with no in-page jump, carousel marker, tour, drill-down, or moved-focus state requiring a directional attention cue.",
      "pathIds": [
        "home",
        "section",
        "article",
        "video"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "Desktop and mobile first-view screenshots show a fixed consent/subscription panel covering most or all news content before any user action.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "DOM inspection identifies a DIV with role=dialog rather than a native dialog, and no popover/dialog primitive is present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "medium",
      "method": "Visual review of representative templates",
      "evidence": "Outside the blocking consent wall, article and listing templates use a simple content column and restrained borders.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/article-desktop.png",
        "evidence/section-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "medium",
      "method": "Layout metrics at 360x800",
      "evidence": "Mobile layout measured 3px overflow on home and 0px on article, with a valid viewport meta; screenshots remain usable at 360px.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/article-mobile-layout.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "pass",
      "confidence": "medium",
      "method": "CSSOM feature probe and mobile screenshot",
      "evidence": "CSS probe found five container rules and the mobile section adapts to one column.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/section-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "pass",
      "confidence": "medium",
      "method": "Keyboard focus computed-style probe",
      "evidence": "Programmatic focus on the first section control produced a visible 2px solid outline.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/section-probe.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "medium",
      "method": "DOM heading/link inventory and screenshot",
      "evidence": "Headings, descriptive story links, timestamps, and section labels make the news-reading purpose immediately clear behind the consent layer.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/recon.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "The primary news-reading journey opens behind an unavoidable consent/subscription choice on homepage, section, article, and video templates.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/article-desktop.png",
        "evidence/section-mobile.png"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon of representative homepage, section, article, and video paths for the relevant surface",
      "evidence": "The representative core task is reading server-rendered news and exposed no loading, submission, empty, or error state to exercise.",
      "reason": "The representative core task is reading server-rendered news and exposed no loading, submission, empty, or error state to exercise.",
      "pathIds": [
        "home",
        "section",
        "article",
        "video"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "The trace measured LCP 6.29s; Lighthouse under simulated mobile conditions measured LCP 20.9s, FCP 10.0s, and performance 0.51.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "medium",
      "method": "Layout-shift observers",
      "evidence": "Layout observers measured CLS 0 on both homepage and article during the capture window.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/article-mobile-layout.json",
        "evidence/home-mobile-layout.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "medium",
      "method": "Trace and Lighthouse main-thread diagnostics",
      "evidence": "Trace found one 102.94ms long task and 52.94ms TBT; Lighthouse TBT was 230ms, not the dominant failure.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "HAR recorded 165 requests and 4.34MB transferred, including 66 scripts/1.93MB, 29 stylesheets, and 81 third-party requests.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "Scripts account for 1.93MB across 66 requests and third parties transfer 1.45MB before the user has chosen a content interaction.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse accessibility audits and image inventory",
      "evidence": "Lighthouse passed button-name, link-name, and image-alt; image probe found zero missing alt attributes.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/images.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "Lighthouse reports multiple labels at 3.82:1 against #aab9c3, below the 4.5:1 requirement for normal-sized text.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse structure audits and keyboard focus probe",
      "evidence": "Lighthouse passed heading order and main landmark; focus probe showed a visible 2px outline.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/section-probe.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "medium",
      "method": "Article screenshot and mobile layout",
      "evidence": "Representative article uses a narrow readable column with clear heading/body hierarchy and no clipping at 360px.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/article-desktop.png",
        "evidence/article-mobile-layout.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "pass",
      "confidence": "medium",
      "method": "Viewport, layout, and media DOM probe",
      "evidence": "Viewport allows scaling, article reflows at 360px, and the representative video has a German captions track.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/article-mobile-layout.json",
        "evidence/video-probe.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse errors-in-console audit",
      "evidence": "Lighthouse recorded no browser console errors.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "Image inspection found all 100 sampled images lacked width/height attributes and 84 lacked srcset; six were oversized.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse best-practices diagnostics and visual load review",
      "evidence": "Lighthouse passed deprecated APIs, BFCache, and Inspector Issues checks; no permission prompt appeared on load.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "medium",
      "method": "DOM metadata probes",
      "evidence": "Home and section probes expose descriptive titles and meta descriptions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/section-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse SEO plus robots probe",
      "evidence": "Lighthouse SEO passed crawlable anchors, robots, indexing, and viewport checks.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "medium",
      "method": "Network/DOM and robots/sitemap probe",
      "evidence": "Home returns 200 with canonical URL, index/follow robots, valid robots.txt, and a current sitemap index.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/platform-probe.json",
        "evidence/discoverability-home.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "medium",
      "method": "DOM metadata probe",
      "evidence": "Home exposes WebPage and BreadcrumbList JSON-LD plus complete Open Graph title, description, URL, and image metadata.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "CSP only says upgrade-insecure-requests; one cookie is not Secure and all three sampled cookies use SameSite=None. HSTS and nosniff are present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "Tracker evidence found 20 third-party origins; HAR measured 81 third-party requests and 1.45MB, including Google Tag Manager and profiling/ad vendors.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon of representative homepage, section, article, and video paths for the relevant surface",
      "evidence": "No permission request or authentication flow occurred in the public reading paths, so passkeys and permission timing were not applicable.",
      "reason": "No permission request or authentication flow occurred in the public reading paths, so passkeys and permission timing were not applicable.",
      "pathIds": [
        "home",
        "section",
        "article",
        "video"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "Headers lack Referrer-Policy, Permissions-Policy, and both X-Frame-Options and CSP frame-ancestors; the CSP contains no script restrictions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "medium",
      "method": "Raw HTML versus rendered DOM and crawler screenshot",
      "evidence": "Discoverability comparison found 99% raw-HTML content coverage, with title, H1, and description available without JavaScript.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/discoverability-home.json",
        "evidence/discoverability-home-crawler.png",
        "evidence/discoverability-home-rendered.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "medium",
      "method": "Crawler comparison, mobile layouts, and Lighthouse",
      "evidence": "Representative pages render complete server content, mobile layouts do not clip, and Lighthouse found no runtime errors.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/discoverability-home.json",
        "evidence/article-mobile-layout.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "The public news site has no web app manifest and no service-worker registration, so frequently revisited content has no offline fallback.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "medium",
      "method": "Fetch and no-JS resilience probe",
      "evidence": "A direct fetch of robots and sitemap returned useful successful documents, and server-rendered content avoids a blank JS shell; no failure UI was triggered.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/discoverability-home.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "medium",
      "method": "DOM and CSSOM probe",
      "evidence": "The document declares lang=de and CSS inspection found logical inline/block properties.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon of representative homepage, section, article, and video paths for the relevant surface",
      "evidence": "The audited editorial paths display German-localized publication times but expose no user-entered currency, calendar, number, or locale-switching flow requiring deeper Intl validation.",
      "reason": "The audited editorial paths display German-localized publication times but expose no user-entered currency, calendar, number, or locale-switching flow requiring deeper Intl validation.",
      "pathIds": [
        "home",
        "section",
        "article",
        "video"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon of representative homepage, section, article, and video paths for the relevant surface",
      "evidence": "No scheduling, recurring event, or cross-zone user flow was present in the representative news pages.",
      "reason": "No scheduling, recurring event, or cross-zone user flow was present in the representative news pages.",
      "pathIds": [
        "home",
        "section",
        "article",
        "video"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "The wall gives a prominent “Einwilligen und weiter” action and paid no-tracking option, while rejection is hidden behind “Einstellungen”; it describes processing by 191 partners.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon of representative homepage, section, article, and video paths for the relevant surface",
      "evidence": "No form exists on the audited homepage and no form submission was part of the core reading journey.",
      "reason": "No form exists on the audited homepage and no form submission was part of the core reading journey.",
      "pathIds": [
        "home",
        "section",
        "article",
        "video"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon of representative homepage, section, article, and video paths for the relevant surface",
      "evidence": "No text, address, payment, or sign-in inputs were present in the audited public reading paths.",
      "reason": "No text, address, payment, or sign-in inputs were present in the audited public reading paths.",
      "pathIds": [
        "home",
        "section",
        "article",
        "video"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon of representative homepage, section, article, and video paths for the relevant surface",
      "evidence": "A subscription promotion was visible, but checkout, sign-in, cancellation, and account-management were not entered because they are separate authenticated/commercial journeys.",
      "reason": "A subscription promotion was visible, but checkout, sign-in, cancellation, and account-management were not entered because they are separate authenticated/commercial journeys.",
      "pathIds": [
        "home",
        "section",
        "article",
        "video"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "Of 100 images, 84 lacked srcset, 100 lacked intrinsic dimensions, six were oversized, and ten used legacy formats.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "medium",
      "method": "Trace and media probe",
      "evidence": "Trace showed only one long task and 52.94ms TBT over the capture, with no autoplay video on the representative media page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/video-probe.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "Third parties account for 81 requests and 1.45MB of a 4.34MB initial load, before a reader engages with content.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon of representative homepage, section, article, and video paths for the relevant surface",
      "evidence": "Agent-facing transactional tools are not necessary for this public news-reading experience; structured article metadata and raw HTML are the relevant machine-readable surface.",
      "reason": "Agent-facing transactional tools are not necessary for this public news-reading experience; structured article metadata and raw HTML are the relevant machine-readable surface.",
      "pathIds": [
        "home",
        "section",
        "article",
        "video"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Recon of representative homepage, section, article, and video paths for the relevant surface",
      "evidence": "On-device summarization or language-model inference is an optional emerging enhancement, not required for the core news-reading experience.",
      "reason": "On-device summarization or language-model inference is an optional emerging enhancement, not required for the core news-reading experience.",
      "pathIds": [
        "home",
        "section",
        "article",
        "video"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "medium",
      "method": "Baseline/post heap-summary comparison",
      "evidence": "After ten full-page down/up scroll cycles, self size grew only 236,714 bytes (0.46%) and node count 0.57%, not evidence of unbounded growth in this run.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "issues",
      "confidence": "high",
      "method": "Direct visual, DOM, or objective diagnostic evidence on representative paths",
      "evidence": "Baseline heap summary contains 841,061 nodes and 51.27MB self size; after repeated full-page scrolling it remains about 51.51MB.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post.json"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "Baseline/post heap constructor comparison",
      "evidence": "Heap summaries show a small bounded total delta after repeated scrolling and no Detached* constructor among top retained constructors.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/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": "issues",
      "findingIds": [
        "F05",
        "F06"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F08",
        "F09",
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F13",
        "F14",
        "F15"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F18",
        "F19"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "All checks were judged not applicable to the representative public news-reading paths."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F20"
      ]
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and initial consent state; represents discovery, top stories, global navigation, network/security/performance, and preferences.",
      "url": "https://www.n-tv.de",
      "conditions": [
        "desktop 1440x1000",
        "mobile 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "no-JavaScript crawler"
      ],
      "result": "issues"
    },
    {
      "id": "section",
      "description": "Politics section listing; represents category/list template and mobile navigation.",
      "url": "https://www.n-tv.de/politik/",
      "conditions": [
        "mobile 360x800",
        "keyboard focus probe"
      ],
      "result": "issues"
    },
    {
      "id": "article",
      "description": "Politics article; represents editorial detail, long-form reading, and mobile reflow.",
      "url": "https://www.n-tv.de/politik/Trump-will-Iran-fuer-Schaeden-an-Schiffen-zur-Kasse-bitten-id31119627.html",
      "conditions": [
        "desktop 1440x1000",
        "mobile 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "video",
      "description": "Video article; represents media controls and captions.",
      "url": "https://www.n-tv.de/mediathek/videos/panorama/Polizei-nimmt-mutmasslichen-Taeter-in-Regensburg-fest-id31119484.html",
      "conditions": [
        "desktop 1440x1000",
        "media DOM probe"
      ],
      "result": "issues"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "high",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "summary": "No user-preference dark theme",
      "evidence": "Under emulated dark preference, the page remains white with dark text; computed color-scheme is normal and CSS inspection finds no prefers-color-scheme rule.",
      "artifacts": [
        "evidence/home-dark-reduced.png",
        "evidence/preferences.json",
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Declare color-scheme and provide prefers-color-scheme-driven surface, text, control, and media colors.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F02",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-contrast",
      "guidanceId": "adapt-scrollbar-to-contrast-preferences",
      "guidanceCategory": "accessibility",
      "summary": "No explicit high-contrast or forced-colors adaptation",
      "evidence": "CSS inspection found no forced-colors or prefers-contrast rules, while Lighthouse found 3.82:1 section-label contrast failures even in the default palette.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Add forced-colors/prefers-contrast treatment and ensure essential text and controls retain system-visible colors.",
      "effort": "small",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F03",
      "severity": "medium",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "cross-document-transitions",
      "guidanceCategory": "css",
      "summary": "Navigation swaps have no View Transition treatment",
      "evidence": "CSS inspection across the rendered homepage found no view-transition rules; section navigation is ordinary document navigation.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/section-probe.json"
      ],
      "suggestedFix": "Progressively enhance same-origin section and article navigation with cross-document View Transitions, respecting reduced motion.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F04",
      "severity": "medium",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "shrinking-header-on-scroll",
      "guidanceCategory": "css",
      "summary": "Sticky navigation does not expose scroll progress or state",
      "evidence": "The 32,118px homepage uses a sticky header, but CSS inspection found no scroll-timeline and no scroll-state-aware treatment or progress cue.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Add a lightweight scroll progress/state cue using declarative scroll-driven or scroll-state CSS with fallback.",
      "effort": "small",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F05",
      "severity": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "user-experience",
      "summary": "Consent and subscription wall obscures the primary content on load",
      "evidence": "Desktop and mobile first-view screenshots show a fixed consent/subscription panel covering most or all news content before any user action.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Keep news content readable while presenting a compact, clearly dismissible consent choice; avoid a full-viewport interruption.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F06",
      "severity": "medium",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "html",
      "summary": "Consent modal uses an ad-hoc dialog container",
      "evidence": "DOM inspection identifies a DIV with role=dialog rather than a native dialog, and no popover/dialog primitive is present.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/home-dom.json"
      ],
      "suggestedFix": "Use a native dialog for the modal flow, with correct initial focus, Escape/cancel behavior, and explicit labelling.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F07",
      "severity": "high",
      "principleId": "support-core-task-success",
      "principleCheckId": "primary-flow-completion",
      "guidanceId": "persistent-toast-notifications",
      "guidanceCategory": "user-experience",
      "summary": "Reading is blocked by a consent-or-subscribe detour",
      "evidence": "The primary news-reading journey opens behind an unavoidable consent/subscription choice on homepage, section, article, and video templates.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/article-desktop.png",
        "evidence/section-mobile.png"
      ],
      "suggestedFix": "Let the primary reading flow proceed without a blocking detour and preserve clear, reversible privacy choices.",
      "effort": "large",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F08",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "summary": "Largest content appears too slowly",
      "evidence": "The trace measured LCP 6.29s; Lighthouse under simulated mobile conditions measured LCP 20.9s, FCP 10.0s, and performance 0.51.",
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Prioritize the true LCP resource, reduce critical-path CSS/JS, and defer nonessential consent, ad, and widget work.",
      "effort": "large",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F09",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-script-priority",
      "guidanceCategory": "performance",
      "summary": "Heavy request and script delivery delays content",
      "evidence": "HAR recorded 165 requests and 4.34MB transferred, including 66 scripts/1.93MB, 29 stylesheets, and 81 third-party requests.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har"
      ],
      "suggestedFix": "Consolidate critical CSS, defer noncritical scripts, reduce third-party startup work, and use effective caching/preload priorities.",
      "effort": "large",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F10",
      "severity": "medium",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "summary": "Script and third-party payload is disproportionate",
      "evidence": "Scripts account for 1.93MB across 66 requests and third parties transfer 1.45MB before the user has chosen a content interaction.",
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Audit coverage and third-party value, remove duplicate/unused bundles, and conditionally load advertising and widgets.",
      "effort": "large",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F11",
      "severity": "medium",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Section labels fail minimum text contrast",
      "evidence": "Lighthouse reports multiple labels at 3.82:1 against #aab9c3, below the 4.5:1 requirement for normal-sized text.",
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "suggestedFix": "Darken the label color or lighten the strip background to reach at least 4.5:1 in every state.",
      "effort": "small",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F12",
      "severity": "medium",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Images omit intrinsic dimensions and responsive candidates",
      "evidence": "Image inspection found all 100 sampled images lacked width/height attributes and 84 lacked srcset; six were oversized.",
      "artifacts": [
        "evidence/images.json"
      ],
      "suggestedFix": "Emit width and height (or equivalent intrinsic aspect ratio) and responsive srcset/sizes for every editorial image.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F13",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "CSP and cookie posture are weaker than expected",
      "evidence": "CSP only says upgrade-insecure-requests; one cookie is not Secure and all three sampled cookies use SameSite=None. HSTS and nosniff are present.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Deploy a restrictive nonce/hash-based CSP and limit cookie scope; mark every transport cookie Secure and use Lax/Strict unless cross-site use is essential.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F14",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "summary": "Large third-party tracking footprint loads around consent",
      "evidence": "Tracker evidence found 20 third-party origins; HAR measured 81 third-party requests and 1.45MB, including Google Tag Manager and profiling/ad vendors.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Default to minimal collection, gate optional vendors on an affirmative purpose-specific choice, and remove vendors without demonstrated user value.",
      "effort": "large",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F15",
      "severity": "medium",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "Several browser-enforced policies are absent",
      "evidence": "Headers lack Referrer-Policy, Permissions-Policy, and both X-Frame-Options and CSP frame-ancestors; the CSP contains no script restrictions.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "suggestedFix": "Add frame-ancestors, Referrer-Policy and a least-privilege Permissions-Policy as part of the restrictive CSP rollout.",
      "effort": "small",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F16",
      "severity": "medium",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "conditional-async-dependencies",
      "guidanceCategory": "performance",
      "summary": "No offline fallback or installable app surface",
      "evidence": "The public news site has no web app manifest and no service-worker registration, so frequently revisited content has no offline fallback.",
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Provide a minimal manifest and service-worker offline page, while keeping server-rendered article content as the baseline.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F17",
      "severity": "high",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "user-experience",
      "summary": "Consent choice visually favors tracking",
      "evidence": "The wall gives a prominent “Einwilligen und weiter” action and paid no-tracking option, while rejection is hidden behind “Einstellungen”; it describes processing by 191 partners.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Offer accept and reject-all with equal prominence, concise purpose-level choices, and equally easy later withdrawal.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F18",
      "severity": "medium",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "summary": "Editorial images lack responsive delivery metadata",
      "evidence": "Of 100 images, 84 lacked srcset, 100 lacked intrinsic dimensions, six were oversized, and ten used legacy formats.",
      "artifacts": [
        "evidence/images.json"
      ],
      "suggestedFix": "Generate responsive modern-format variants and select them with srcset/sizes; retain intrinsic dimensions.",
      "effort": "medium",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F19",
      "severity": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "performance",
      "summary": "Third-party work consumes a large share of the initial budget",
      "evidence": "Third parties account for 81 requests and 1.45MB of a 4.34MB initial load, before a reader engages with content.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "suggestedFix": "Set a third-party byte/request budget and defer optional analytics, ads, offers, and video integrations until consent or interaction.",
      "effort": "large",
      "confidence": "high",
      "pathId": "home"
    },
    {
      "id": "F20",
      "severity": "medium",
      "principleId": "be-memory-efficient",
      "principleCheckId": "bounded-footprint",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "summary": "Homepage heap footprint is large for a news document",
      "evidence": "Baseline heap summary contains 841,061 nodes and 51.27MB self size; after repeated full-page scrolling it remains about 51.51MB.",
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post.json"
      ],
      "suggestedFix": "Profile constructors and retained trees, then reduce hydrated widgets, third-party runtimes, and offscreen DOM retained at startup.",
      "effort": "large",
      "confidence": "high",
      "pathId": "home"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Replace the blocking, asymmetric consent wall with equal, content-preserving choices",
      "priority": 1,
      "findingIds": [
        "F05",
        "F07",
        "F17"
      ],
      "guidanceId": "light-dismiss-a-dialog",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Reduce and defer critical-path scripts, styles, and third parties to improve LCP",
      "priority": 2,
      "findingIds": [
        "F08",
        "F09",
        "F10",
        "F14",
        "F19",
        "F20"
      ],
      "guidanceId": "optimize-script-priority",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Deploy a restrictive CSP and complete browser security policies",
      "priority": 3,
      "findingIds": [
        "F13",
        "F15"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Add preference-driven dark and high-contrast themes",
      "priority": 4,
      "findingIds": [
        "F01",
        "F02",
        "F11"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Generate intrinsic, responsive editorial image markup",
      "priority": 5,
      "findingIds": [
        "F12",
        "F18"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Progressively enhance navigation and long-page orientation",
      "priority": 6,
      "findingIds": [
        "F03",
        "F04"
      ],
      "guidanceId": "cross-document-transitions",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Add a minimal offline fallback and manifest",
      "priority": 7,
      "findingIds": [
        "F16"
      ],
      "guidanceId": "conditional-async-dependencies",
      "status": "open"
    }
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/article-desktop.png",
      "caption": "Audit evidence: article-desktop.png",
      "findingIds": [
        "F07"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/article-dom.json",
      "caption": "Audit evidence: article-dom.json",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/article-mobile-layout.json",
      "caption": "Audit evidence: article-mobile-layout.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "Audit evidence: cookies.json",
      "findingIds": [
        "F13"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-home-crawler.png",
      "caption": "Audit evidence: discoverability-home-crawler.png",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-home-rendered.png",
      "caption": "Audit evidence: discoverability-home-rendered.png",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability-home.json",
      "caption": "Audit evidence: discoverability-home.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-list.json",
      "caption": "Audit evidence: guidance-list.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-retrieved.md",
      "caption": "Audit evidence: guidance-retrieved.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-searches.md",
      "caption": "Audit evidence: guidance-searches.md",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "Audit evidence: headers.json",
      "findingIds": [
        "F13",
        "F15"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.json",
      "caption": "Audit evidence: heap-baseline.json",
      "findingIds": [
        "F20"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-post.json",
      "caption": "Audit evidence: heap-post.json",
      "findingIds": [
        "F20"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark-reduced.png",
      "caption": "Audit evidence: home-dark-reduced.png",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "Audit evidence: home-desktop.png",
      "findingIds": [
        "F04",
        "F05",
        "F07",
        "F17"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "Audit evidence: home-dom.json",
      "findingIds": [
        "F06"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "Audit evidence: home-mobile-layout.json",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "Audit evidence: home-mobile.png",
      "findingIds": [
        "F05",
        "F17"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "Audit evidence: home-summary.json",
      "findingIds": [
        "F09",
        "F10",
        "F14",
        "F19"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "Audit evidence: home-trace-summary.json",
      "findingIds": [
        "F08"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "Audit evidence: home-trace.json",
      "findingIds": []
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "Audit evidence: home.har",
      "findingIds": [
        "F09"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "Audit evidence: images.json",
      "findingIds": [
        "F12",
        "F18"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-summary.json",
      "caption": "Audit evidence: lighthouse-summary.json",
      "findingIds": [
        "F02",
        "F08",
        "F11"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "Audit evidence: lighthouse.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/platform-probe.json",
      "caption": "Audit evidence: platform-probe.json",
      "findingIds": [
        "F01",
        "F02",
        "F03",
        "F04",
        "F06",
        "F16"
      ]
    },
    {
      "type": "other",
      "path": "evidence/preferences.json",
      "caption": "Audit evidence: preferences.json",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "Audit evidence: recon.json",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "Audit evidence: secrets.json",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/section-mobile.png",
      "caption": "Audit evidence: section-mobile.png",
      "findingIds": [
        "F07"
      ]
    },
    {
      "type": "other",
      "path": "evidence/section-probe.json",
      "caption": "Audit evidence: section-probe.json",
      "findingIds": [
        "F03"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "Audit evidence: trackers.json",
      "findingIds": [
        "F14",
        "F19"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/video-page.png",
      "caption": "Audit evidence: video-page.png",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/video-probe.json",
      "caption": "Audit evidence: video-probe.json",
      "findingIds": []
    }
  ],
  "budget": {
    "pathCount": 4,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-24T03-33-00-136Z"
}
