{
  "url": "https://www.kicktipp.de",
  "auditedAt": "2026-07-19T00:49:55.739Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Atomic audit completed across seven representative public routes. Authenticated tipping, completed registration, paid Profipaket purchase, and destructive account actions were not exercised because they require credentials, payment, or side effects.",
  "page": {
    "appType": "mpa",
    "framework": "Server-rendered MPA with ES modules and jQuery",
    "notes": "Public sports prediction service with app-like game, membership, and account flows. The route set covers landing, listing, detail, creation, login, help, and recovery templates."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "images",
    "secrets",
    "heap-summary",
    "lighthouse",
    "robots/sitemap/manifest fetch"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "cross-document-transitions",
    "shrinking-header-on-scroll",
    "branded-select-styling",
    "size-aware-styling",
    "accessibility",
    "accessible-error-announcement",
    "optimize-preload-priority",
    "identify-heavy-scripts",
    "fluid-scaling",
    "html",
    "security",
    "passkeys",
    "language-detection",
    "validate-input-after-interaction",
    "autofill-sign-up-form",
    "deliver-optimized-decorative-images"
  ],
  "artifacts": [
    {
      "type": "dom",
      "path": "evidence/create-dom.json",
      "caption": "create dom"
    },
    {
      "type": "other",
      "path": "evidence/create-errors-probe.json",
      "caption": "create errors probe"
    },
    {
      "type": "screenshot",
      "path": "evidence/create-errors.png",
      "caption": "create errors"
    },
    {
      "type": "screenshot",
      "path": "evidence/create-mobile.png",
      "caption": "create mobile"
    },
    {
      "type": "other",
      "path": "evidence/create-probe.json",
      "caption": "create probe"
    },
    {
      "type": "other",
      "path": "evidence/create-ui-probe.json",
      "caption": "create ui probe"
    },
    {
      "type": "dom",
      "path": "evidence/game-dom.json",
      "caption": "game dom"
    },
    {
      "type": "screenshot",
      "path": "evidence/game-mobile.png",
      "caption": "game mobile"
    },
    {
      "type": "other",
      "path": "evidence/game-probe.json",
      "caption": "game probe"
    },
    {
      "type": "other",
      "path": "evidence/guidance-catalog.json",
      "caption": "guidance catalog"
    },
    {
      "type": "other",
      "path": "evidence/guidance-pointers-consulted.json",
      "caption": "guidance pointers consulted"
    },
    {
      "type": "screenshot",
      "path": "evidence/help-discoverability-crawler.png",
      "caption": "help discoverability crawler"
    },
    {
      "type": "screenshot",
      "path": "evidence/help-discoverability-rendered.png",
      "caption": "help discoverability rendered"
    },
    {
      "type": "discoverability",
      "path": "evidence/help-discoverability.json",
      "caption": "help discoverability"
    },
    {
      "type": "dom",
      "path": "evidence/help-dom.json",
      "caption": "help dom"
    },
    {
      "type": "screenshot",
      "path": "evidence/help-mobile.png",
      "caption": "help mobile"
    },
    {
      "type": "other",
      "path": "evidence/home-a11y-probe.json",
      "caption": "home a11y probe"
    },
    {
      "type": "other",
      "path": "evidence/home-contrast-probe.json",
      "caption": "home contrast probe"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-contrast.png",
      "caption": "home contrast"
    },
    {
      "type": "other",
      "path": "evidence/home-cookies.json",
      "caption": "home cookies"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "home discoverability crawler"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "home discoverability rendered"
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "home discoverability"
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom"
    },
    {
      "type": "other",
      "path": "evidence/home-headers.json",
      "caption": "home headers"
    },
    {
      "type": "heap",
      "path": "evidence/home-heap-baseline-summary.json",
      "caption": "home heap baseline summary"
    },
    {
      "type": "heap",
      "path": "evidence/home-heap-baseline.json",
      "caption": "home heap baseline"
    },
    {
      "type": "heap",
      "path": "evidence/home-heap-menu-post.json",
      "caption": "home heap menu post"
    },
    {
      "type": "heap",
      "path": "evidence/home-heap-post-summary.json",
      "caption": "home heap post summary"
    },
    {
      "type": "heap",
      "path": "evidence/home-heap-post.json",
      "caption": "home heap post"
    },
    {
      "type": "other",
      "path": "evidence/home-i18n-agent-probe.json",
      "caption": "home i18n agent probe"
    },
    {
      "type": "other",
      "path": "evidence/home-images.json",
      "caption": "home images"
    },
    {
      "type": "lighthouse",
      "path": "evidence/home-lighthouse-summary.json",
      "caption": "home lighthouse summary"
    },
    {
      "type": "lighthouse",
      "path": "evidence/home-lighthouse.json",
      "caption": "home lighthouse"
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile"
    },
    {
      "type": "other",
      "path": "evidence/home-platform-probe.json",
      "caption": "home platform probe"
    },
    {
      "type": "other",
      "path": "evidence/home-preferences.json",
      "caption": "home preferences"
    },
    {
      "type": "other",
      "path": "evidence/home-recon.json",
      "caption": "home recon"
    },
    {
      "type": "other",
      "path": "evidence/home-secrets.json",
      "caption": "home secrets"
    },
    {
      "type": "other",
      "path": "evidence/home-summary.json",
      "caption": "home summary"
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary"
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace"
    },
    {
      "type": "other",
      "path": "evidence/home-trackers.json",
      "caption": "home trackers"
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home"
    },
    {
      "type": "screenshot",
      "path": "evidence/home.png",
      "caption": "home"
    },
    {
      "type": "dom",
      "path": "evidence/login-dom.json",
      "caption": "login dom"
    },
    {
      "type": "other",
      "path": "evidence/login-errors-probe.json",
      "caption": "login errors probe"
    },
    {
      "type": "screenshot",
      "path": "evidence/login-errors.png",
      "caption": "login errors"
    },
    {
      "type": "screenshot",
      "path": "evidence/login-mobile.png",
      "caption": "login mobile"
    },
    {
      "type": "other",
      "path": "evidence/login-probe.json",
      "caption": "login probe"
    },
    {
      "type": "other",
      "path": "evidence/manifest.json",
      "caption": "manifest"
    },
    {
      "type": "screenshot",
      "path": "evidence/not-found-mobile.png",
      "caption": "not found mobile"
    },
    {
      "type": "other",
      "path": "evidence/not-found-probe.json",
      "caption": "not found probe"
    },
    {
      "type": "other",
      "path": "evidence/not-found-status.txt",
      "caption": "not found status"
    },
    {
      "type": "dom",
      "path": "evidence/open-dom.json",
      "caption": "open dom"
    },
    {
      "type": "screenshot",
      "path": "evidence/open-mobile.png",
      "caption": "open mobile"
    },
    {
      "type": "other",
      "path": "evidence/open-probe.json",
      "caption": "open probe"
    },
    {
      "type": "other",
      "path": "evidence/robots-headers.txt",
      "caption": "robots headers"
    },
    {
      "type": "other",
      "path": "evidence/robots.txt",
      "caption": "robots"
    },
    {
      "type": "other",
      "path": "evidence/sitemap-headers.txt",
      "caption": "sitemap headers"
    },
    {
      "type": "other",
      "path": "evidence/sitemap.xml",
      "caption": "sitemap"
    }
  ],
  "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 mapped Modern Web Guidance comparison",
      "evidence": "The dark-mode screenshot remains white and the preference probe reports colorScheme \"normal\" with dark media matching.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Preference probe under reduce found no active animations on load; only loading/pull-to-refresh rules exist and were inactive.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-preferences.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Forced-colors and prefers-contrast emulation produced readable white text and outlined controls on black.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-contrast.png"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "DOM and platform probes found no authored transition names beyond the browser default and no cross-document transition rule across this MPA.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-platform-probe.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Screenshots and CSS probes found no parallax, reveal, or other scroll-linked animation, so no main-thread scroll animation anti-pattern is present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/create-ui-probe.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Representative routes use ordinary links, form controls, and a bounded pull-to-refresh CSS transition rather than custom pointermove gesture handling.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/create-ui-probe.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "Mobile screenshots of the long open-games and help pages show fixed top chrome but no progress, shrink, or other scroll-position cue.",
      "pathIds": [
        "open"
      ],
      "artifacts": [
        "evidence/open-mobile.png"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon",
      "evidence": "No tooltip, popover, or floating menu was present on the representative public templates, so anchored overlay positioning has no applicable target.",
      "reason": "No tooltip, popover, or floating menu was present on the representative public templates, so anchored overlay positioning has no applicable target."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Page-specific top-bar labels, h1 headings, row chevrons, and clear destination labels preserve orientation across listing and detail routes.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/open-mobile.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Load screenshots across six public templates show immediate content with no interstitial, popup, or obscuring consent wall.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "The create-game UI visibly presents a competition dropdown, while the DOM probe reports zero select, dialog, details, or popover elements.",
      "pathIds": [
        "create"
      ],
      "artifacts": [
        "evidence/create-ui-probe.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Mobile screenshots devote nearly all below-header space to the current task, with compact chrome and no decorative sidebars.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/game-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "At 360x800, layout reported scrollWidth 360, clientWidth 360, horizontalOverflowPx 0, and a viewport meta is present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "The platform probe found zero @container rules even though cards, game rows, forms, and header components recur at different widths.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-platform-probe.json"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "The focus/geometry probe measured footer controls such as DE at roughly 34 by 33 CSS pixels, while primary tiles are 50 by 50.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-a11y-probe.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "The first viewport states the service purpose and exposes a prominent Kostenloses Tippspiel starten action.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "The primary create route presents one ordered form with labelled game name, player name, email, password, and a submit action without an account-wall detour.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/create-mobile.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "After activating the create-game submit button with all fields empty, the screenshot stayed unchanged, the probe found no alert or invalid field, and focus fell to body.",
      "pathIds": [
        "create"
      ],
      "artifacts": [
        "evidence/create-errors.png"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Trace reports LCP 809 ms, zero blocking time, and layout CLS 0; Lighthouse reports LCP 1725 ms, CLS 0.0045, TBT 0.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Mobile layout observed CLS 0 with no shifts; Lighthouse CLS was 0.0045.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Trace captured zero long tasks and 0 ms total blocking time; Lighthouse TBT was also 0.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "Lighthouse reports about 300 ms render-blocking savings, 110 ms font-display savings, and 49 KiB cache savings; the HAR confirms parser-discovered CSS and scripts.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-lighthouse-summary.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "Lighthouse estimates 20 KiB unused CSS and 35 KiB legacy JavaScript on the home route.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-lighthouse-summary.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "Lighthouse fails link-name; the DOM probe lists the login icon, logo wrapper, and at least one game image link as unnamed controls.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-a11y-probe.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "Lighthouse accessibility scored 0.65 and specifically failed the color-contrast audit on the home page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-lighthouse-summary.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "Lighthouse fails landmark-one-main and the DOM probes report main:false on home, create, login, listing, and game templates.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-a11y-probe.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Mobile screenshots show readable 16 px body copy, clear spacing, wrapping without clipping, and strong heading hierarchy on all templates.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/help-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "The live viewport meta is width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no; Lighthouse fails meta-viewport.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-platform-probe.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Lighthouse best-practices scored 1.0 and reported no console-error audit failure during load.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-lighthouse-summary.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "The image primitive finds two images without full dimensions and 12 displayed at less than half their intrinsic width; Lighthouse flags unsized images.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-images.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "Lighthouse reports one BFCache failure reason, reducing instant back-navigation quality.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-lighthouse-summary.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "Discoverability evidence for the help route reports metaDescriptionPresentInRaw:null although its title and h1 are present.",
      "pathIds": [
        "help"
      ],
      "artifacts": [
        "evidence/help-discoverability.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Links have real href values, robots permits public pages, and no-JS discoverability reaches 100 percent of rendered content.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "The platform probe finds no canonical URL and /sitemap.xml returns a structured 404; robots.txt does not advertise a sitemap.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/sitemap.xml"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "The home probe finds generic Open Graph tags but no JSON-LD for the organization or app, and the title/description are less specific than visible content.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-platform-probe.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "The headers primitive confirms HTTPS, HSTS, nosniff, and X-Frame-Options, but reports no Content-Security-Policy.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Tracker capture found one third-party CMP origin, no known trackers, zero third-party cookies, and HAR shows only 76.5 KiB third-party transfer.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trackers.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "The login template exposes only email and password fields with no visible passkey option or WebAuthn capability in the inspected flow.",
      "pathIds": [
        "login"
      ],
      "artifacts": [
        "evidence/login-mobile.png"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "The headers primitive reports missing Referrer-Policy and Permissions-Policy, though HSTS and clickjacking protection are present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Raw HTML returns 200 with title, h1, description and 100 percent rendered-content coverage without JavaScript on home and help.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Representative menus, lists, forms, and detail pages rendered without clipped overlays or fragile blank states at mobile width.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/open-mobile.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "manifest.json has icons, theme_color, and display but no start_url; the platform probe reports serviceWorkerController:false.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/manifest.json"
      ],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "A nonexistent game route returns an explicit Tipprunde nicht gefunden state with causes and a direct service recovery link.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/not-found-mobile.png"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "The home page advertises 12 hreflang variants, but the CSS probe counted 88 physical left/right rules and zero logical-property rules.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-i18n-agent-probe.json"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "The site exposes localized domains via hreflang and renders German dates, numbers, labels, and copy consistently on the inspected German routes.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-platform-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "The page sets a first-party timezone session cookie, indicating explicit client-zone detection rather than assuming one fixed zone.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-cookies.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Home, create, login, public-game, and help screenshots show direct actions, no disguised ads, no confirmshaming, and no nagging consent wall.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/create-mobile.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "Empty create-game and login submissions produced no alert, aria-invalid state, focused error, or visible feedback in the captured state.",
      "pathIds": [
        "create"
      ],
      "artifacts": [
        "evidence/create-errors-probe.json"
      ],
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "The create-game probe shows empty autocomplete values for email and password, while the login template correctly uses username and current-password.",
      "pathIds": [
        "create"
      ],
      "artifacts": [
        "evidence/create-probe.json"
      ],
      "findingIds": [
        "F25"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Login, password recovery, registration, and membership actions are plainly labelled and reversible in the inspected unauthenticated surfaces.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/login-mobile.png"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct browser evidence and mapped Modern Web Guidance comparison",
      "evidence": "The image audit finds 15 legacy-format images, 12 oversized, no modern formats, and missing responsive sources; HAR attributes 384 KiB to images.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-images.json"
      ],
      "findingIds": [
        "F26"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Trace found no long tasks or continuing load work and HAR recorded 33 bounded requests with no errors or redirects.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "There is no autoplay media; third-party activity is limited to one CMP origin and 76.5 KiB, proportionate to consent handling.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon",
      "evidence": "No declared agent-facing intent or capability surface exists; this emerging opportunity is not required for the inspected public experience.",
      "reason": "No declared agent-facing intent or capability surface exists; this emerging opportunity is not required for the inspected public experience."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon",
      "evidence": "No user task in the inspected prediction, help, or account surfaces requires on-device inference.",
      "reason": "No user task in the inspected prediction, help, or account surfaces requires on-device inference."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-route recon",
      "evidence": "The inspected site is a server-rendered MPA with page-replacing navigation and no representative long-lived interaction to repeat without side effects.",
      "reason": "The inspected site is a server-rendered MPA with page-replacing navigation and no representative long-lived interaction to repeat without side effects."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "Baseline heap is proportionate for the page at 98,549 nodes and 4,826,344 bytes self size, with no heavy application framework detected.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-heap-baseline.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Direct browser evidence across representative routes",
      "evidence": "The heap summary exposes no Detached constructor among top retained constructors, and the static MPA showed no ongoing timers or unbounded list behavior.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-heap-baseline-summary.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05",
        "F06"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F08",
        "F09"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F10",
        "F11",
        "F12",
        "F13"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F14",
        "F15"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F16",
        "F17",
        "F18"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F19",
        "F20",
        "F21"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F24",
        "F25"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F26"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "All checks are contextually not applicable because the site declares no agent-facing intent or AI capability surface."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Public landing page and primary start-game call to action; represents global chrome and marketing entry.",
      "url": "https://www.kicktipp.de/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "forced-colors: active"
      ],
      "result": "issues"
    },
    {
      "id": "create",
      "description": "Primary game-creation form; represents the core conversion and validation journey.",
      "url": "https://www.kicktipp.de/info/tippspiel/anlegen",
      "conditions": [
        "viewport: 360x800",
        "empty submit"
      ],
      "result": "issues"
    },
    {
      "id": "open",
      "description": "Open-games listing; represents repeated cards and a long browse surface.",
      "url": "https://www.kicktipp.de/info/tippspiel/offen/",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "login",
      "description": "Authentication form and account recovery entry.",
      "url": "https://www.kicktipp.de/info/profil/login",
      "conditions": [
        "viewport: 360x800",
        "empty submit"
      ],
      "result": "issues"
    },
    {
      "id": "game",
      "description": "Public WM game detail; represents a real community/game template and membership call to action.",
      "url": "https://www.kicktipp.de/wm-tippspiel/",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "help",
      "description": "Help index; represents content/navigation support pages and no-JS reachability.",
      "url": "https://www.kicktipp.de/info/service/hilfe/",
      "conditions": [
        "viewport: 360x800",
        "JavaScript disabled crawler view"
      ],
      "result": "issues"
    },
    {
      "id": "not-found",
      "description": "Invalid game route; represents HTTP/application failure recovery.",
      "url": "https://www.kicktipp.de/definitely-not-a-real-page-web-uplift",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "System dark mode leaves the page light",
      "evidence": "The dark-mode screenshot remains white and the preference probe reports colorScheme \"normal\" with dark media matching.",
      "suggestedFix": "Declare color-scheme and provide preference-driven dark surface, text, control, and image colors.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-dark.png"
      ]
    },
    {
      "id": "F02",
      "severity": "low",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "cross-document-transitions",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Route changes do not use cross-document View Transitions",
      "evidence": "DOM and platform probes found no authored transition names beyond the browser default and no cross-document transition rule across this MPA.",
      "suggestedFix": "Add @view-transition { navigation: auto } and stable view-transition-name values for shared route chrome, with reduced-motion handling.",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-platform-probe.json"
      ]
    },
    {
      "id": "F03",
      "severity": "low",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "shrinking-header-on-scroll",
      "guidanceCategory": "user-experience",
      "confidence": "high",
      "summary": "Long pages use static chrome without scroll-state guidance",
      "evidence": "Mobile screenshots of the long open-games and help pages show fixed top chrome but no progress, shrink, or other scroll-position cue.",
      "suggestedFix": "Use scroll-state container queries or a lightweight progress affordance on long listings and help indexes.",
      "effort": "small",
      "pathId": "open",
      "url": "https://www.kicktipp.de/info/tippspiel/offen/",
      "artifacts": [
        "evidence/open-mobile.png"
      ]
    },
    {
      "id": "F04",
      "severity": "medium",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "branded-select-styling",
      "guidanceCategory": "forms",
      "confidence": "high",
      "summary": "The competition picker is not exposed as a native select",
      "evidence": "The create-game UI visibly presents a competition dropdown, while the DOM probe reports zero select, dialog, details, or popover elements.",
      "suggestedFix": "Use a native select with branded styling, or the customizable select pattern with a semantic fallback.",
      "effort": "medium",
      "pathId": "create",
      "url": "https://www.kicktipp.de/info/tippspiel/anlegen",
      "artifacts": [
        "evidence/create-ui-probe.json"
      ]
    },
    {
      "id": "F05",
      "severity": "low",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "css",
      "confidence": "high",
      "summary": "Responsive behavior relies on viewport styling only",
      "evidence": "The platform probe found zero @container rules even though cards, game rows, forms, and header components recur at different widths.",
      "suggestedFix": "Add container-type to reusable regions and adapt their children with size container queries where reuse demands it.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-platform-probe.json"
      ]
    },
    {
      "id": "F06",
      "severity": "medium",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Some touch targets are below the recommended target size",
      "evidence": "The focus/geometry probe measured footer controls such as DE at roughly 34 by 33 CSS pixels, while primary tiles are 50 by 50.",
      "suggestedFix": "Increase compact footer links to at least a 44 by 44 CSS pixel activation area without crowding the text.",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-a11y-probe.json"
      ]
    },
    {
      "id": "F07",
      "severity": "high",
      "principleId": "support-core-task-success",
      "principleCheckId": "clear-system-state-and-recovery",
      "guidanceId": "accessible-error-announcement",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Empty form submission gives no visible or focused recovery state",
      "evidence": "After activating the create-game submit button with all fields empty, the screenshot stayed unchanged, the probe found no alert or invalid field, and focus fell to body.",
      "suggestedFix": "Validate after submission, mark invalid controls, move focus to a summary or first error, and provide an actionable message.",
      "effort": "medium",
      "pathId": "create",
      "url": "https://www.kicktipp.de/info/tippspiel/anlegen",
      "artifacts": [
        "evidence/create-errors.png"
      ]
    },
    {
      "id": "F08",
      "severity": "medium",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-preload-priority",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "Resource delivery leaves avoidable render-blocking and cache work",
      "evidence": "Lighthouse reports about 300 ms render-blocking savings, 110 ms font-display savings, and 49 KiB cache savings; the HAR confirms parser-discovered CSS and scripts.",
      "suggestedFix": "Shorten critical chains, set font-display, review cache lifetimes, and prioritize only the actual LCP resource.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-lighthouse-summary.json"
      ]
    },
    {
      "id": "F09",
      "severity": "low",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "The page ships avoidable CSS and legacy JavaScript",
      "evidence": "Lighthouse estimates 20 KiB unused CSS and 35 KiB legacy JavaScript on the home route.",
      "suggestedFix": "Split route CSS and stop transpiling features already supported by the target Baseline.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-lighthouse-summary.json"
      ]
    },
    {
      "id": "F10",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Several icon links have no accessible name",
      "evidence": "Lighthouse fails link-name; the DOM probe lists the login icon, logo wrapper, and at least one game image link as unnamed controls.",
      "suggestedFix": "Give each icon-only link a concise accessible name and ensure linked images contribute an appropriate name.",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-a11y-probe.json"
      ]
    },
    {
      "id": "F11",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Foreground and background colors fail WCAG contrast",
      "evidence": "Lighthouse accessibility scored 0.65 and specifically failed the color-contrast audit on the home page.",
      "suggestedFix": "Adjust the failing foreground/background token pairs to meet WCAG AA in every state.",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-lighthouse-summary.json"
      ]
    },
    {
      "id": "F12",
      "severity": "medium",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "confidence": "high",
      "summary": "Pages lack a main landmark",
      "evidence": "Lighthouse fails landmark-one-main and the DOM probes report main:false on home, create, login, listing, and game templates.",
      "suggestedFix": "Wrap each page primary content in main and retain one logical h1 and visible focus treatment.",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-a11y-probe.json"
      ]
    },
    {
      "id": "F13",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "css",
      "confidence": "high",
      "summary": "The viewport disables pinch zoom",
      "evidence": "The live viewport meta is width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no; Lighthouse fails meta-viewport.",
      "suggestedFix": "Remove user-scalable=no and the restrictive maximum-scale so users can zoom to at least 200 percent.",
      "effort": "trivial",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-platform-probe.json"
      ]
    },
    {
      "id": "F14",
      "severity": "medium",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "Image dimensions and delivery are not consistently sound",
      "evidence": "The image primitive finds two images without full dimensions and 12 displayed at less than half their intrinsic width; Lighthouse flags unsized images.",
      "suggestedFix": "Set width and height on every img and serve responsive candidates with srcset and sizes.",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-images.json"
      ]
    },
    {
      "id": "F15",
      "severity": "low",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "The home page is not eligible for back-forward cache",
      "evidence": "Lighthouse reports one BFCache failure reason, reducing instant back-navigation quality.",
      "suggestedFix": "Inspect the reported BFCache blocker and remove unload or other disqualifying behavior.",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-lighthouse-summary.json"
      ]
    },
    {
      "id": "F16",
      "severity": "low",
      "principleId": "be-discoverable",
      "principleCheckId": "title-and-description",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "Some representative pages omit a meta description",
      "evidence": "Discoverability evidence for the help route reports metaDescriptionPresentInRaw:null although its title and h1 are present.",
      "suggestedFix": "Add a unique, concise description to help and other index templates.",
      "effort": "trivial",
      "pathId": "help",
      "url": "https://www.kicktipp.de/info/service/hilfe/",
      "artifacts": [
        "evidence/help-discoverability.json"
      ]
    },
    {
      "id": "F17",
      "severity": "medium",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "Canonical and sitemap signals are incomplete",
      "evidence": "The platform probe finds no canonical URL and /sitemap.xml returns a structured 404; robots.txt does not advertise a sitemap.",
      "suggestedFix": "Publish canonical links per public template and a sitemap, then reference it from robots.txt.",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/sitemap.xml"
      ]
    },
    {
      "id": "F18",
      "severity": "low",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "Rich entity metadata stops at generic Open Graph tags",
      "evidence": "The home probe finds generic Open Graph tags but no JSON-LD for the organization or app, and the title/description are less specific than visible content.",
      "suggestedFix": "Add accurate Organization or SoftwareApplication JSON-LD and route-specific social metadata.",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-platform-probe.json"
      ]
    },
    {
      "id": "F19",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "confidence": "high",
      "summary": "Content Security Policy is missing",
      "evidence": "The headers primitive confirms HTTPS, HSTS, nosniff, and X-Frame-Options, but reports no Content-Security-Policy.",
      "suggestedFix": "Deploy a nonce or hash based CSP, starting in report-only mode, then enforce it after removing violations.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-headers.json"
      ]
    },
    {
      "id": "F20",
      "severity": "medium",
      "principleId": "be-private-and-secure",
      "principleCheckId": "in-context-permissions-and-modern-auth",
      "guidanceId": "passkeys",
      "guidanceCategory": "identity",
      "confidence": "high",
      "summary": "Authentication offers passwords without a passkey path",
      "evidence": "The login template exposes only email and password fields with no visible passkey option or WebAuthn capability in the inspected flow.",
      "suggestedFix": "Offer passkey registration and authentication alongside the existing recovery path.",
      "effort": "large",
      "pathId": "login",
      "url": "https://www.kicktipp.de/info/profil/login",
      "artifacts": [
        "evidence/login-mobile.png"
      ]
    },
    {
      "id": "F21",
      "severity": "medium",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "confidence": "high",
      "summary": "Referrer and Permissions policies are absent",
      "evidence": "The headers primitive reports missing Referrer-Policy and Permissions-Policy, though HSTS and clickjacking protection are present.",
      "suggestedFix": "Set a strict-origin-when-cross-origin or stricter referrer policy and a least-privilege Permissions-Policy.",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-headers.json"
      ]
    },
    {
      "id": "F22",
      "severity": "medium",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "confidence": "high",
      "summary": "The app manifest is incomplete and no service worker controls the page",
      "evidence": "manifest.json has icons, theme_color, and display but no start_url; the platform probe reports serviceWorkerController:false.",
      "suggestedFix": "Complete the manifest and add an offline fallback service worker for the app shell and recovery page.",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/manifest.json"
      ]
    },
    {
      "id": "F23",
      "severity": "medium",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "language-detection",
      "guidanceCategory": "internationalization",
      "confidence": "high",
      "summary": "Localized variants rely on physical CSS directions",
      "evidence": "The home page advertises 12 hreflang variants, but the CSS probe counted 88 physical left/right rules and zero logical-property rules.",
      "suggestedFix": "Migrate layout spacing and positioning to inline/block logical properties and verify an RTL locale.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-i18n-agent-probe.json"
      ]
    },
    {
      "id": "F24",
      "severity": "high",
      "principleId": "be-trustworthy",
      "principleCheckId": "humane-error-handling",
      "guidanceId": "validate-input-after-interaction",
      "guidanceCategory": "forms",
      "confidence": "high",
      "summary": "Form validation does not communicate errors humanely",
      "evidence": "Empty create-game and login submissions produced no alert, aria-invalid state, focused error, or visible feedback in the captured state.",
      "suggestedFix": "Validate after interaction, use :user-invalid, associate field messages, and announce a summary with aria-live.",
      "effort": "medium",
      "pathId": "create",
      "url": "https://www.kicktipp.de/info/tippspiel/anlegen",
      "artifacts": [
        "evidence/create-errors-probe.json"
      ]
    },
    {
      "id": "F25",
      "severity": "medium",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "autofill-sign-up-form",
      "guidanceCategory": "forms",
      "confidence": "high",
      "summary": "Account creation fields omit autocomplete tokens",
      "evidence": "The create-game probe shows empty autocomplete values for email and password, while the login template correctly uses username and current-password.",
      "suggestedFix": "Add email and new-password autocomplete tokens to account-creation controls.",
      "effort": "trivial",
      "pathId": "create",
      "url": "https://www.kicktipp.de/info/tippspiel/anlegen",
      "artifacts": [
        "evidence/create-probe.json"
      ]
    },
    {
      "id": "F26",
      "severity": "medium",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "guidanceCategory": "performance",
      "confidence": "high",
      "summary": "Game logos are oversized legacy PNGs",
      "evidence": "The image audit finds 15 legacy-format images, 12 oversized, no modern formats, and missing responsive sources; HAR attributes 384 KiB to images.",
      "suggestedFix": "Generate AVIF or WebP variants at the 48 to 50 CSS pixel display sizes and use srcset/sizes.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.kicktipp.de/",
      "artifacts": [
        "evidence/home-images.json"
      ]
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Restore inclusive access: names, contrast, landmarks, zoom, and target sizes",
      "priority": 1,
      "findingIds": [
        "F10",
        "F11",
        "F12",
        "F13",
        "F06"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Make form validation visible, focused, and announced",
      "priority": 2,
      "findingIds": [
        "F07",
        "F24"
      ],
      "guidanceId": "validate-input-after-interaction",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Deploy CSP and least-privilege browser policies",
      "priority": 3,
      "findingIds": [
        "F19",
        "F21"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Optimize responsive image delivery and reserve image space",
      "priority": 4,
      "findingIds": [
        "F14",
        "F26"
      ],
      "guidanceId": "deliver-optimized-decorative-images",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Add preference-driven dark mode",
      "priority": 5,
      "findingIds": [
        "F01"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Complete canonical, sitemap, descriptions, and entity metadata",
      "priority": 6,
      "findingIds": [
        "F16",
        "F17",
        "F18"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Improve resource delivery and trim unused or legacy code",
      "priority": 7,
      "findingIds": [
        "F08",
        "F09",
        "F15"
      ],
      "guidanceId": "optimize-preload-priority",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Modernize responsive components and semantic controls",
      "priority": 8,
      "findingIds": [
        "F04",
        "F05"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Add passkeys and account-creation autocomplete",
      "priority": 9,
      "findingIds": [
        "F20",
        "F25"
      ],
      "guidanceId": "passkeys",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Complete PWA resilience with start URL and offline fallback",
      "priority": 10,
      "findingIds": [
        "F22"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T11",
      "title": "Migrate localized layouts to logical CSS properties",
      "priority": 11,
      "findingIds": [
        "F23"
      ],
      "guidanceId": "language-detection",
      "status": "open"
    },
    {
      "id": "T12",
      "title": "Add route and scroll-state navigation cues",
      "priority": 12,
      "findingIds": [
        "F02",
        "F03"
      ],
      "guidanceId": "cross-document-transitions",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 7,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-19T00-49-55-739Z"
}
