{
  "url": "https://www.ilovepdf.com",
  "auditedAt": "2026-07-24T01:31:37.879Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage complete across 58 atomic checks and seven representative paths. Excluded duplicate tool templates and authenticated account/checkout internals; merge and compress represent the file-tool family.",
  "page": {
    "appType": "mpa",
    "framework": "Server-rendered multi-page application with client-enhanced file workflows",
    "notes": "Public PDF utility, localized into many languages. Audited homepage, two tool entries, an end-to-end merge flow, pricing, login, Arabic RTL, and 404 recovery. Not covered: every duplicate PDF tool, authenticated account settings, payment checkout, or destructive document operations."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "raw-CDP-file-upload-flow",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "lighthouse",
    "forced-colors-emulation",
    "reduced-motion-emulation"
  ],
  "guidanceConsulted": [
    "accessibility",
    "accessible-error-announcement",
    "adapt-scrollbar-to-contrast-preferences",
    "agentic-forms",
    "agentic-javascript-tools",
    "anchor-positioning-tab-underline",
    "animate-element-entry-exit",
    "animate-to-from-top-layer",
    "animate-to-intrinsic-sizes",
    "animated-select-picker",
    "apply-webgl-shaders",
    "autofill-address-form",
    "autofill-highlight-inputs",
    "autofill-payment-form",
    "autofill-sign-in-form",
    "autofill-sign-up-form",
    "batch-analytics-events",
    "brand-consistent-forms",
    "branded-select-styling",
    "break-up-long-tasks",
    "calculate-event-differentials",
    "calculate-total-foreground-time",
    "calculate-with-intrinsic-sizes",
    "capture-location-agnostic-data",
    "carousel-slide-effects",
    "carousel-snap-highlights",
    "child-state-based-styling",
    "complex-shapes",
    "component-specific-light-dark-theme",
    "conditional-async-dependencies",
    "consistent-cross-document-transitions",
    "content-based-styling",
    "coordinate-global-events",
    "cross-document-transitions",
    "css",
    "css-layout",
    "custom-select-picker-layouts",
    "customize-scrollbar-color-and-thickness",
    "dark-mode",
    "declarative-dialog-popover-control",
    "defer-rendering-heavy-content",
    "defer-work-until-scroll-ends",
    "deliver-optimized-decorative-images",
    "deprioritize-background-fetches",
    "design-token-reactivity",
    "detect-initial-visibility-state",
    "directional-navigation-transitions",
    "dynamic-sibling-animations",
    "dynamic-sibling-styling",
    "efficient-background-processing",
    "export-html-media-from-canvas",
    "expose-canvas-content-to-browser-features",
    "faster-spa-view-transitions",
    "flicker-free-client-side-ab-testing",
    "fluid-scaling",
    "form-fields-automatically-fit-contents",
    "format-human-readable-durations",
    "forms",
    "full-session-analytics",
    "group-element-transitions",
    "highlight-text-ranges",
    "html",
    "identify-heavy-scripts",
    "identify-inp-causes",
    "improve-next-page-load-performance",
    "improve-text-layout-and-legibility",
    "individual-transform-properties",
    "interactions-in-complex-layouts",
    "interactive-content-in-3d-scenes",
    "interactive-content-reveal",
    "interest-triggered-action-previews",
    "interest-triggered-tooltips",
    "language-detection",
    "language-model",
    "light-dismiss-a-dialog",
    "manage-recurring-intervals",
    "model-partial-time-concepts",
    "move-dom-element-without-losing-state",
    "navigation-drawer",
    "optimize-image-priority",
    "optimize-preload-priority",
    "optimize-script-priority",
    "overflow-clipping-control",
    "parallax-scroll-effects",
    "passkey-authentication",
    "passkey-conditional-create",
    "passkey-management",
    "passkey-reauthentication",
    "passkey-registration",
    "passkeys",
    "performance",
    "persistent-app-tours",
    "persistent-toast-notifications",
    "persistent-top-layer-ui",
    "physics-based-easing",
    "platform-controls-dismiss-dialog",
    "position-aware-tooltips",
    "precise-text-alignment",
    "prevent-text-wrapping",
    "privacy",
    "pull-to-reveal",
    "reduce-style-repetition",
    "required-field-feedback",
    "resilient-context-menus-and-nested-dropdowns",
    "resolution-optimized-pseudo-elements",
    "rich-media-picker",
    "same-document-transitions",
    "schedule-tasks-by-priority",
    "scroll-entry-exit-effects",
    "scroll-position-aware-elements",
    "scroll-progress-indicator",
    "scroll-snap-realtime-feedback",
    "scroll-snap-state-sync",
    "scroll-target-on-load",
    "scrollability-affordance-hints",
    "scrollytelling",
    "search-hidden-content",
    "security",
    "select-menu-interaction",
    "sequence-distributed-events",
    "shaped-cutouts",
    "shrinking-header-on-scroll",
    "size-aware-styling",
    "soft-edge-content-fade",
    "stabilize-reactive-state",
    "stack-drill-down",
    "style-parent-with-has",
    "support-global-calendar-systems",
    "swipe-to-remove",
    "translator",
    "validate-input-after-interaction",
    "visually-stable-font-fallbacks",
    "visually-stable-mixed-fonts",
    "visually-texture-content",
    "webmcp"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "Homepage first viewport with consent panel.",
      "condition": "desktop 1440x900",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "Consent panel obscures most homepage tools.",
      "condition": "mobile 360x800",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "Dark preference still renders the light theme.",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dark-dom.json",
      "caption": "Computed body remains rgb(245,245,250) and color-scheme normal in dark mode.",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "other",
      "path": "evidence/reduced-motion-probe.json",
      "caption": "Reduced-motion preference is active with zero page animations.",
      "condition": "prefers-reduced-motion: reduce"
    },
    {
      "type": "other",
      "path": "evidence/motion-default-probe.json",
      "caption": "Default motion condition also reports zero page animations.",
      "condition": "default motion"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-forced-colors.png",
      "caption": "Controls and text remain distinguishable in forced colors.",
      "condition": "forced-colors: active"
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "Homepage has 0px horizontal overflow and CLS 0 at 360px.",
      "condition": "viewport 360x800"
    },
    {
      "type": "screenshot",
      "path": "evidence/merge-desktop.png",
      "caption": "Merge PDF entry state and consent interruption.",
      "condition": "desktop",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/merge-uploaded.png",
      "caption": "Two valid PDF files loaded into the merge ordering workspace.",
      "condition": "primary flow"
    },
    {
      "type": "screenshot",
      "path": "evidence/merge-result.png",
      "caption": "Successful merged-PDF download state.",
      "condition": "primary flow"
    },
    {
      "type": "other",
      "path": "evidence/merge-result-state.json",
      "caption": "Final flow URL and success text: PDFs have been merged.",
      "condition": "primary flow"
    },
    {
      "type": "screenshot",
      "path": "evidence/compress-mobile.png",
      "caption": "Compress tool adapts to a 360px viewport.",
      "condition": "mobile 360x800",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/compress-mobile-layout.json",
      "caption": "Compress page has no horizontal overflow and CLS 0.",
      "condition": "mobile 360x800"
    },
    {
      "type": "screenshot",
      "path": "evidence/pricing-desktop.png",
      "caption": "Pricing cards and consent panel.",
      "condition": "desktop",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/platform-probe-pricing.json",
      "caption": "Pricing document semantics, headings, landmarks, and platform feature probe.",
      "condition": "desktop",
      "findingIds": [
        "F08",
        "F12",
        "F15"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/login-mobile.png",
      "caption": "Login form at narrow viewport.",
      "condition": "mobile 360x800",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/login-invalid.png",
      "caption": "Blank login submit yields no visible validation feedback.",
      "condition": "blank submission",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "other",
      "path": "evidence/login-inputs.json",
      "caption": "Login fields have no labels or autocomplete tokens.",
      "condition": "login",
      "findingIds": [
        "F06",
        "F16"
      ]
    },
    {
      "type": "other",
      "path": "evidence/focus-login.json",
      "caption": "Focused login controls compute outline-style none.",
      "condition": "keyboard focus",
      "findingIds": [
        "F03",
        "F08"
      ]
    },
    {
      "type": "other",
      "path": "evidence/focus-merge.json",
      "caption": "Merge file picker computes no visible focus outline.",
      "condition": "keyboard focus",
      "findingIds": [
        "F03",
        "F08"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/ar-mobile.png",
      "caption": "Arabic route is translated, RTL, and reflows at 360px.",
      "condition": "RTL mobile",
      "findingIds": [
        "F17"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/ar-layout.json",
      "caption": "Arabic route has 0px horizontal overflow.",
      "condition": "RTL mobile"
    },
    {
      "type": "other",
      "path": "evidence/i18n-ar.json",
      "caption": "Arabic lang=ar and dir=rtl, but 0 logical-property rules versus 291 physical left/right rules.",
      "condition": "RTL",
      "findingIds": [
        "F17"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/404-mobile.png",
      "caption": "404 page explains Page not found and links back home.",
      "condition": "HTTP 404"
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "DevTools performance trace for the homepage load.",
      "condition": "load"
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "Homepage FCP/LCP 925ms and no long tasks in trace.",
      "condition": "load"
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "Homepage HAR with 38 requests and 528KB transferred.",
      "condition": "load",
      "findingIds": [
        "F05",
        "F13",
        "F20"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "Network summary: GTM 165KB, five third-party requests, and dependency chain signals.",
      "condition": "load",
      "findingIds": [
        "F05",
        "F13",
        "F20"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home.json",
      "caption": "Homepage Lighthouse: performance 98, accessibility 95, SEO 100.",
      "condition": "mobile emulation",
      "findingIds": [
        "F07"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-merge.json",
      "caption": "Merge Lighthouse: performance 92, accessibility 88, LCP 3.3s.",
      "condition": "mobile emulation",
      "findingIds": [
        "F05",
        "F06",
        "F07",
        "F08",
        "F10"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-pricing.json",
      "caption": "Pricing Lighthouse: performance 93, accessibility 81, LCP 3.2s.",
      "condition": "mobile emulation",
      "findingIds": [
        "F05",
        "F06",
        "F07",
        "F08"
      ]
    },
    {
      "type": "other",
      "path": "evidence/lighthouse-summary.json",
      "caption": "Compact Lighthouse findings across three archetypes.",
      "condition": "mobile emulation",
      "findingIds": [
        "F05",
        "F06",
        "F07",
        "F08",
        "F10"
      ]
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "Homepage metadata, navigation links, language routes, headings, and structured-data count.",
      "condition": "recon",
      "findingIds": [
        "F15",
        "F16"
      ]
    },
    {
      "type": "other",
      "path": "evidence/memory-metrics-home.json",
      "caption": "Performance memory and live DOM element count for the homepage.",
      "condition": "load"
    },
    {
      "type": "other",
      "path": "evidence/headers-home.json",
      "caption": "HTTPS and HSTS present; CSP, nosniff, frame, referrer and permissions policies absent.",
      "condition": "main document",
      "findingIds": [
        "F12",
        "F14"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies-home.json",
      "caption": "One secure HttpOnly first-party Cloudflare cookie; SameSite=None.",
      "condition": "load",
      "findingIds": [
        "F12"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers-home.json",
      "caption": "Google Tag Manager and Google Analytics active before a consent choice.",
      "condition": "load",
      "findingIds": [
        "F13",
        "F20"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets-home.json",
      "caption": "No exposed client-side secrets detected.",
      "condition": "load"
    },
    {
      "type": "other",
      "path": "evidence/images-home.json",
      "caption": "13/13 homepage images omit dimensions; five legacy-format images.",
      "condition": "load",
      "findingIds": [
        "F09",
        "F19"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images-pricing.json",
      "caption": "100/100 pricing images omit dimensions and three omit alt.",
      "condition": "load",
      "findingIds": [
        "F06",
        "F09"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/discover-home",
      "caption": "Homepage has 89% raw-HTML content coverage and is not a JS shell.",
      "condition": "no JavaScript"
    },
    {
      "type": "screenshot",
      "path": "evidence/discover-home-crawler.png",
      "caption": "Homepage crawler view without JavaScript.",
      "condition": "no JavaScript"
    },
    {
      "type": "discoverability",
      "path": "evidence/discover-merge",
      "caption": "Merge page raw HTML includes title, H1 and description; 34% rendered-token overlap.",
      "condition": "no JavaScript"
    },
    {
      "type": "screenshot",
      "path": "evidence/discover-merge-crawler.png",
      "caption": "Merge task entry remains visible without JavaScript.",
      "condition": "no JavaScript"
    },
    {
      "type": "heap",
      "path": "evidence/heap-home-baseline.heapsnapshot",
      "caption": "Baseline heap summary: 205,186 nodes and 11.88MB self size.",
      "condition": "baseline"
    },
    {
      "type": "heap",
      "path": "evidence/heap-home-post.heapsnapshot",
      "caption": "After repeated category switching: 205,035 nodes and 11.87MB self size.",
      "condition": "50 category switches"
    }
  ],
  "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 multimodal evidence described in linked finding.",
      "evidence": "The dark-mode screenshot is pixel-identical to the light screenshot; computed body background remains rgb(245,245,250) and html color-scheme is normal.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-dark-dom.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "evaluate under reduced-motion",
      "evidence": "The page reports prefers-reduced-motion=true and zero active animations; default also has zero animations.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/reduced-motion-probe.json",
        "evidence/motion-default-probe.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "forced-colors screenshot",
      "evidence": "Forced-colors capture preserves visible text, borders, icons, and consent actions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-forced-colors.png"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "The upload flow changes from picker to ordering workspace to download page; DOM/CSS inspection found no view-transition naming or transition evidence.",
      "pathIds": [
        "merge-flow"
      ],
      "artifacts": [
        "evidence/merge-desktop.png",
        "evidence/merge-uploaded.png",
        "evidence/merge-result.png"
      ],
      "findingIds": [
        "F27"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-site recon.",
      "evidence": "No scroll-linked animation or scrollytelling surface exists on the representative paths.",
      "reason": "No scroll-linked animation or scrollytelling surface exists on the representative paths.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-site recon.",
      "evidence": "No swipe, pull, carousel, or gesture-driven task exists on the representative paths.",
      "reason": "No swipe, pull, carousel, or gesture-driven task exists on the representative paths.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "visual and DOM inspection",
      "evidence": "The fixed header consistently preserves current tool context without scroll-jank across long listing/pricing pages.",
      "pathIds": [
        "home",
        "pricing"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/pricing-desktop.png"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-site recon.",
      "evidence": "No tooltip/popover positioning surface is required in the representative primary flow.",
      "reason": "No tooltip/popover positioning surface is required in the representative primary flow.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "primary flow walkthrough",
      "evidence": "Upload produces a dedicated ordering workspace with two thumbnails and the success state offers clear continuation tools.",
      "pathIds": [
        "merge-flow"
      ],
      "artifacts": [
        "evidence/merge-uploaded.png",
        "evidence/merge-result.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "At 360x800 the 336px-tall panel covers the tool filters and cards; it appears on homepage, merge, compress, pricing, and 404 before interaction.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/compress-mobile.png",
        "evidence/merge-desktop.png"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "The platform probe finds #ck_set and #okck as anchors without href, and no dialog/popover primitive exists.",
      "pathIds": [
        "pricing"
      ],
      "artifacts": [
        "evidence/platform-probe-pricing.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "visual inspection",
      "evidence": "Tool pages devote the viewport to a single heading and primary file action with minimal application framing.",
      "pathIds": [
        "merge-flow",
        "compress"
      ],
      "artifacts": [
        "evidence/merge-desktop.png",
        "evidence/compress-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "mobile layout metrics",
      "evidence": "Homepage, compress, and Arabic routes all report horizontalOverflowPx 0 at 360px with viewport metadata.",
      "pathIds": [
        "home",
        "compress",
        "arabic"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/compress-mobile-layout.json",
        "evidence/ar-layout.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "pass",
      "confidence": "high",
      "method": "cross-viewport visual comparison",
      "evidence": "Cards, tool actions, pricing, and navigation recompose from desktop to 360px without clipping or overflow.",
      "pathIds": [
        "home",
        "compress",
        "pricing"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/compress-mobile.png",
        "evidence/pricing-desktop.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "Programmatically focused login links, inputs, submit button, and merge picker all compute outline-style none and no focus box-shadow; some tested controls are only 40px tall.",
      "pathIds": [
        "login"
      ],
      "artifacts": [
        "evidence/focus-login.json",
        "evidence/focus-merge.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "first-viewport screenshots",
      "evidence": "Home states the PDF-tool purpose; Merge and Compress expose one dominant Select PDF files action.",
      "pathIds": [
        "home",
        "merge-flow",
        "compress"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/merge-desktop.png",
        "evidence/compress-mobile.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "raw CDP file upload and task walkthrough",
      "evidence": "Two valid PDFs were uploaded, ordered, merged, and reached “PDFs have been merged!” with a Download merged PDF action.",
      "pathIds": [
        "merge-flow"
      ],
      "artifacts": [
        "evidence/merge-uploaded.png",
        "evidence/merge-result.png",
        "evidence/merge-result-state.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "The before and after blank-submit screenshots are visually identical; fields remain without aria-invalid or error text.",
      "pathIds": [
        "login"
      ],
      "artifacts": [
        "evidence/login-invalid.png",
        "evidence/login-inputs.json"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "Lighthouse measured LCP 3.3s on merge and 3.2s on pricing, while the homepage was 2.3s. CLS was 0 and TBT remained low.",
      "pathIds": [
        "merge-flow"
      ],
      "artifacts": [
        "evidence/lighthouse-merge.json",
        "evidence/lighthouse-pricing.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "layout and Lighthouse",
      "evidence": "Observed CLS is 0 on homepage/compress and Lighthouse CLS is 0 on home, merge, and pricing.",
      "pathIds": [
        "home",
        "merge-flow",
        "pricing"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/compress-mobile-layout.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "trace and Lighthouse",
      "evidence": "Homepage trace has zero long tasks/TBT 0; Lighthouse TBT is 0–12.5ms across three templates.",
      "pathIds": [
        "home",
        "merge-flow",
        "pricing"
      ],
      "artifacts": [
        "evidence/home-trace-summary.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "Lighthouse flags LCP discovery and dependency-tree insights; HAR identifies a parser-blocking stylesheet and five font files totaling 102KB.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/lighthouse-home.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "The HAR records GTM at 164,953 bytes, 31% of all 527,903 transferred bytes, larger than the 90,854-byte first-party bundle.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "Lighthouse finds an unlabeled merge file input, three pricing images without alt, and FAQ menuitem roles without required parents. Login inputs also have no labels.",
      "pathIds": [
        "merge-flow"
      ],
      "artifacts": [
        "evidence/lighthouse-merge.json",
        "evidence/lighthouse-pricing.json",
        "evidence/login-inputs.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "Lighthouse reports 4.35:1 white-on-red for Select PDF files and 4.22–4.25:1 consent actions, below 4.5:1; similar failures occur on pricing.",
      "pathIds": [
        "merge-flow"
      ],
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-merge.json",
        "evidence/lighthouse-pricing.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "Lighthouse finds no main landmark on merge and pricing, skipped heading levels on pricing, and invalid menuitem/list relationships; focus indicators are absent.",
      "pathIds": [
        "pricing"
      ],
      "artifacts": [
        "evidence/lighthouse-merge.json",
        "evidence/lighthouse-pricing.json",
        "evidence/focus-login.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "visual inspection",
      "evidence": "Headings and body copy are readable, consistently aligned, and reflow without clipping in English and Arabic mobile captures.",
      "pathIds": [
        "home",
        "arabic"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/ar-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "Computed pricing button size is 40x44 and login submit height is 42px; reflow itself succeeds without horizontal overflow.",
      "pathIds": [
        "pricing"
      ],
      "artifacts": [
        "evidence/platform-probe-pricing.json",
        "evidence/focus-login.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse best-practices audits",
      "evidence": "All three Lighthouse runs score best-practices 1.0 and report no console-error audit failure.",
      "pathIds": [
        "home",
        "merge-flow",
        "pricing"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "The image primitive reports missing width/height on 13/13 homepage images and 100/100 pricing images.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images-home.json",
        "evidence/images-pricing.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "Lighthouse reports the large app.08252df.js has no source map and the mutationobserver shim map lacks sourcesContent.",
      "pathIds": [
        "merge-flow"
      ],
      "artifacts": [
        "evidence/lighthouse-merge.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "DOM and discoverability",
      "evidence": "Homepage and merge have descriptive titles and meta descriptions in both raw HTML and rendered DOM.",
      "pathIds": [
        "home",
        "merge-flow"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/discover-home",
        "evidence/discover-merge"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "DOM and Lighthouse SEO",
      "evidence": "Navigation uses real descriptive href links, viewport meta is present, and Lighthouse SEO is 1.0 on home/merge and 0.92 on pricing.",
      "pathIds": [
        "home",
        "merge-flow",
        "pricing"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "The page exposes dozens of language routes but the pricing probe finds zero hreflang links; direct /robots.txt and /sitemap.xml requests returned 403.",
      "pathIds": [
        "pricing"
      ],
      "artifacts": [
        "evidence/platform-probe-pricing.json",
        "evidence/recon.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "Homepage recon finds zero JSON-LD blocks despite organization/service content; pricing exposes plans and offers without detected structured data.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/recon.json",
        "evidence/platform-probe-pricing.json"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "The headers primitive confirms HTTPS and HSTS but no CSP and no X-Content-Type-Options; the one cookie is Secure/HttpOnly but SameSite=None.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers-home.json",
        "evidence/cookies-home.json"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "Trackers detects GTM and Google Analytics on initial load; HAR records five third-party requests and a GA collect request marked consent denied/npa=1.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/trackers-home.json",
        "evidence/home-summary.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "high",
      "method": "login and network inspection",
      "evidence": "No permission prompt appears on load; login offers password plus a key/passkey-style option and social choices.",
      "pathIds": [
        "login"
      ],
      "artifacts": [
        "evidence/login-mobile.png"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "No clickjacking protection, Referrer-Policy, Permissions-Policy, or CSP frame-ancestors is present; HSTS is correctly enabled.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers-home.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "raw HTML crawler comparison",
      "evidence": "Homepage is not a JS shell with 89% content coverage; merge raw HTML preserves title, H1, description, and task entry UI.",
      "pathIds": [
        "home",
        "merge-flow"
      ],
      "artifacts": [
        "evidence/discover-home",
        "evidence/discover-merge",
        "evidence/discover-merge-crawler.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "primary flow walkthrough",
      "evidence": "The upload, ordering, processing, and result states stabilized and remained usable without clipped overlays.",
      "pathIds": [
        "merge-flow"
      ],
      "artifacts": [
        "evidence/merge-uploaded.png",
        "evidence/merge-result.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-site recon.",
      "evidence": "The core product uploads files to a remote processing service and is intrinsically online; installability/offline processing was judged out of scope.",
      "reason": "The core product uploads files to a remote processing service and is intrinsically online; installability/offline processing was judged out of scope.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "404 route exercise",
      "evidence": "A nonexistent route presents “Page not found” and a prominent Back to homepage recovery action.",
      "pathIds": [
        "not-found"
      ],
      "artifacts": [
        "evidence/404-mobile.png"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "Arabic is correctly lang=ar and dir=rtl with no mobile overflow, yet the CSS probe counts 0 logical-property rules and 291 left/right rules.",
      "pathIds": [
        "arabic"
      ],
      "artifacts": [
        "evidence/i18n-ar.json",
        "evidence/ar-mobile.png"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-site recon.",
      "evidence": "The audited localized surfaces contain no user-facing dates, decimal quantities, or locale-formatted data requiring an Intl judgement.",
      "reason": "The audited localized surfaces contain no user-facing dates, decimal quantities, or locale-formatted data requiring an Intl judgement.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-site recon.",
      "evidence": "The audited surfaces expose no events, stored times, recurrence, or time-zone-sensitive concepts.",
      "reason": "The audited surfaces expose no events, stored times, recurrence, or time-zone-sensitive concepts.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "Across screenshots, first-layer choices are Manage options and Accept all; rejecting requires additional steps while acceptance is one click.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/pricing-desktop.png"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "Blank submission produces no visible field message, summary, aria-invalid state, or changed screenshot.",
      "pathIds": [
        "login"
      ],
      "artifacts": [
        "evidence/login-invalid.png",
        "evidence/login-inputs.json"
      ],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "The email and password inputs return empty autocomplete values and label count 0.",
      "pathIds": [
        "login"
      ],
      "artifacts": [
        "evidence/login-inputs.json"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "high",
      "method": "pricing/login visual walkthrough",
      "evidence": "Pricing clearly distinguishes free, £5/month billed annually, and business contact options; login offers recovery and account creation.",
      "pathIds": [
        "pricing",
        "login"
      ],
      "artifacts": [
        "evidence/pricing-desktop.png",
        "evidence/login-mobile.png"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "Five homepage images use PNG, five omit srcset, and every sampled image omits intrinsic dimensions, although most icons use SVG.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/images-home.json"
      ],
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "high",
      "method": "trace and HAR",
      "evidence": "Homepage transfers a modest 528KB and trace records no long tasks or ongoing animation work; waste is isolated to the separately reported third party.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "GTM alone transfers 165KB of the 528KB load, while all first-party scripts together are smaller; trackers also contacts Analytics.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers-home.json"
      ],
      "findingIds": [
        "F25"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "issues",
      "confidence": "high",
      "method": "Direct multimodal evidence described in linked finding.",
      "evidence": "The platform probe finds no WebMCP surface; Lighthouse agentic-browsing scores merge and pricing at 0.5, and merge’s unlabeled file input weakens the accessibility tree.",
      "pathIds": [
        "merge-flow"
      ],
      "artifacts": [
        "evidence/platform-probe-pricing.json",
        "evidence/lighthouse-merge.json"
      ],
      "findingIds": [
        "F26"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-site recon.",
      "evidence": "The representative merge/compress tasks are deterministic document operations, not inference use cases.",
      "reason": "The representative merge/compress tasks are deterministic document operations, not inference use cases.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "baseline/post heap comparison",
      "evidence": "After 50 representative category switches, snapshot node count decreased 205,186→205,035 and self size decreased 11,882,122→11,869,495 bytes.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-home-baseline.heapsnapshot",
        "evidence/heap-home-post.heapsnapshot"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "heap summary and Performance memory",
      "evidence": "Homepage snapshot self size is 11.9MB; Performance memory reports 7.2MB used JS heap and 1,107 live DOM elements, proportionate to the tool directory.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-home-baseline.heapsnapshot",
        "evidence/memory-metrics-home.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "heap constructor comparison",
      "evidence": "Repeated interaction does not increase total nodes/self size and no Detached* constructor appears among the retained top constructors.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-home-baseline.heapsnapshot",
        "evidence/heap-home-post.heapsnapshot"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F27"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F02",
        "F03"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06",
        "F07",
        "F08"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F09",
        "F10",
        "F11",
        "F12"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F13",
        "F14"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F15",
        "F16"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F17",
        "F18",
        "F19"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F21",
        "F22",
        "F23"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F24",
        "F25"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F26"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and tool directory, representing the main discovery/listing template.",
      "url": "https://www.ilovepdf.com/",
      "conditions": [
        "desktop 1440x900",
        "mobile 360x800",
        "prefers-color-scheme: dark",
        "forced-colors: active",
        "prefers-reduced-motion: reduce",
        "no JavaScript crawler"
      ],
      "result": "issues"
    },
    {
      "id": "merge-flow",
      "description": "Primary PDF task from upload through ordering, merge processing, and successful download state.",
      "url": "https://www.ilovepdf.com/merge_pdf",
      "conditions": [
        "desktop",
        "mobile Lighthouse",
        "two valid local PDFs",
        "no JavaScript crawler"
      ],
      "result": "issues"
    },
    {
      "id": "compress",
      "description": "A second file-tool template checked at a narrow viewport to represent the wider conversion/tool family.",
      "url": "https://www.ilovepdf.com/compress_pdf",
      "conditions": [
        "mobile 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "pricing",
      "description": "Commercial plan comparison and FAQ template, including billing controls and account calls to action.",
      "url": "https://www.ilovepdf.com/pricing",
      "conditions": [
        "desktop",
        "mobile Lighthouse"
      ],
      "result": "issues"
    },
    {
      "id": "login",
      "description": "Authentication form checked for keyboard focus, input assistance, and invalid submission recovery.",
      "url": "https://www.ilovepdf.com/login",
      "conditions": [
        "mobile 360x800",
        "keyboard/programmatic focus",
        "blank submit"
      ],
      "result": "issues"
    },
    {
      "id": "arabic",
      "description": "Arabic localized homepage checked for translation, RTL direction, and mobile reflow.",
      "url": "https://www.ilovepdf.com/ar",
      "conditions": [
        "mobile 360x800",
        "RTL"
      ],
      "result": "issues"
    },
    {
      "id": "not-found",
      "description": "Representative HTTP failure route checked for a useful error and recovery action.",
      "url": "https://www.ilovepdf.com/not-a-real-page-web-uplift",
      "conditions": [
        "mobile 360x800"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "confidence": "high",
      "summary": "The site ignores the user’s dark color-scheme preference.",
      "evidence": "The dark-mode screenshot is pixel-identical to the light screenshot; computed body background remains rgb(245,245,250) and html color-scheme is normal.",
      "suggestedFix": "Declare color-scheme: light dark and provide preference-driven surface/text tokens with prefers-color-scheme or light-dark().",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-dark-dom.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.ilovepdf.com/"
    },
    {
      "id": "F02",
      "severity": "high",
      "confidence": "high",
      "summary": "The consent panel obscures primary content on every public page tested, especially on mobile.",
      "evidence": "At 360x800 the 336px-tall panel covers the tool filters and cards; it appears on homepage, merge, compress, pricing, and 404 before interaction.",
      "suggestedFix": "Use a compact, non-blocking consent notice; expose equally direct accept and reject actions without covering the primary task.",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "user-experience",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/compress-mobile.png",
        "evidence/merge-desktop.png"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.ilovepdf.com/"
    },
    {
      "id": "F03",
      "severity": "high",
      "confidence": "high",
      "summary": "Consent controls are custom anchor-like elements rather than semantic dialog/buttons.",
      "evidence": "The platform probe finds #ck_set and #okck as anchors without href, and no dialog/popover primitive exists.",
      "suggestedFix": "Use a semantic dialog or appropriate popover with real buttons, keyboard focus management, and declarative dismissal.",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "user-experience",
      "artifacts": [
        "evidence/platform-probe-pricing.json"
      ],
      "effort": "medium",
      "pathId": "pricing",
      "url": "https://www.ilovepdf.com/pricing"
    },
    {
      "id": "F04",
      "severity": "high",
      "confidence": "high",
      "summary": "Keyboard focus is not visibly indicated on primary controls.",
      "evidence": "Programmatically focused login links, inputs, submit button, and merge picker all compute outline-style none and no focus box-shadow; some tested controls are only 40px tall.",
      "suggestedFix": "Add a strong :focus-visible indicator that is not removed, and keep interactive targets at least 44 CSS px where possible.",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "artifacts": [
        "evidence/focus-login.json",
        "evidence/focus-merge.json"
      ],
      "effort": "small",
      "pathId": "login",
      "url": "https://www.ilovepdf.com/login"
    },
    {
      "id": "F05",
      "severity": "medium",
      "confidence": "high",
      "summary": "Blank login submission provides no visible validation or recovery guidance.",
      "evidence": "The before and after blank-submit screenshots are visually identical; fields remain without aria-invalid or error text.",
      "suggestedFix": "Validate after interaction, identify each invalid field, focus the first error, and announce a concise summary through a live region.",
      "principleId": "support-core-task-success",
      "principleCheckId": "clear-system-state-and-recovery",
      "guidanceId": "accessible-error-announcement",
      "guidanceCategory": "accessibility",
      "artifacts": [
        "evidence/login-invalid.png",
        "evidence/login-inputs.json"
      ],
      "effort": "small",
      "pathId": "login",
      "url": "https://www.ilovepdf.com/login"
    },
    {
      "id": "F06",
      "severity": "medium",
      "confidence": "high",
      "summary": "Primary secondary templates miss the good LCP threshold in lab runs.",
      "evidence": "Lighthouse measured LCP 3.3s on merge and 3.2s on pricing, while the homepage was 2.3s. CLS was 0 and TBT remained low.",
      "suggestedFix": "Profile each LCP element, make it discoverable in initial HTML, prioritize only the actual LCP resource, and shorten its dependency chain.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "performance",
      "guidanceCategory": "performance",
      "artifacts": [
        "evidence/lighthouse-merge.json",
        "evidence/lighthouse-pricing.json"
      ],
      "effort": "medium",
      "pathId": "merge-flow",
      "url": "https://www.ilovepdf.com/merge_pdf"
    },
    {
      "id": "F07",
      "severity": "medium",
      "confidence": "high",
      "summary": "Critical rendering depends on CSS/font chains and homepage LCP discovery is delayed.",
      "evidence": "Lighthouse flags LCP discovery and dependency-tree insights; HAR identifies a parser-blocking stylesheet and five font files totaling 102KB.",
      "suggestedFix": "Inline only critical styles, reduce font variants, use stable fallbacks, and ensure the LCP resource is discovered and prioritized from initial HTML.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-preload-priority",
      "guidanceCategory": "performance",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/lighthouse-home.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.ilovepdf.com/"
    },
    {
      "id": "F08",
      "severity": "medium",
      "confidence": "high",
      "summary": "Third-party analytics is the single largest script on the initial load.",
      "evidence": "The HAR records GTM at 164,953 bytes, 31% of all 527,903 transferred bytes, larger than the 90,854-byte first-party bundle.",
      "suggestedFix": "Load analytics only after an appropriate consent/state decision and use a smaller, conditional measurement path.",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "conditional-async-dependencies",
      "guidanceCategory": "performance",
      "artifacts": [
        "evidence/home-summary.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.ilovepdf.com/"
    },
    {
      "id": "F09",
      "severity": "high",
      "confidence": "high",
      "summary": "Core controls and pricing content have missing or invalid accessible semantics.",
      "evidence": "Lighthouse finds an unlabeled merge file input, three pricing images without alt, and FAQ menuitem roles without required parents. Login inputs also have no labels.",
      "suggestedFix": "Give every input a persistent label/name, use decorative empty alt where appropriate, and replace the FAQ menu pattern with semantic buttons/details.",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "artifacts": [
        "evidence/lighthouse-merge.json",
        "evidence/lighthouse-pricing.json",
        "evidence/login-inputs.json"
      ],
      "effort": "medium",
      "pathId": "merge-flow",
      "url": "https://www.ilovepdf.com/merge_pdf"
    },
    {
      "id": "F10",
      "severity": "medium",
      "confidence": "high",
      "summary": "Several primary controls narrowly fail WCAG text contrast.",
      "evidence": "Lighthouse reports 4.35:1 white-on-red for Select PDF files and 4.22–4.25:1 consent actions, below 4.5:1; similar failures occur on pricing.",
      "suggestedFix": "Darken the red and blue action colors enough to maintain at least 4.5:1 for normal text in every state.",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/lighthouse-merge.json",
        "evidence/lighthouse-pricing.json"
      ],
      "effort": "small",
      "pathId": "merge-flow",
      "url": "https://www.ilovepdf.com/merge_pdf"
    },
    {
      "id": "F11",
      "severity": "high",
      "confidence": "high",
      "summary": "Key templates lack a main landmark and contain invalid heading/FAQ structure.",
      "evidence": "Lighthouse finds no main landmark on merge and pricing, skipped heading levels on pricing, and invalid menuitem/list relationships; focus indicators are absent.",
      "suggestedFix": "Wrap primary content in main, restore sequential headings, use native disclosure semantics for FAQ, and preserve visible focus.",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "artifacts": [
        "evidence/lighthouse-merge.json",
        "evidence/lighthouse-pricing.json",
        "evidence/focus-login.json"
      ],
      "effort": "medium",
      "pathId": "pricing",
      "url": "https://www.ilovepdf.com/pricing"
    },
    {
      "id": "F12",
      "severity": "medium",
      "confidence": "high",
      "summary": "Some interactive targets fall below the inclusive 44px target recommendation.",
      "evidence": "Computed pricing button size is 40x44 and login submit height is 42px; reflow itself succeeds without horizontal overflow.",
      "suggestedFix": "Increase compact controls to a minimum 44x44 CSS px target area while retaining the current fluid reflow.",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "fluid-scaling",
      "guidanceCategory": "css",
      "artifacts": [
        "evidence/platform-probe-pricing.json",
        "evidence/focus-login.json"
      ],
      "effort": "small",
      "pathId": "pricing",
      "url": "https://www.ilovepdf.com/pricing"
    },
    {
      "id": "F13",
      "severity": "medium",
      "confidence": "high",
      "summary": "Images omit intrinsic dimensions across the sampled templates.",
      "evidence": "The image primitive reports missing width/height on 13/13 homepage images and 100/100 pricing images.",
      "suggestedFix": "Emit width and height (or a stable aspect-ratio) for every image so layout space is reserved before fetch completion.",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "artifacts": [
        "evidence/images-home.json",
        "evidence/images-pricing.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.ilovepdf.com/"
    },
    {
      "id": "F14",
      "severity": "low",
      "confidence": "high",
      "summary": "The merge application ships incomplete source-map support.",
      "evidence": "Lighthouse reports the large app.08252df.js has no source map and the mutationobserver shim map lacks sourcesContent.",
      "suggestedFix": "Publish valid production source maps to the expected URLs or remove invalid sourceMappingURL references.",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "artifacts": [
        "evidence/lighthouse-merge.json"
      ],
      "effort": "small",
      "pathId": "merge-flow",
      "url": "https://www.ilovepdf.com/merge_pdf"
    },
    {
      "id": "F15",
      "severity": "medium",
      "confidence": "high",
      "summary": "Localized pages are not connected with hreflang, and robots/sitemap requests rejected the audit client.",
      "evidence": "The page exposes dozens of language routes but the pricing probe finds zero hreflang links; direct /robots.txt and /sitemap.xml requests returned 403.",
      "suggestedFix": "Publish reciprocal hreflang annotations and ensure robots.txt and sitemap.xml return stable 200 responses to legitimate crawlers.",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "artifacts": [
        "evidence/platform-probe-pricing.json",
        "evidence/recon.json"
      ],
      "effort": "medium",
      "pathId": "pricing",
      "url": "https://www.ilovepdf.com/pricing"
    },
    {
      "id": "F16",
      "severity": "low",
      "confidence": "high",
      "summary": "Rich entities have social metadata but no structured data.",
      "evidence": "Homepage recon finds zero JSON-LD blocks despite organization/service content; pricing exposes plans and offers without detected structured data.",
      "suggestedFix": "Add accurate schema.org Organization/WebSite and appropriate Offer/Product structured data that matches visible content.",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "artifacts": [
        "evidence/recon.json",
        "evidence/platform-probe-pricing.json"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://www.ilovepdf.com/"
    },
    {
      "id": "F17",
      "severity": "high",
      "confidence": "high",
      "summary": "The main document lacks a Content-Security-Policy and nosniff protection.",
      "evidence": "The headers primitive confirms HTTPS and HSTS but no CSP and no X-Content-Type-Options; the one cookie is Secure/HttpOnly but SameSite=None.",
      "suggestedFix": "Deploy a nonce/hash-based CSP and X-Content-Type-Options: nosniff; narrow cookie SameSite where cross-site use is unnecessary.",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "artifacts": [
        "evidence/headers-home.json",
        "evidence/cookies-home.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.ilovepdf.com/"
    },
    {
      "id": "F18",
      "severity": "high",
      "confidence": "high",
      "summary": "Google analytics requests occur before the visitor makes a consent choice.",
      "evidence": "Trackers detects GTM and Google Analytics on initial load; HAR records five third-party requests and a GA collect request marked consent denied/npa=1.",
      "suggestedFix": "Do not load third-party analytics before the relevant choice; prefer first-party, batched, data-minimised measurement.",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "artifacts": [
        "evidence/trackers-home.json",
        "evidence/home-summary.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.ilovepdf.com/"
    },
    {
      "id": "F19",
      "severity": "high",
      "confidence": "high",
      "summary": "Several browser-enforced defensive policies are absent.",
      "evidence": "No clickjacking protection, Referrer-Policy, Permissions-Policy, or CSP frame-ancestors is present; HSTS is correctly enabled.",
      "suggestedFix": "Add CSP frame-ancestors (and/or X-Frame-Options), strict Referrer-Policy, and a least-privilege Permissions-Policy.",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "artifacts": [
        "evidence/headers-home.json"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://www.ilovepdf.com/"
    },
    {
      "id": "F20",
      "severity": "medium",
      "confidence": "high",
      "summary": "RTL works visually, but the stylesheet relies overwhelmingly on physical directions.",
      "evidence": "Arabic is correctly lang=ar and dir=rtl with no mobile overflow, yet the CSS probe counts 0 logical-property rules and 291 left/right rules.",
      "suggestedFix": "Migrate layout spacing and positioning to inline/block logical properties, retaining targeted physical exceptions only where semantically required.",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "css",
      "guidanceCategory": "css",
      "artifacts": [
        "evidence/i18n-ar.json",
        "evidence/ar-mobile.png"
      ],
      "effort": "large",
      "pathId": "arabic",
      "url": "https://www.ilovepdf.com/ar"
    },
    {
      "id": "F21",
      "severity": "high",
      "confidence": "high",
      "summary": "The consent prompt offers a prominent Accept all action but no equally direct Reject all action.",
      "evidence": "Across screenshots, first-layer choices are Manage options and Accept all; rejecting requires additional steps while acceptance is one click.",
      "suggestedFix": "Place Reject all beside Accept all with equal prominence and preserve granular management as a secondary action.",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "custom-button-actions",
      "guidanceCategory": "user-experience",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/pricing-desktop.png"
      ],
      "effort": "small",
      "pathId": "home",
      "url": "https://www.ilovepdf.com/"
    },
    {
      "id": "F22",
      "severity": "medium",
      "confidence": "high",
      "summary": "Login errors are not surfaced after user submission.",
      "evidence": "Blank submission produces no visible field message, summary, aria-invalid state, or changed screenshot.",
      "suggestedFix": "Use :user-invalid/aria-invalid after submission, clear field-level guidance, and an accessible error announcement.",
      "principleId": "be-trustworthy",
      "principleCheckId": "humane-error-handling",
      "guidanceId": "validate-input-after-interaction",
      "guidanceCategory": "forms",
      "artifacts": [
        "evidence/login-invalid.png",
        "evidence/login-inputs.json"
      ],
      "effort": "small",
      "pathId": "login",
      "url": "https://www.ilovepdf.com/login"
    },
    {
      "id": "F23",
      "severity": "medium",
      "confidence": "high",
      "summary": "Login fields omit autofill tokens and persistent labels.",
      "evidence": "The email and password inputs return empty autocomplete values and label count 0.",
      "suggestedFix": "Add visible labels plus autocomplete=username and autocomplete=current-password; retain passkey as a complementary option.",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "autofill-sign-in-form",
      "guidanceCategory": "forms",
      "artifacts": [
        "evidence/login-inputs.json"
      ],
      "effort": "small",
      "pathId": "login",
      "url": "https://www.ilovepdf.com/login"
    },
    {
      "id": "F24",
      "severity": "medium",
      "confidence": "high",
      "summary": "Homepage imagery is not consistently optimized for stable, efficient delivery.",
      "evidence": "Five homepage images use PNG, five omit srcset, and every sampled image omits intrinsic dimensions, although most icons use SVG.",
      "suggestedFix": "Provide responsive srcset/sizes and modern AVIF/WebP where photographic/raster content is appropriate; include intrinsic dimensions.",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "artifacts": [
        "evidence/images-home.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.ilovepdf.com/"
    },
    {
      "id": "F25",
      "severity": "medium",
      "confidence": "high",
      "summary": "Analytics consumes a disproportionate share of a relatively light page.",
      "evidence": "GTM alone transfers 165KB of the 528KB load, while all first-party scripts together are smaller; trackers also contacts Analytics.",
      "suggestedFix": "Set a third-party byte budget and defer or replace analytics so it is proportional to user value and consent.",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "performance",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers-home.json"
      ],
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.ilovepdf.com/"
    },
    {
      "id": "F26",
      "severity": "low",
      "confidence": "high",
      "summary": "The PDF workflow has no structured agent-facing capability.",
      "evidence": "The platform probe finds no WebMCP surface; Lighthouse agentic-browsing scores merge and pricing at 0.5, and merge’s unlabeled file input weakens the accessibility tree.",
      "suggestedFix": "Expose narrowly scoped PDF operations through safe WebMCP/agentic forms with explicit file, privacy, confirmation, and output contracts.",
      "principleId": "be-agent-ready",
      "principleCheckId": "structured-agent-capabilities",
      "guidanceId": "webmcp",
      "guidanceCategory": "ai",
      "artifacts": [
        "evidence/platform-probe-pricing.json",
        "evidence/lighthouse-merge.json"
      ],
      "effort": "large",
      "pathId": "merge-flow",
      "url": "https://www.ilovepdf.com/merge_pdf"
    },
    {
      "id": "F27",
      "severity": "low",
      "confidence": "high",
      "summary": "Major route and workflow state changes swap abruptly without View Transition integration.",
      "evidence": "The upload flow changes from picker to ordering workspace to download page; DOM/CSS inspection found no view-transition naming or transition evidence.",
      "suggestedFix": "Add same-document transitions for picker/workspace state and cross-document View Transitions for result navigation, while respecting reduced motion.",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "user-experience",
      "artifacts": [
        "evidence/merge-desktop.png",
        "evidence/merge-uploaded.png",
        "evidence/merge-result.png"
      ],
      "effort": "medium",
      "pathId": "merge-flow",
      "url": "https://www.ilovepdf.com/merge_pdf"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Replace the consent wall with fair, semantic controls",
      "priority": 1,
      "findingIds": [
        "F02",
        "F03",
        "F21"
      ],
      "guidanceId": "declarative-dialog-popover-control",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Restore accessible names, landmarks, heading structure, contrast, focus, and target sizes",
      "priority": 2,
      "findingIds": [
        "F04",
        "F09",
        "F10",
        "F11",
        "F12"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Deploy CSP and complete the browser security-policy baseline",
      "priority": 3,
      "findingIds": [
        "F17",
        "F19"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Gate and reduce third-party analytics",
      "priority": 4,
      "findingIds": [
        "F08",
        "F18",
        "F25"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Add humane login validation, labels, and autofill tokens",
      "priority": 5,
      "findingIds": [
        "F05",
        "F22",
        "F23"
      ],
      "guidanceId": "accessible-error-announcement",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Improve LCP discovery and resource dependency chains",
      "priority": 6,
      "findingIds": [
        "F06",
        "F07"
      ],
      "guidanceId": "optimize-preload-priority",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Reserve and optimize image space and formats",
      "priority": 7,
      "findingIds": [
        "F13",
        "F24"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Add dark-mode tokens and preference-driven browser theming",
      "priority": 8,
      "findingIds": [
        "F01"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Publish hreflang, crawler-stable indexing files, and structured data",
      "priority": 9,
      "findingIds": [
        "F15",
        "F16"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Migrate RTL-sensitive layout to CSS logical properties",
      "priority": 10,
      "findingIds": [
        "F20"
      ],
      "guidanceId": "css",
      "status": "open"
    },
    {
      "id": "T11",
      "title": "Add workflow View Transitions with reduced-motion handling",
      "priority": 11,
      "findingIds": [
        "F27"
      ],
      "guidanceId": "same-document-transitions",
      "status": "open"
    },
    {
      "id": "T12",
      "title": "Expose a safe structured agent capability for PDF operations",
      "priority": 12,
      "findingIds": [
        "F26"
      ],
      "guidanceId": "webmcp",
      "status": "open"
    },
    {
      "id": "T13",
      "title": "Repair production source-map hygiene",
      "priority": 13,
      "findingIds": [
        "F14"
      ],
      "guidanceId": "html",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 7,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-24T01-31-37-879Z"
}
