{
  "url": "https://www.dafont.com",
  "auditedAt": "2026-07-22T03:28:34.984Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Atomic audit completed across 58 checks. Findings: {\"critical\":5,\"high\":16,\"medium\":11,\"low\":3}.",
  "page": {
    "appType": "mpa",
    "framework": "server-rendered legacy PHP/HTML",
    "notes": "Public multilingual font archive. Representative MPA templates audited: home, theme listing, font detail, search, login, FAQ, localized home and 404 recovery."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "axe-core",
    "lighthouse",
    "Modern Web Guidance"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "defer-rendering-heavy-content",
    "privacy",
    "security",
    "light-dismiss-a-dialog",
    "forms",
    "autofill-sign-in-form",
    "performance",
    "optimize-script-priority",
    "optimize-image-priority",
    "coordinate-global-events",
    "support-global-calendar-systems",
    "translator",
    "same-document-transitions",
    "shrinking-header-on-scroll",
    "css-layout",
    "improve-text-layout-and-legibility",
    "fluid-scaling",
    "html",
    "flicker-free-client-side-ab-testing",
    "deliver-optimized-decorative-images",
    "deprioritize-background-fetches"
  ],
  "artifacts": [
    {
      "type": "other",
      "path": "evidence/404-probe.json",
      "caption": "404 probe"
    },
    {
      "type": "other",
      "path": "evidence/axe-detail.json",
      "caption": "axe detail",
      "findingIds": [
        "F13"
      ]
    },
    {
      "type": "other",
      "path": "evidence/axe-home.json",
      "caption": "axe home",
      "findingIds": [
        "F05",
        "F13"
      ]
    },
    {
      "type": "other",
      "path": "evidence/axe-listing.json",
      "caption": "axe listing",
      "findingIds": [
        "F13",
        "F14"
      ]
    },
    {
      "type": "other",
      "path": "evidence/axe-login.json",
      "caption": "axe login",
      "findingIds": [
        "F13",
        "F15",
        "F30"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies",
      "findingIds": [
        "F23"
      ]
    },
    {
      "type": "other",
      "path": "evidence/crawl-files.json",
      "caption": "crawl files",
      "findingIds": [
        "F21"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/detail-desktop.png",
      "caption": "detail desktop",
      "findingIds": [
        "F05",
        "F09",
        "F27"
      ]
    },
    {
      "type": "other",
      "path": "evidence/detail-links.json",
      "caption": "detail links"
    },
    {
      "type": "other",
      "path": "evidence/detail-probe.json",
      "caption": "detail probe"
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability-detail",
      "caption": "discoverability detail",
      "findingIds": [
        "F22"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-detail-crawler.png",
      "caption": "discoverability detail crawler"
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-detail-rendered.png",
      "caption": "discoverability detail rendered"
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability-home",
      "caption": "discoverability home"
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-home-crawler.png",
      "caption": "discoverability home crawler"
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-home-rendered.png",
      "caption": "discoverability home rendered"
    },
    {
      "type": "other",
      "path": "evidence/document-assets-probe.json",
      "caption": "document assets probe",
      "findingIds": [
        "F11",
        "F18"
      ]
    },
    {
      "type": "other",
      "path": "evidence/download-links.json",
      "caption": "download links"
    },
    {
      "type": "screenshot",
      "path": "evidence/faq-mobile.png",
      "caption": "faq mobile",
      "findingIds": [
        "F03",
        "F04"
      ]
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers",
      "findingIds": [
        "F23",
        "F26"
      ]
    },
    {
      "type": "other",
      "path": "evidence/high-contrast-probe.json",
      "caption": "high contrast probe"
    },
    {
      "type": "heap",
      "path": "evidence/home-baseline.heapsnapshot",
      "caption": "home baseline"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": [
        "F04",
        "F09",
        "F24",
        "F29"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-high-contrast.png",
      "caption": "home high contrast"
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout",
      "findingIds": [
        "F06",
        "F16",
        "F17",
        "F20"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "findingIds": [
        "F04",
        "F06",
        "F08",
        "F16"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-recon.json",
      "caption": "home recon",
      "findingIds": [
        "F15",
        "F20"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": [
        "F11",
        "F12",
        "F24",
        "F34",
        "F35"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": [
        "F10"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace"
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home",
      "findingIds": [
        "F11"
      ]
    },
    {
      "type": "other",
      "path": "evidence/i18n-fr.json",
      "caption": "i18n fr",
      "findingIds": [
        "F07",
        "F28"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images.json",
      "caption": "images",
      "findingIds": [
        "F18",
        "F33"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home.json",
      "caption": "lighthouse home",
      "findingIds": [
        "F10",
        "F14",
        "F18",
        "F19"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/listing-desktop.png",
      "caption": "listing desktop",
      "findingIds": [
        "F09"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/login-desktop.png",
      "caption": "login desktop",
      "findingIds": [
        "F25",
        "F32"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/login-invalid.png",
      "caption": "login invalid",
      "findingIds": [
        "F30"
      ]
    },
    {
      "type": "other",
      "path": "evidence/login-probe.json",
      "caption": "login probe",
      "findingIds": [
        "F08",
        "F17",
        "F22",
        "F25",
        "F31",
        "F32"
      ]
    },
    {
      "type": "other",
      "path": "evidence/platform-probe.json",
      "caption": "platform probe",
      "findingIds": [
        "F02",
        "F03",
        "F05",
        "F07"
      ]
    },
    {
      "type": "other",
      "path": "evidence/preferences-probe.json",
      "caption": "preferences probe",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/search-desktop.png",
      "caption": "search desktop"
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets"
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers",
      "findingIds": [
        "F12",
        "F24",
        "F34"
      ]
    }
  ],
  "config": {
    "loaded": false
  },
  "coverage": {
    "catalogVersion": "modern-web-guidance@0.0.172",
    "catalogChecksum": "sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7",
    "expected": 58,
    "recorded": 58,
    "judged": 58,
    "blocked": 0,
    "notRun": 0,
    "missing": 0,
    "unknown": 0,
    "duplicates": 0,
    "complete": true
  },
  "checkOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-color-scheme",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "The dark-media probe matched prefers-color-scheme: dark but computed body background remained rgb(255,255,255), text rgb(0,0,0), and color-scheme was normal. The dark screenshot is visually unchanged.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/preferences-probe.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "evaluate under reduced-motion",
      "evidence": "No page animations were returned by document.getAnimations(), so there is no non-essential motion to suppress.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences-probe.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "prefers-contrast emulation and screenshot",
      "evidence": "Under prefers-contrast: more, core text/controls remained black on white and visible; standard contrast defects are recorded separately.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/high-contrast-probe.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "The platform probe found no view-transition CSS, and representative navigation uses classic MPA links with no cross-document transition rule.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "high",
      "method": "CSS/listener probe",
      "evidence": "No scroll-linked effects, animation timelines, inline scroll handlers or main-thread scroll anti-patterns were present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "CSS/listener probe and walkthrough",
      "evidence": "The site uses native links/forms and no custom pointer/touchmove handlers that fight platform gestures.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "medium",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "The platform probe found no scroll-state/container-query support; the 2,178px mobile layout and long FAQ screenshot show static chrome and no progress or compact sticky navigation.",
      "pathIds": [
        "faq"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/faq-mobile.png"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "pass",
      "confidence": "high",
      "method": "overlay inventory",
      "evidence": "No tooltip/menu/popover requiring attachment to an anchor was present; the problematic consent modal is viewport-modal and covered separately.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "representative walkthrough",
      "evidence": "Theme breadcrumb text and explicit font/detail/download labels preserve orientation across classic page navigation.",
      "pathIds": [
        "listing",
        "detail"
      ],
      "artifacts": [
        "evidence/download-links.json"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "Desktop, mobile, dark and FAQ screenshots show a viewport-dimming modal before any interaction; it demands a choice about 272 partners before the font catalog can be used.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/faq-mobile.png"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "axe found an untitled iframe; the DOM/platform probe found zero dialog, popover or details elements, while screenshots show a modal surface. In one detail capture its iframe content rendered blank while still blocking the page.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/platform-probe.json",
        "evidence/detail-desktop.png"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "visual review after consent state",
      "evidence": "The underlying catalog uses a compact header and content-dense font list; excessive interruption is isolated in separate consent findings.",
      "pathIds": [
        "login",
        "listing"
      ],
      "artifacts": [
        "evidence/login-desktop.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "At a requested 360x800 viewport, layout metrics reported no viewport meta and an effective 980px layout/visual viewport at scale 0.367; the screenshot shows tiny desktop content rather than reflow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "The platform probe found no container queries, while French CSS evidence includes legacy 965px padding/margin compensation and floated physical columns.",
      "pathIds": [
        "listing"
      ],
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/i18n-fr.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "Login probe measured text fields and buttons at 21px high and the remember checkbox at 13x13px; the scaled mobile page makes them smaller still. Keyboard focus remained visible, but touch sizing is inadequate.",
      "pathIds": [
        "login"
      ],
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/home-mobile.png"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "screenshots and DOM walkthrough",
      "evidence": "Title/description identify a downloadable font archive; font rows expose explicit Download actions and detail has a 101x32 Download link.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/download-links.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "First-load screenshots on home, listing, detail and FAQ archetypes show the 272-partner consent wall covering the primary catalog and download controls.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/listing-desktop.png",
        "evidence/detail-desktop.png"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "404 walkthrough",
      "evidence": "A representative missing URL showed an explicit 404 message and links back to each language home.",
      "pathIds": [
        "error-404"
      ],
      "artifacts": [
        "evidence/404-probe.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "Lighthouse measured LCP 7.0s, Speed Index 4.0s and time-to-interactive 7.0s, producing a performance score of 0.68; the controlled desktop trace was faster at 1.06s LCP.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "layout observer and Lighthouse",
      "evidence": "Layout observer measured CLS 0.004 and Lighthouse measured CLS 0, both within the good range.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "trace and Lighthouse",
      "evidence": "Trace found zero long tasks and 0ms TBT; Lighthouse reported only 70ms TBT.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "HAR summary lists many first-party images/CSS without useful cache headers and confirms parser-blocking classic scripts df5.js, key.js, alpha.js and themesv9_en.js without async/defer/module.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json",
        "evidence/document-assets-probe.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "The HAR transferred 845,527 bytes; 771,937 bytes (91%) were third-party, including a 355,942-byte CMP, 257,136 bytes of ad scripts and 154,650 bytes from Tag Manager.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "axe found 19 missing image alternatives, an unlabeled search input, eight unnamed links and an untitled iframe on home; listing/detail add unnamed selects, and login username/password are unlabeled.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/axe-listing.json",
        "evidence/axe-detail.json",
        "evidence/axe-login.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "Lighthouse reports 3.54:1 for 11px #888 text on white; axe found 3 home consent failures and 9 listing failures.",
      "pathIds": [
        "listing"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/axe-listing.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "Home has no headings; login only has H3 Login. axe reports no main landmark, dozens of regions outside landmarks, unnamed links and tabindex=1 on search.",
      "pathIds": [
        "login"
      ],
      "artifacts": [
        "evidence/home-recon.json",
        "evidence/axe-login.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "The 360px screenshot scales a 980px canvas to 0.367, reducing already-small 11px metadata and dense menus to illegible sizes.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "No viewport meta was present; the 360px test stayed 980px wide at page scale 0.367, while login controls measured 13-21px high.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/login-probe.json"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse console audit",
      "evidence": "Lighthouse errors-in-console audit passed with no items.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "The page declares HTML 4 Transitional and ISO-8859-1/Windows-1252; Lighthouse failed its doctype audit. Images primitive found 19 legacy PNG/GIF images, 2 missing dimensions and 7 below-fold images without lazy loading.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/document-assets-probe.json",
        "evidence/images.json",
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "Lighthouse reports two BFCache blockers: Cache-Control: no-store on the main resource and on a JavaScript network response.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "DOM and discoverability",
      "evidence": "Homepage and font detail retain descriptive title/meta text in raw HTML; Lighthouse title and meta-description audits passed.",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/discoverability-detail"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "Lighthouse and DOM evidence confirm real href links and crawlability, but the page has no viewport meta and renders a 980px desktop canvas at mobile scale.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-recon.json"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "The homepage has a canonical URL and robots permits principal pages, but /sitemap.xml returns a styled 404 despite many catalog detail URLs.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/crawl-files.json"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "The login/general probe found zero JSON-LD and Open Graph tags; detail discoverability confirms a public font entity with title/H1/description that could be represented explicitly.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/discoverability-detail"
      ],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "Headers primitive found no CSP, HSTS, X-Content-Type-Options, clickjacking, Referrer-Policy or Permissions-Policy. redirector-rootdir is not Secure and both observed cookies use SameSite=None.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "Trackers found seven third-party origins and Google Ads, Tag Manager and Analytics; HAR shows third parties account for 91% of transferred bytes while the modal describes sharing with 272 partners.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "No permission prompt was detected on load, but login exposes only username/password, with no autocomplete tokens and no visible passkey/WebAuthn option.",
      "pathIds": [
        "login"
      ],
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/login-desktop.png"
      ],
      "findingIds": [
        "F25"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "Headers evidence found no HSTS, clickjacking protection, CSP/frame-ancestors, Referrer-Policy or Permissions-Policy.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F26"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "raw HTML comparison",
      "evidence": "Homepage/detail are server-rendered, not JS shells; raw HTML returned 200 and retained title/description/core content (49%/55% token coverage).",
      "pathIds": [
        "home",
        "detail"
      ],
      "artifacts": [
        "evidence/discoverability-home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "The detail-page capture shows an empty white consent panel over dimmed content; because the overlay is third-party and modal, its partial failure prevents access to the download flow.",
      "pathIds": [
        "detail"
      ],
      "artifacts": [
        "evidence/detail-desktop.png"
      ],
      "findingIds": [
        "F27"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from route and interaction recon",
      "evidence": "DaFont is a document-oriented public MPA archive, not an installed app; offline installability is not required for its core download catalog.",
      "reason": "DaFont is a document-oriented public MPA archive, not an installed app; offline installability is not required for its core download catalog.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "404 walkthrough",
      "evidence": "A failed route gives a concise 404 state with recovery links instead of a blank shell.",
      "pathIds": [
        "error-404"
      ],
      "artifacts": [
        "evidence/404-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "French probe reported lang=fr, but no dir and numerous fixed left/right floats, offsets, padding and text alignment rules, including the 965px shell.",
      "pathIds": [
        "french-home"
      ],
      "artifacts": [
        "evidence/i18n-fr.json"
      ],
      "findingIds": [
        "F28"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "localized rendering probe",
      "evidence": "French route sets lang=fr, translates labels and formats counts with French spacing conventions (e.g. 21 448).",
      "pathIds": [
        "french-home"
      ],
      "artifacts": [
        "evidence/i18n-fr.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from route and interaction recon",
      "evidence": "Representative pages show no schedules, event times or timezone-sensitive data to format.",
      "reason": "Representative pages show no schedules, event times or timezone-sensitive data to format.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "The blocking dialog foregrounds a red Accept all button while Do not accept is a small underlined text link; it describes sharing extensive data with 272 partners and forces a decision before use.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F29"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "After activating Login with empty fields, the screenshot returned to the same form with no visible field-level or summary error; controls lack required/ARIA validation semantics.",
      "pathIds": [
        "login"
      ],
      "artifacts": [
        "evidence/login-invalid.png",
        "evidence/axe-login.json"
      ],
      "findingIds": [
        "F30"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "Login probe shows empty autocomplete values for username and password, preventing reliable password-manager/autofill assistance.",
      "pathIds": [
        "login"
      ],
      "artifacts": [
        "evidence/login-probe.json"
      ],
      "findingIds": [
        "F31"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "The login archetype offers username/password and remember-me but no passkey option or explicit modern reauthentication path.",
      "pathIds": [
        "login"
      ],
      "artifacts": [
        "evidence/login-desktop.png",
        "evidence/login-probe.json"
      ],
      "findingIds": [
        "F32"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "Images primitive found 19/19 images in PNG/GIF, no modern formats, seven below-fold images without lazy loading, two missing dimensions and one missing responsive source.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images.json"
      ],
      "findingIds": [
        "F33"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "Only 73,590 transferred bytes were first-party, versus 771,937 third-party bytes for consent, ads and analytics; these scripts load during the initial view.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F34"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Direct evidence from the referenced artifact(s) on representative path(s)",
      "evidence": "Eight third-party requests deliver 91% of page bytes; the three largest vendor scripts are 355,942, 190,639 and 154,650 bytes.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F35"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from route and interaction recon",
      "evidence": "No declared agent-facing intent exists; this public font archive exposes ordinary crawlable pages and downloads, so emerging WebMCP tools are an opportunity rather than a requirement.",
      "reason": "No declared agent-facing intent exists; this public font archive exposes ordinary crawlable pages and downloads, so emerging WebMCP tools are an opportunity rather than a requirement.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from route and interaction recon",
      "evidence": "No summarisation, generation or other inference task is part of the representative font-browsing journey.",
      "reason": "No summarisation, generation or other inference task is part of the representative font-browsing journey.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from route and interaction recon",
      "evidence": "This is a navigation-based MPA with no long-lived modal/route/feed interaction to repeat meaningfully; a synthetic loop would not represent user behaviour.",
      "reason": "This is a navigation-based MPA with no long-lived modal/route/feed interaction to repeat meaningfully; a synthetic loop would not represent user behaviour.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "heap summary and metrics",
      "evidence": "Single-state heap was 13.53MB self-size with 223,531 heap nodes and ~12.9MB used JS heap, proportionate to the page plus consent/ad code.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-baseline.heapsnapshot"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "heap constructor review and listener probe",
      "evidence": "Single-state heap top constructors contained no Detached* population, and the page had no inline scroll/pointer listener accumulation signal.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-baseline.heapsnapshot"
      ]
    }
  ],
  "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",
        "F05"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06",
        "F07",
        "F08"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F10",
        "F11",
        "F12"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F13",
        "F14",
        "F15",
        "F16",
        "F17"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F18",
        "F19"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F20",
        "F21",
        "F22"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F23",
        "F24",
        "F25",
        "F26"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F27"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F28"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F29",
        "F30",
        "F31",
        "F32"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F33",
        "F34",
        "F35"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "No declared agent-facing intent exists; this public font archive exposes ordinary crawlable pages and downloads, so emerging WebMCP tools are an opportunity rather than a requirement. No summarisation, generation or other inference task is part of the representative font-browsing journey."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and font discovery entry; global preferences, consent, performance, security and network.",
      "url": "https://www.dafont.com/",
      "conditions": [
        "desktop",
        "360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "prefers-contrast: more",
        "no-JavaScript crawler"
      ],
      "result": "issues"
    },
    {
      "id": "listing",
      "description": "Sans-serif theme listing representing category/result lists and preview controls.",
      "url": "https://www.dafont.com/theme.php?cat=501",
      "conditions": [
        "desktop",
        "axe-core"
      ],
      "result": "issues"
    },
    {
      "id": "detail",
      "description": "Matcha Mint font detail representing metadata, custom preview and primary download action.",
      "url": "https://www.dafont.com/matcha-mint.font",
      "conditions": [
        "desktop",
        "axe-core",
        "no-JavaScript crawler"
      ],
      "result": "issues"
    },
    {
      "id": "search",
      "description": "Search results for serif, representing the primary query journey.",
      "url": "https://www.dafont.com/search.php?q=serif",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "login",
      "description": "Account sign-in representing forms, autofill, validation and authentication.",
      "url": "https://www.dafont.com/login.php",
      "conditions": [
        "desktop",
        "keyboard focus",
        "blank submission",
        "axe-core"
      ],
      "result": "issues"
    },
    {
      "id": "faq",
      "description": "Long-form help content representing documentation and scroll orientation.",
      "url": "https://www.dafont.com/faq.php",
      "conditions": [
        "360x800"
      ],
      "result": "issues"
    },
    {
      "id": "french-home",
      "description": "French locale representing translated routes and locale formatting.",
      "url": "https://www.dafont.com/fr/",
      "conditions": [
        "desktop",
        "DOM/CSS probe"
      ],
      "result": "issues"
    },
    {
      "id": "error-404",
      "description": "Missing route representing HTTP failure and recovery.",
      "url": "https://www.dafont.com/404-not-found-audit",
      "conditions": [
        "desktop"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "severity": "medium",
      "confidence": "high",
      "summary": "The first-party interface stays light when the user requests dark mode.",
      "evidence": "The dark-media probe matched prefers-color-scheme: dark but computed body background remained rgb(255,255,255), text rgb(0,0,0), and color-scheme was normal. The dark screenshot is visually unchanged.",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/preferences-probe.json"
      ],
      "suggestedFix": "Declare color-scheme: light dark and retint first-party surfaces with prefers-color-scheme or light-dark(); ensure the consent UI follows the same preference.",
      "effort": "medium"
    },
    {
      "id": "F02",
      "pathId": "detail",
      "url": "https://www.dafont.com/matcha-mint.font",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "severity": "low",
      "confidence": "high",
      "summary": "Full-page navigation swaps are abrupt and do not use View Transitions.",
      "evidence": "The platform probe found no view-transition CSS, and representative navigation uses classic MPA links with no cross-document transition rule.",
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Add @view-transition { navigation: auto } and stable view-transition-name values for the persistent header and content regions, with reduced-motion handling.",
      "effort": "small"
    },
    {
      "id": "F03",
      "pathId": "faq",
      "url": "https://www.dafont.com/faq.php",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "shrinking-header-on-scroll",
      "severity": "low",
      "confidence": "medium",
      "summary": "Long listing and FAQ pages provide no scroll-state-aware orientation aid.",
      "evidence": "The platform probe found no scroll-state/container-query support; the 2,178px mobile layout and long FAQ screenshot show static chrome and no progress or compact sticky navigation.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/faq-mobile.png"
      ],
      "suggestedFix": "Use a compact sticky header or unobtrusive progress/orientation affordance that reacts to scroll state without obscuring content.",
      "effort": "medium"
    },
    {
      "id": "F04",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "severity": "critical",
      "confidence": "high",
      "summary": "A consent interstitial blocks all content on first load.",
      "evidence": "Desktop, mobile, dark and FAQ screenshots show a viewport-dimming modal before any interaction; it demands a choice about 272 partners before the font catalog can be used.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/faq-mobile.png"
      ],
      "suggestedFix": "Replace the blocking first-load wall with a concise, non-modal consent notice; keep refusal as prominent as acceptance and defer optional processing until a choice.",
      "effort": "medium"
    },
    {
      "id": "F05",
      "pathId": "detail",
      "url": "https://www.dafont.com/matcha-mint.font",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "light-dismiss-a-dialog",
      "severity": "high",
      "confidence": "high",
      "summary": "The blocking consent UI is third-party custom iframe chrome rather than a robust semantic dialog.",
      "evidence": "axe found an untitled iframe; the DOM/platform probe found zero dialog, popover or details elements, while screenshots show a modal surface. In one detail capture its iframe content rendered blank while still blocking the page.",
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/platform-probe.json",
        "evidence/detail-desktop.png"
      ],
      "suggestedFix": "Use a properly named native dialog only if modality is necessary, with Escape/light-dismiss behavior, focus containment and a first-party fallback if the consent provider fails.",
      "effort": "medium"
    },
    {
      "id": "F06",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "responsive-no-horizontal-scroll",
      "guidanceId": "css-layout",
      "severity": "critical",
      "confidence": "high",
      "summary": "Mobile browsers receive a scaled-down 980px desktop layout.",
      "evidence": "At a requested 360x800 viewport, layout metrics reported no viewport meta and an effective 980px layout/visual viewport at scale 0.367; the screenshot shows tiny desktop content rather than reflow.",
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Add width=device-width, initial-scale=1 and rebuild the fixed 965/980px shell with fluid intrinsic layout and responsive regions.",
      "effort": "medium"
    },
    {
      "id": "F07",
      "pathId": "listing",
      "url": "https://www.dafont.com/theme.php?cat=501",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "fluid-scaling",
      "severity": "medium",
      "confidence": "high",
      "summary": "Reused catalog components are fixed to the page shell rather than adapting to available space.",
      "evidence": "The platform probe found no container queries, while French CSS evidence includes legacy 965px padding/margin compensation and floated physical columns.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/i18n-fr.json"
      ],
      "suggestedFix": "Make list cards and navigation self-contained with intrinsic sizing and container queries where their composition changes.",
      "effort": "medium"
    },
    {
      "id": "F08",
      "pathId": "login",
      "url": "https://www.dafont.com/login.php",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Many controls are too small for touch.",
      "evidence": "Login probe measured text fields and buttons at 21px high and the remember checkbox at 13x13px; the scaled mobile page makes them smaller still. Keyboard focus remained visible, but touch sizing is inadequate.",
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/home-mobile.png"
      ],
      "suggestedFix": "Provide at least 44x44 CSS-pixel activation areas for primary controls, increase spacing, and preserve native :focus-visible outlines.",
      "effort": "medium"
    },
    {
      "id": "F09",
      "pathId": "detail",
      "url": "https://www.dafont.com/matcha-mint.font",
      "principleId": "support-core-task-success",
      "principleCheckId": "primary-flow-completion",
      "guidanceId": "privacy",
      "severity": "critical",
      "confidence": "high",
      "summary": "The core browse-to-download journey is interrupted before it can start.",
      "evidence": "First-load screenshots on home, listing, detail and FAQ archetypes show the 272-partner consent wall covering the primary catalog and download controls.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/listing-desktop.png",
        "evidence/detail-desktop.png"
      ],
      "suggestedFix": "Allow browsing and downloading without forcing a tracking decision; load optional ad/analytics code only after freely given consent.",
      "effort": "medium"
    },
    {
      "id": "F10",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "severity": "high",
      "confidence": "high",
      "summary": "Mobile loading misses the good LCP range.",
      "evidence": "Lighthouse measured LCP 7.0s, Speed Index 4.0s and time-to-interactive 7.0s, producing a performance score of 0.68; the controlled desktop trace was faster at 1.06s LCP.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json"
      ],
      "suggestedFix": "Prioritise actual catalog content, remove consent/ad work from the critical path, and verify field/mobile LCP after deployment.",
      "effort": "medium"
    },
    {
      "id": "F11",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-script-priority",
      "severity": "medium",
      "confidence": "high",
      "summary": "Caching and critical delivery are inefficient.",
      "evidence": "HAR summary lists many first-party images/CSS without useful cache headers and confirms parser-blocking classic scripts df5.js, key.js, alpha.js and themesv9_en.js without async/defer/module.",
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json",
        "evidence/document-assets-probe.json"
      ],
      "suggestedFix": "Add long-lived immutable caching for versioned assets and defer or move non-critical classic scripts; keep only essential CSS in the critical path.",
      "effort": "medium"
    },
    {
      "id": "F12",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "defer-rendering-heavy-content",
      "severity": "high",
      "confidence": "high",
      "summary": "Third-party script code dominates a simple catalog page.",
      "evidence": "The HAR transferred 845,527 bytes; 771,937 bytes (91%) were third-party, including a 355,942-byte CMP, 257,136 bytes of ad scripts and 154,650 bytes from Tag Manager.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "suggestedFix": "Remove nonessential vendors, gate optional scripts behind consent and interaction, and budget third-party JavaScript by user value.",
      "effort": "medium"
    },
    {
      "id": "F13",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "severity": "critical",
      "confidence": "high",
      "summary": "Core controls and images lack accessible names and labels.",
      "evidence": "axe found 19 missing image alternatives, an unlabeled search input, eight unnamed links and an untitled iframe on home; listing/detail add unnamed selects, and login username/password are unlabeled.",
      "artifacts": [
        "evidence/axe-home.json",
        "evidence/axe-listing.json",
        "evidence/axe-detail.json",
        "evidence/axe-login.json"
      ],
      "suggestedFix": "Add explicit labels and autocomplete, meaningful alt text or empty alt for decoration, discernible link names, named frames, and semantic landmarks.",
      "effort": "medium"
    },
    {
      "id": "F14",
      "pathId": "listing",
      "url": "https://www.dafont.com/theme.php?cat=501",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Small metadata and consent text fail WCAG contrast.",
      "evidence": "Lighthouse reports 3.54:1 for 11px #888 text on white; axe found 3 home consent failures and 9 listing failures.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/axe-listing.json"
      ],
      "suggestedFix": "Darken secondary text to meet 4.5:1 at its current size and audit every consent state as well as first-party catalog metadata.",
      "effort": "small"
    },
    {
      "id": "F15",
      "pathId": "login",
      "url": "https://www.dafont.com/login.php",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Pages lack a logical heading and landmark structure.",
      "evidence": "Home has no headings; login only has H3 Login. axe reports no main landmark, dozens of regions outside landmarks, unnamed links and tabindex=1 on search.",
      "artifacts": [
        "evidence/home-recon.json",
        "evidence/axe-login.json"
      ],
      "suggestedFix": "Use header/nav/main/footer landmarks, one descriptive H1 per page, a logical heading hierarchy, and natural DOM tab order without positive tabindex.",
      "effort": "medium"
    },
    {
      "id": "F16",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "legible-text",
      "guidanceId": "improve-text-layout-and-legibility",
      "severity": "high",
      "confidence": "high",
      "summary": "The mobile presentation is too small and cramped to read comfortably.",
      "evidence": "The 360px screenshot scales a 980px canvas to 0.367, reducing already-small 11px metadata and dense menus to illegible sizes.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json"
      ],
      "suggestedFix": "Use a responsive viewport and fluid typography/layout; maintain comfortable line-height, spacing and readable minimum text sizes.",
      "effort": "medium"
    },
    {
      "id": "F17",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "fluid-scaling",
      "severity": "critical",
      "confidence": "high",
      "summary": "The page does not reflow at a narrow viewport and exposes undersized controls.",
      "evidence": "No viewport meta was present; the 360px test stayed 980px wide at page scale 0.367, while login controls measured 13-21px high.",
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/login-probe.json"
      ],
      "suggestedFix": "Add the standard viewport declaration, ensure 320/360px reflow without two-dimensional scrolling, and enlarge activation targets.",
      "effort": "medium"
    },
    {
      "id": "F18",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "The document and image stack use legacy or incomplete asset practices.",
      "evidence": "The page declares HTML 4 Transitional and ISO-8859-1/Windows-1252; Lighthouse failed its doctype audit. Images primitive found 19 legacy PNG/GIF images, 2 missing dimensions and 7 below-fold images without lazy loading.",
      "artifacts": [
        "evidence/document-assets-probe.json",
        "evidence/images.json",
        "evidence/lighthouse-home.json"
      ],
      "suggestedFix": "Serve standards-mode HTML5 as UTF-8, add explicit intrinsic image dimensions, and modernise/lazy-load noncritical imagery where appropriate.",
      "effort": "medium"
    },
    {
      "id": "F19",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "performance",
      "severity": "medium",
      "confidence": "high",
      "summary": "The page is excluded from back/forward cache.",
      "evidence": "Lighthouse reports two BFCache blockers: Cache-Control: no-store on the main resource and on a JavaScript network response.",
      "artifacts": [
        "evidence/lighthouse-home.json"
      ],
      "suggestedFix": "Avoid no-store where sensitive data does not require it and audit third-party requests so back/forward navigation can restore instantly.",
      "effort": "medium"
    },
    {
      "id": "F20",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "css-layout",
      "severity": "high",
      "confidence": "high",
      "summary": "The public catalog is crawlable but not mobile-friendly.",
      "evidence": "Lighthouse and DOM evidence confirm real href links and crawlability, but the page has no viewport meta and renders a 980px desktop canvas at mobile scale.",
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/home-recon.json"
      ],
      "suggestedFix": "Add a responsive viewport and mobile layout while preserving server-rendered anchors and descriptive text.",
      "effort": "medium"
    },
    {
      "id": "F21",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "severity": "low",
      "confidence": "high",
      "summary": "There is no sitemap for the large public font archive.",
      "evidence": "The homepage has a canonical URL and robots permits principal pages, but /sitemap.xml returns a styled 404 despite many catalog detail URLs.",
      "artifacts": [
        "evidence/crawl-files.json"
      ],
      "suggestedFix": "Publish sitemap index files for canonical font, theme and author URLs and reference them from robots.txt.",
      "effort": "medium"
    },
    {
      "id": "F22",
      "pathId": "detail",
      "url": "https://www.dafont.com/matcha-mint.font",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "Font detail pages expose no structured entity or social preview metadata.",
      "evidence": "The login/general probe found zero JSON-LD and Open Graph tags; detail discoverability confirms a public font entity with title/H1/description that could be represented explicitly.",
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/discoverability-detail"
      ],
      "suggestedFix": "Add accurate schema.org CreativeWork/Product-style JSON-LD as appropriate and Open Graph/Twitter metadata matching each visible font detail.",
      "effort": "medium"
    },
    {
      "id": "F23",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "severity": "high",
      "confidence": "high",
      "summary": "HTTPS is used, but baseline security headers and cookie attributes are incomplete.",
      "evidence": "Headers primitive found no CSP, HSTS, X-Content-Type-Options, clickjacking, Referrer-Policy or Permissions-Policy. redirector-rootdir is not Secure and both observed cookies use SameSite=None.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Roll out a nonce/hash CSP, HSTS, nosniff, frame-ancestors, Referrer-Policy and Permissions-Policy; set least-permissive Secure/HttpOnly/SameSite cookie attributes.",
      "effort": "medium"
    },
    {
      "id": "F24",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "severity": "high",
      "confidence": "high",
      "summary": "The page loads a large tracking and advertising surface before a positive choice.",
      "evidence": "Trackers found seven third-party origins and Google Ads, Tag Manager and Analytics; HAR shows third parties account for 91% of transferred bytes while the modal describes sharing with 272 partners.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/home-desktop.png"
      ],
      "suggestedFix": "Reduce vendors to those essential for the task, prevent optional network calls before consent, and provide a concise first-party privacy explanation.",
      "effort": "medium"
    },
    {
      "id": "F25",
      "pathId": "login",
      "url": "https://www.dafont.com/login.php",
      "principleId": "be-private-and-secure",
      "principleCheckId": "in-context-permissions-and-modern-auth",
      "guidanceId": "autofill-sign-in-form",
      "severity": "medium",
      "confidence": "high",
      "summary": "Authentication is password-only and lacks modern sign-in assistance.",
      "evidence": "No permission prompt was detected on load, but login exposes only username/password, with no autocomplete tokens and no visible passkey/WebAuthn option.",
      "artifacts": [
        "evidence/login-probe.json",
        "evidence/login-desktop.png"
      ],
      "suggestedFix": "Add correct username/current-password autocomplete immediately, then offer passkeys/WebAuthn with password fallback and recovery.",
      "effort": "medium"
    },
    {
      "id": "F26",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "severity": "high",
      "confidence": "high",
      "summary": "Browser-enforced defenses are absent.",
      "evidence": "Headers evidence found no HSTS, clickjacking protection, CSP/frame-ancestors, Referrer-Policy or Permissions-Policy.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "suggestedFix": "Deploy and monitor HSTS, CSP including frame-ancestors, nosniff, strict referrer policy and a minimal permissions policy.",
      "effort": "medium"
    },
    {
      "id": "F27",
      "pathId": "detail",
      "url": "https://www.dafont.com/matcha-mint.font",
      "principleId": "be-resilient",
      "principleCheckId": "resilient-runtime-behaviour",
      "guidanceId": "flicker-free-client-side-ab-testing",
      "severity": "high",
      "confidence": "high",
      "summary": "Failure of the consent iframe can leave a blank modal blocking the page.",
      "evidence": "The detail-page capture shows an empty white consent panel over dimmed content; because the overlay is third-party and modal, its partial failure prevents access to the download flow.",
      "artifacts": [
        "evidence/detail-desktop.png"
      ],
      "suggestedFix": "Fail open for core catalog access: render consent controls first-party or provide a timed, keyboard-accessible fallback that never traps users behind an empty vendor frame.",
      "effort": "medium"
    },
    {
      "id": "F28",
      "pathId": "french-home",
      "url": "https://www.dafont.com/fr/",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "translator",
      "severity": "medium",
      "confidence": "high",
      "summary": "Localized pages set language correctly but use direction-fragile physical CSS.",
      "evidence": "French probe reported lang=fr, but no dir and numerous fixed left/right floats, offsets, padding and text alignment rules, including the 965px shell.",
      "artifacts": [
        "evidence/i18n-fr.json"
      ],
      "suggestedFix": "Set explicit direction where needed and replace physical positioning with logical inline/block properties and modern flow layout.",
      "effort": "medium"
    },
    {
      "id": "F29",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "privacy",
      "severity": "high",
      "confidence": "high",
      "summary": "Consent choices are visually and cognitively asymmetric.",
      "evidence": "The blocking dialog foregrounds a red Accept all button while Do not accept is a small underlined text link; it describes sharing extensive data with 272 partners and forces a decision before use.",
      "artifacts": [
        "evidence/home-desktop.png"
      ],
      "suggestedFix": "Present accept and reject with equal prominence, default to no optional processing, shorten the explanation, and permit continued use without tracking.",
      "effort": "medium"
    },
    {
      "id": "F30",
      "pathId": "login",
      "url": "https://www.dafont.com/login.php",
      "principleId": "be-trustworthy",
      "principleCheckId": "humane-error-handling",
      "guidanceId": "forms",
      "severity": "high",
      "confidence": "high",
      "summary": "Blank login submission gives no actionable error feedback.",
      "evidence": "After activating Login with empty fields, the screenshot returned to the same form with no visible field-level or summary error; controls lack required/ARIA validation semantics.",
      "artifacts": [
        "evidence/login-invalid.png",
        "evidence/axe-login.json"
      ],
      "suggestedFix": "Validate after interaction, associate clear field errors, focus/announce an error summary, and preserve entered values without blame.",
      "effort": "medium"
    },
    {
      "id": "F31",
      "pathId": "login",
      "url": "https://www.dafont.com/login.php",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "autofill-sign-in-form",
      "severity": "medium",
      "confidence": "high",
      "summary": "Sign-in fields omit autocomplete metadata.",
      "evidence": "Login probe shows empty autocomplete values for username and password, preventing reliable password-manager/autofill assistance.",
      "artifacts": [
        "evidence/login-probe.json"
      ],
      "suggestedFix": "Use autocomplete=username and autocomplete=current-password, with correct input types and names.",
      "effort": "small"
    },
    {
      "id": "F32",
      "pathId": "login",
      "url": "https://www.dafont.com/login.php",
      "principleId": "be-trustworthy",
      "principleCheckId": "safe-commercial-and-account-flows",
      "guidanceId": "autofill-sign-in-form",
      "severity": "medium",
      "confidence": "high",
      "summary": "The account flow depends on password-only authentication.",
      "evidence": "The login archetype offers username/password and remember-me but no passkey option or explicit modern reauthentication path.",
      "artifacts": [
        "evidence/login-desktop.png",
        "evidence/login-probe.json"
      ],
      "suggestedFix": "Offer phishing-resistant passkeys alongside a well-assisted password fallback and document recovery/cancellation paths.",
      "effort": "medium"
    },
    {
      "id": "F33",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "optimize-image-priority",
      "severity": "medium",
      "confidence": "high",
      "summary": "Image delivery uses legacy formats and misses basic deferral metadata.",
      "evidence": "Images primitive found 19/19 images in PNG/GIF, no modern formats, seven below-fold images without lazy loading, two missing dimensions and one missing responsive source.",
      "artifacts": [
        "evidence/images.json"
      ],
      "suggestedFix": "Use modern formats where they reduce bytes, preserve raster previews where necessary, add dimensions, and lazy-load below-fold noncritical images.",
      "effort": "medium"
    },
    {
      "id": "F34",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "deprioritize-background-fetches",
      "severity": "high",
      "confidence": "high",
      "summary": "Optional third-party work dominates a lightweight first-party page.",
      "evidence": "Only 73,590 transferred bytes were first-party, versus 771,937 third-party bytes for consent, ads and analytics; these scripts load during the initial view.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "suggestedFix": "Defer or eliminate optional vendors, batch/minimise analytics, and keep background work behind consent and user intent.",
      "effort": "medium"
    },
    {
      "id": "F35",
      "pathId": "home",
      "url": "https://www.dafont.com/",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "defer-rendering-heavy-content",
      "severity": "high",
      "confidence": "high",
      "summary": "The third-party budget is disproportionate to the font-browsing task.",
      "evidence": "Eight third-party requests deliver 91% of page bytes; the three largest vendor scripts are 355,942, 190,639 and 154,650 bytes.",
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "suggestedFix": "Set an explicit third-party byte/request budget and remove or delay integrations that do not directly support font discovery/download.",
      "effort": "medium"
    }
  ],
  "taskList": [
    {
      "id": "T1",
      "title": "Make the catalog genuinely responsive and accessible",
      "priority": 1,
      "findingIds": [
        "F06",
        "F07",
        "F08",
        "F16",
        "F17",
        "F20"
      ],
      "guidanceId": "css-layout",
      "status": "open"
    },
    {
      "id": "T2",
      "title": "Remove or redesign the blocking consent wall",
      "priority": 2,
      "findingIds": [
        "F04",
        "F05",
        "F09",
        "F27",
        "F28"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T3",
      "title": "Fix labels, names, landmarks, headings and contrast",
      "priority": 3,
      "findingIds": [
        "F13",
        "F14",
        "F15",
        "F16",
        "F17"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T4",
      "title": "Reduce/gate third-party scripts and restore good mobile LCP",
      "priority": 4,
      "findingIds": [
        "F10",
        "F11",
        "F12",
        "F33",
        "F34"
      ],
      "guidanceId": "performance",
      "status": "open"
    },
    {
      "id": "T5",
      "title": "Deploy security headers and stricter cookie policy",
      "priority": 5,
      "findingIds": [
        "F23",
        "F24",
        "F25",
        "F26"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T6",
      "title": "Modernise sign-in assistance and errors",
      "priority": 6,
      "findingIds": [
        "F29",
        "F30",
        "F31",
        "F32"
      ],
      "guidanceId": "forms",
      "status": "open"
    },
    {
      "id": "T7",
      "title": "Publish sitemap and entity/share metadata",
      "priority": 7,
      "findingIds": [
        "F21",
        "F22"
      ],
      "guidanceId": "html",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 8,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-22T03-28-34-984Z"
}
