{
  "url": "https://www.calculator.net",
  "auditedAt": "2026-07-18T07:55:54.018Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete audit of eight representative public paths. Not covered: every one of roughly 200 calculators, authenticated account states, account creation/recovery completion, ad click-throughs, and real payment/subscription flows; sampled pages represent the shared homepage, listing, calculator/article, account, locale-data and HTTP-error templates.",
  "page": {
    "appType": "mpa",
    "framework": "server-rendered PHP/vanilla JavaScript",
    "notes": "Server-rendered calculator/reference MPA with shared CSS, inline handlers, a web manifest and Google advertising. Core content is available without JavaScript."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "discoverability",
    "trace",
    "har",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "Lighthouse",
    "axe-core",
    "raw HTTP/robots/sitemap/manifest"
  ],
  "guidanceConsulted": [
    "accessibility",
    "accessible-error-announcement",
    "language-detection",
    "language-model",
    "summarizer",
    "translator",
    "css",
    "highlight-text-ranges",
    "css-layout",
    "animated-select-picker",
    "autofill-address-form",
    "autofill-highlight-inputs",
    "autofill-payment-form",
    "autofill-sign-in-form",
    "autofill-sign-up-form",
    "brand-consistent-forms",
    "branded-select-styling",
    "custom-select-picker-layouts",
    "form-fields-automatically-fit-contents",
    "forms",
    "required-field-feedback",
    "rich-media-picker",
    "select-menu-interaction",
    "validate-input-after-interaction",
    "html",
    "passkey-authentication",
    "passkey-conditional-create",
    "passkey-management",
    "passkey-reauthentication",
    "passkey-registration",
    "passkeys",
    "batch-analytics-events",
    "break-up-long-tasks",
    "calculate-total-foreground-time",
    "conditional-async-dependencies",
    "defer-rendering-heavy-content",
    "defer-work-until-scroll-ends",
    "deprioritize-background-fetches",
    "detect-initial-visibility-state",
    "efficient-background-processing",
    "faster-spa-view-transitions",
    "full-session-analytics",
    "identify-heavy-scripts",
    "identify-inp-causes",
    "improve-next-page-load-performance",
    "interactions-in-complex-layouts",
    "optimize-image-priority",
    "optimize-preload-priority",
    "optimize-script-priority",
    "performance",
    "resolution-optimized-pseudo-elements",
    "schedule-tasks-by-priority",
    "sequence-distributed-events",
    "privacy",
    "security",
    "adapt-scrollbar-to-contrast-preferences",
    "anchor-positioning-tab-underline",
    "animate-element-entry-exit",
    "animate-to-from-top-layer",
    "animate-to-intrinsic-sizes",
    "apply-webgl-shaders",
    "calculate-event-differentials",
    "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",
    "consistent-cross-document-transitions",
    "content-based-styling",
    "coordinate-global-events",
    "cross-document-transitions",
    "customize-scrollbar-color-and-thickness",
    "dark-mode",
    "declarative-button-actions",
    "declarative-dialog-popover-control",
    "deliver-optimized-decorative-images",
    "design-token-reactivity",
    "directional-navigation-transitions",
    "dynamic-sibling-animations",
    "dynamic-sibling-styling",
    "export-html-media-from-canvas",
    "expose-canvas-content-to-browser-features",
    "flicker-free-client-side-ab-testing",
    "fluid-scaling",
    "format-human-readable-durations",
    "group-element-transitions",
    "improve-text-layout-and-legibility",
    "individual-transform-properties",
    "interactive-content-in-3d-scenes",
    "interactive-content-reveal",
    "interest-triggered-action-previews",
    "interest-triggered-tooltips",
    "light-dismiss-a-dialog",
    "manage-recurring-intervals",
    "model-partial-time-concepts",
    "move-dom-element-without-losing-state",
    "navigation-drawer",
    "overflow-clipping-control",
    "parallax-scroll-effects",
    "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",
    "pull-to-reveal",
    "reduce-style-repetition",
    "resilient-context-menus-and-nested-dropdowns",
    "same-document-transitions",
    "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",
    "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",
    "visually-stable-font-fallbacks",
    "visually-stable-mixed-fonts",
    "visually-texture-content",
    "agentic-forms",
    "agentic-javascript-tools",
    "webmcp"
  ],
  "artifacts": [
    {
      "type": "other",
      "path": "evidence/404-headers.txt",
      "caption": "404 headers",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/404.html",
      "caption": "404",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/axe-bmi.json",
      "caption": "axe bmi",
      "findingIds": [
        "F08",
        "F09",
        "F10",
        "F22"
      ]
    },
    {
      "type": "other",
      "path": "evidence/axe-home.json",
      "caption": "axe home",
      "findingIds": [
        "F04",
        "F08"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/bmi-dom.json",
      "caption": "bmi dom",
      "findingIds": [
        "F05",
        "F12",
        "F14"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/bmi-forced-colors.png",
      "caption": "bmi forced colors",
      "condition": "forced-colors: active",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/bmi-images.json",
      "caption": "bmi images",
      "findingIds": [
        "F12",
        "F25"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/bmi-invalid.png",
      "caption": "bmi invalid",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/bmi-mobile-layout.json",
      "caption": "bmi mobile layout",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F11"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/bmi-mobile.png",
      "caption": "bmi mobile",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F06",
        "F09"
      ]
    },
    {
      "type": "other",
      "path": "evidence/bmi-probe.json",
      "caption": "bmi probe",
      "findingIds": [
        "F03",
        "F04",
        "F06",
        "F14",
        "F20",
        "F28"
      ]
    },
    {
      "type": "other",
      "path": "evidence/bmi-validation-probe.json",
      "caption": "bmi validation probe",
      "findingIds": [
        "F22"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies",
      "findingIds": [
        "F15",
        "F24"
      ]
    },
    {
      "type": "other",
      "path": "evidence/currency-locale-probe.json",
      "caption": "currency locale probe",
      "findingIds": [
        "F21"
      ]
    },
    {
      "type": "other",
      "path": "evidence/date-locale-probe.json",
      "caption": "date locale probe",
      "findingIds": [
        "F21"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/financial-dom.json",
      "caption": "financial dom",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guidance-list.json",
      "caption": "guidance list",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guides-0.md",
      "caption": "guides 0",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guides-1.md",
      "caption": "guides 1",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guides-2.md",
      "caption": "guides 2",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guides-3.md",
      "caption": "guides 3",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guides-4.md",
      "caption": "guides 4",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guides-5.md",
      "caption": "guides 5",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/guides-6.md",
      "caption": "guides 6",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers",
      "findingIds": [
        "F15",
        "F18"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-home-baseline.json",
      "caption": "heap home baseline",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-home-post.json",
      "caption": "heap home post",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "home discoverability crawler",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "home discoverability rendered",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "home discoverability",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom",
      "findingIds": [
        "F01",
        "F02",
        "F04",
        "F05",
        "F20"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "home mobile layout",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-recon.json",
      "caption": "home recon",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/lighthouse-bmi-summary.json",
      "caption": "lighthouse bmi summary",
      "findingIds": [
        "F06",
        "F08",
        "F09",
        "F10",
        "F11",
        "F12",
        "F28"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-bmi.json",
      "caption": "lighthouse bmi",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/lighthouse-home-summary.json",
      "caption": "lighthouse home summary",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home.json",
      "caption": "lighthouse home",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/manifest.json",
      "caption": "manifest",
      "findingIds": [
        "F19"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/mortgage-discoverability-crawler.png",
      "caption": "mortgage discoverability crawler",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/mortgage-discoverability-rendered.png",
      "caption": "mortgage discoverability rendered",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/mortgage-discoverability.json",
      "caption": "mortgage discoverability",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/mortgage-dom.json",
      "caption": "mortgage dom",
      "findingIds": [
        "F02",
        "F03"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/mortgage-mobile-layout.json",
      "caption": "mortgage mobile layout",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F11"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/mortgage-mobile.png",
      "caption": "mortgage mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/mortgage-platform-probe.json",
      "caption": "mortgage platform probe",
      "findingIds": [
        "F19"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/mortgage-summary.json",
      "caption": "mortgage summary",
      "findingIds": [
        "F07",
        "F16",
        "F26",
        "F27"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/mortgage-trace-summary.json",
      "caption": "mortgage trace summary",
      "findingIds": []
    },
    {
      "type": "trace",
      "path": "evidence/mortgage-trace.json",
      "caption": "mortgage trace",
      "findingIds": []
    },
    {
      "type": "har",
      "path": "evidence/mortgage.har",
      "caption": "mortgage",
      "findingIds": [
        "F07",
        "F16",
        "F27"
      ]
    },
    {
      "type": "other",
      "path": "evidence/reduced-motion-probe.json",
      "caption": "reduced motion probe",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/robots-headers.txt",
      "caption": "robots headers",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/robots.txt",
      "caption": "robots",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/signin-dom.json",
      "caption": "signin dom",
      "findingIds": [
        "F13",
        "F17",
        "F23",
        "F24"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/signin-mobile.png",
      "caption": "signin mobile",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/signin-probe.json",
      "caption": "signin probe",
      "findingIds": [
        "F13",
        "F17",
        "F23",
        "F24"
      ]
    },
    {
      "type": "other",
      "path": "evidence/sitemap-headers.txt",
      "caption": "sitemap headers",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/sitemap.xml",
      "caption": "sitemap",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers",
      "findingIds": [
        "F16",
        "F26"
      ]
    }
  ],
  "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": "dark screenshot + computed media/CSS probe on home and calculator",
      "evidence": "The dark-condition screenshot is pixel-identical to the default capture (both 77,004-byte PNGs), and the DOM CSS fixes body and panels to white without color-scheme or prefers-color-scheme rules.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "reduced-motion animation probe across representative paths",
      "evidence": "Reduced-motion probe matched reduce=true and found zero active animations or autoplay; there is no non-essential motion to suppress.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/reduced-motion-probe.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "forced-colors screenshot/probe",
      "evidence": "Forced-colors screenshot kept text, controls, focus rings and chart labels visible at 360px.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/bmi-forced-colors.png"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "medium",
      "method": "DOM/CSS feature usage + interaction observation",
      "evidence": "DOM/CSS inspection across the MPA templates found no @view-transition rule, view-transition-name, or pageswap/pagereveal handling.",
      "pathIds": [
        "financial-listing"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/mortgage-dom.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "high",
      "method": "DOM/CSS and scroll-listener probe",
      "evidence": "DOM/CSS inspection found no scroll-linked animation or custom scroll event animation to move onto the main thread.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "DOM/CSS/input handler inspection",
      "evidence": "Representative templates use native scrolling and ordinary links/forms; no custom pointermove/swipe implementation fights platform gestures.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "scroll screenshot and CSS inspection",
      "evidence": "No sticky or affixed chrome exists on sampled templates, so there is no scroll-state UI that can become stale.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "issues",
      "confidence": "high",
      "method": "overlay inventory and CSS inspection",
      "evidence": "Computed CSS defines #tt with position:absolute, while calculator help icons use custom click handlers; no anchor-name, position-anchor or position-try rules were found.",
      "pathIds": [
        "mortgage"
      ],
      "artifacts": [
        "evidence/mortgage-dom.json",
        "evidence/bmi-probe.json"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "navigation/scroll interaction observation",
      "evidence": "Breadcrumbs identify hierarchy, active category navigation is highlighted, and calculator results appear directly after the form with a contrasting Result heading.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/mortgage-mobile.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "load screenshots across paths",
      "evidence": "All load screenshots show core content immediately with no modal, consent wall or full-screen interstitial.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "DOM overlay/control inventory",
      "evidence": "The homepage calculator and Search use span[onclick], and the BMI save action is an img[onclick]. The probe counted two non-native click targets on BMI; these controls are absent from normal keyboard semantics.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/bmi-probe.json",
        "evidence/axe-home.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "desktop/mobile screenshots and viewport proportion",
      "evidence": "At 360px, the calculator and result dominate the first viewport; header is 60px and navigation/sidebar chrome collapses.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/mortgage-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "layout + screenshot at 360x800 across paths",
      "evidence": "Layout evidence on home, mortgage and BMI reported scrollWidth=clientWidth=360 and horizontalOverflowPx=0.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile-layout.json",
        "evidence/mortgage-mobile-layout.json",
        "evidence/bmi-mobile-layout.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "CSS inspection and component widths",
      "evidence": "CSS inspection found no @container/container-type usage; calculator, result and navigation components are sized with fixed widths and global max-width media queries.",
      "pathIds": [
        "bmi"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/bmi-dom.json"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "target-size + focus probe",
      "evidence": "The BMI probe listed numerous 15-22px-high links; Lighthouse failed target-size for adjacent 17px chart links. Homepage calculator spans and Search are not keyboard controls.",
      "pathIds": [
        "bmi"
      ],
      "artifacts": [
        "evidence/bmi-probe.json",
        "evidence/lighthouse-bmi-summary.json",
        "evidence/bmi-mobile.png"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "first viewport screenshots and headings",
      "evidence": "Each sampled entry/detail page has a descriptive H1 and the calculator form plus Calculate action in the first viewport.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/mortgage-mobile.png",
        "evidence/bmi-mobile.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "execute representative mortgage/BMI/calculator forms",
      "evidence": "Mortgage and BMI pages render default end-to-end calculations and results on load; changing values and calculating is a direct single-form flow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/mortgage-mobile.png",
        "evidence/bmi-mobile.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "invalid submission and error-state probe",
      "evidence": "Results are visibly labelled, Clear is available, validation gives a concrete message, and the tested 404 offers search and calculator links.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/bmi-validation-probe.json",
        "evidence/404.html"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "pass",
      "confidence": "high",
      "method": "trace/layout/Lighthouse",
      "evidence": "Lighthouse scored performance 1.00 on home and BMI; BMI LCP 1.17s, TBT 0ms, CLS 0. Trace LCP was 0.92s with no long tasks.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-bmi-summary.json",
        "evidence/mortgage-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "layout CLS + image dimensions",
      "evidence": "Three layout captures reported CLS 0; all four BMI images have explicit dimensions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/bmi-mobile-layout.json",
        "evidence/bmi-images.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "trace/layout long tasks",
      "evidence": "Trace recorded zero long tasks and 0ms total blocking time; Lighthouse TBT was 0ms.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/mortgage-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "pass",
      "confidence": "high",
      "method": "HAR summary + DOM resource attributes",
      "evidence": "Trace LCP was 916ms; the only stylesheet is the expected head CSS, and both candidate scripts were confirmed async.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/mortgage-summary.json",
        "evidence/mortgage-platform-probe.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse + HAR third-party cost",
      "evidence": "HAR recorded 327,468 transferred bytes; 252,043 were script and 294,880 (90%) were third-party. Google Publisher Tag implementation alone transferred 201,092 bytes.",
      "pathIds": [
        "mortgage"
      ],
      "artifacts": [
        "evidence/mortgage-summary.json",
        "evidence/mortgage.har"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "axe/Lighthouse + DOM accessible controls",
      "evidence": "axe reported critical label failures: four nodes on BMI (age, height, weight and search) and one on home. The visible table-cell text is not associated with the inputs.",
      "pathIds": [
        "bmi"
      ],
      "artifacts": [
        "evidence/axe-bmi.json",
        "evidence/axe-home.json",
        "evidence/lighthouse-bmi-summary.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "axe/Lighthouse",
      "evidence": "axe found five contrast failures. Lighthouse measured 3.54:1 for cm/kg text and 2.29:1 for the Clear button, below 4.5:1.",
      "pathIds": [
        "bmi"
      ],
      "artifacts": [
        "evidence/axe-bmi.json",
        "evidence/lighthouse-bmi-summary.json",
        "evidence/bmi-mobile.png"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "axe + keyboard focus probe",
      "evidence": "axe found no main landmark and 60 BMI regions outside landmarks. Lighthouse also failed heading-order and found data tables whose header cells are td rather than th.",
      "pathIds": [
        "bmi"
      ],
      "artifacts": [
        "evidence/axe-bmi.json",
        "evidence/lighthouse-bmi-summary.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "screenshots/computed typography",
      "evidence": "Mobile screenshots show 16px body text, clear headings and readable line wrapping without clipping.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/bmi-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "mobile layout + viewport/media/target probe",
      "evidence": "Layout at 360px had zero horizontal overflow on home, mortgage and BMI, but Lighthouse failed target-size and the probe found many controls below 24px high.",
      "pathIds": [
        "bmi"
      ],
      "artifacts": [
        "evidence/bmi-mobile-layout.json",
        "evidence/mortgage-mobile-layout.json",
        "evidence/lighthouse-bmi-summary.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "console collection/Lighthouse",
      "evidence": "Lighthouse best-practices scored 1.00 on home and BMI and reported no console-error failure.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-bmi-summary.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "DOM/images/Lighthouse",
      "evidence": "The image audit found the clickable Save SVG without alt text. DOM inspection shows layout tables, font elements and table cells used as headings; Lighthouse separately failed td-has-header.",
      "pathIds": [
        "bmi"
      ],
      "artifacts": [
        "evidence/bmi-images.json",
        "evidence/bmi-dom.json",
        "evidence/lighthouse-bmi-summary.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse + API/prompt/paste probe",
      "evidence": "Lighthouse best-practices scored 1.00; probes found no load-time permission request and no paste-prevention behavior.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse-bmi-summary.json",
        "evidence/mortgage-platform-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "issues",
      "confidence": "high",
      "method": "DOM/discoverability across paths",
      "evidence": "DOM evidence shows <meta name=\"description\" content=\"\"> on /my-account/sign-in.php, while the other sampled pages have descriptive titles and descriptions.",
      "pathIds": [
        "sign-in"
      ],
      "artifacts": [
        "evidence/signin-dom.json",
        "evidence/signin-probe.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "DOM/robots/Lighthouse",
      "evidence": "Raw HTML contains real href links and viewport metadata; robots.txt allows crawling and points to the sitemap.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/robots.txt",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "headers/DOM/robots/sitemap",
      "evidence": "Sampled public pages returned 200, robots.txt is permissive, sitemap.xml is available, and no accidental noindex was found; no localized duplicate set requires hreflang.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/robots.txt",
        "evidence/sitemap.xml"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "medium",
      "method": "DOM metadata probe",
      "evidence": "The BMI probe found zero Open Graph tags and zero JSON-LD blocks. Breadcrumb microdata exists, but no metadata describes the calculator/result content for rich sharing.",
      "pathIds": [
        "bmi"
      ],
      "artifacts": [
        "evidence/bmi-probe.json",
        "evidence/bmi-dom.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "headers/cookies/HAR/secrets",
      "evidence": "Headers evidence found no CSP, HSTS, nosniff, frame protection, Referrer-Policy or Permissions-Policy. PHPSESSID and recentVisit were set without Secure and with SameSite=None; PHPSESSID was also not HttpOnly.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "trackers/HAR/cookies",
      "evidence": "Tracker evidence found seven third-party origins and three known tracker domains. HAR attributed 15 of 21 requests and 294,880 of 327,468 transferred bytes to third parties.",
      "pathIds": [
        "mortgage"
      ],
      "artifacts": [
        "evidence/trackers.json",
        "evidence/mortgage-summary.json",
        "evidence/mortgage.har"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "issues",
      "confidence": "high",
      "method": "permissions/auth source probe",
      "evidence": "The sign-in probe found no WebAuthn/passkey code. Email/password fields have no autocomplete tokens; password is the only first-party sign-in method besides Google OAuth.",
      "pathIds": [
        "sign-in"
      ],
      "artifacts": [
        "evidence/signin-probe.json",
        "evidence/signin-dom.json"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "headers/cookies",
      "evidence": "The main response lacks clickjacking protection, Referrer-Policy, Permissions-Policy, HSTS and CSP frame-ancestors.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "discoverability + no-JS crawler view",
      "evidence": "Discoverability reported 100% raw-HTML content coverage on home and mortgage, with title, H1 and description present without JavaScript.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/mortgage-discoverability.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "interaction/error state/DOM",
      "evidence": "Native page navigation and server-rendered state avoid shell flicker; sampled forms and help content remained within the mobile viewport.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/bmi-mobile.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "medium",
      "method": "manifest/service-worker/offline probe",
      "evidence": "A manifest exists with display:standalone, but has no start_url and only one 192px icon; navigator.serviceWorker.controller was false. Core calculator use therefore has no demonstrated offline fallback.",
      "pathIds": [
        "mortgage"
      ],
      "artifacts": [
        "evidence/manifest.json",
        "evidence/mortgage-platform-probe.json"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "404/offline behavior",
      "evidence": "The tested unknown route returns a real HTTP 404 with a clear explanation, search and links back to calculator categories.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/404-headers.txt",
        "evidence/404.html"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "issues",
      "confidence": "high",
      "method": "DOM/CSS probe",
      "evidence": "The site declares lang=en, but CSS inspection shows extensive left/right floats, margins, padding and absolute left positioning and no dir attribute or logical-property strategy.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/bmi-probe.json"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "issues",
      "confidence": "high",
      "method": "calculator content/source/formats",
      "evidence": "The Date Calculator exposes hidden values such as 07/18/2026 and separate month/day/year controls, with no Intl usage. Currency output renders fixed decimal strings and a hard-coded English date such as Jul. 18, 2026.",
      "pathIds": [
        "date"
      ],
      "artifacts": [
        "evidence/date-locale-probe.json",
        "evidence/currency-locale-probe.json"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "date calculator/source behavior",
      "evidence": "The sampled date/currency tools operate on calendar dates and current rates, not cross-zone instants, recurring events or DST-sensitive schedules.",
      "reason": "The sampled date/currency tools operate on calendar dates and current rates, not cross-zone instants, recurring events or DST-sensitive schedules.",
      "pathIds": [
        "date"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "screenshots/account/about flows",
      "evidence": "No consent wall, disguised ad, confirmshaming or forced continuity appeared in sampled public flows; account persistence is visible and user-toggleable.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/signin-mobile.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "issues",
      "confidence": "high",
      "method": "invalid form submission",
      "evidence": "Entering age 0 creates “positive numbers only”, but the input gets no aria-invalid or aria-describedby and the message has no role=alert/status.",
      "pathIds": [
        "bmi"
      ],
      "artifacts": [
        "evidence/bmi-validation-probe.json",
        "evidence/axe-bmi.json"
      ],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "form autocomplete probe",
      "evidence": "The sign-in probe shows empty autocomplete values for email and password, and the email input is type=text rather than type=email.",
      "pathIds": [
        "sign-in"
      ],
      "artifacts": [
        "evidence/signin-probe.json",
        "evidence/signin-dom.json"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "issues",
      "confidence": "high",
      "method": "sign-in/account flow inspection",
      "evidence": "“stay signed in” is checked by default, the PHP session cookie lacks Secure/HttpOnly/SameSite protection, and no passkey support was found.",
      "pathIds": [
        "sign-in"
      ],
      "artifacts": [
        "evidence/signin-dom.json",
        "evidence/signin-probe.json",
        "evidence/cookies.json"
      ],
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "images + HAR",
      "evidence": "The BMI image audit found a below-fold PNG without loading=lazy or srcset; three content images lack responsive source selection.",
      "pathIds": [
        "bmi"
      ],
      "artifacts": [
        "evidence/bmi-images.json"
      ],
      "findingIds": [
        "F25"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "HAR/trace idle work",
      "evidence": "The core page is fast and small, yet ad and traffic-quality scripts initiate 15 third-party requests and transfer 294,880 bytes, including background configuration requests.",
      "pathIds": [
        "mortgage"
      ],
      "artifacts": [
        "evidence/mortgage-summary.json",
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F26"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "HAR/trackers/media probe",
      "evidence": "HAR measured 294,880 third-party bytes out of 327,468 total; the 201KB ad implementation is over six times the first-party document transfer.",
      "pathIds": [
        "mortgage"
      ],
      "artifacts": [
        "evidence/mortgage-summary.json",
        "evidence/mortgage.har"
      ],
      "findingIds": [
        "F27"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "issues",
      "confidence": "medium",
      "method": "DOM/source WebMCP probe",
      "evidence": "No WebMCP/agent tool registration was found, and Lighthouse agentic-browsing scored BMI 0.5 because its accessibility tree is malformed by unlabeled fields.",
      "pathIds": [
        "bmi"
      ],
      "artifacts": [
        "evidence/bmi-probe.json",
        "evidence/lighthouse-bmi-summary.json"
      ],
      "findingIds": [
        "F28"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM/source AI API probe",
      "evidence": "Deterministic calculators do not benefit from probabilistic language-model or summarisation inference.",
      "reason": "Deterministic calculators do not benefit from probabilistic language-model or summarisation inference.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "medium",
      "method": "baseline/post heap around repeated calculator operations",
      "evidence": "After 10 calculator operation cycles, heap self-size was 1.93MB versus 1.73MB baseline; modest growth was mostly compiled code/native state, not evidence of unbounded retained interaction objects.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-home-baseline.json",
        "evidence/heap-home-post.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "heap summary + Performance metrics",
      "evidence": "Heap summaries show a small 1.7-1.9MB self-size footprint and roughly 37-39k nodes, proportionate to the page and ad runtime.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-home-baseline.json",
        "evidence/heap-home-post.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "heap compare + listener/timer instrumentation",
      "evidence": "Neither heap summary surfaced Detached* constructors; closures rose only 73 across separately loaded sessions and no repeating timer-driven UI was observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-home-baseline.json",
        "evidence/heap-home-post.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05",
        "F06"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F08",
        "F09",
        "F10",
        "F11"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F13",
        "F14"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F15",
        "F16",
        "F17",
        "F18"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F20",
        "F21"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F22",
        "F23",
        "F24"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F25",
        "F26",
        "F27"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F28"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and embedded scientific calculator; entry, discovery and primary quick-calculation surface.",
      "url": "https://www.calculator.net/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce"
      ],
      "result": "issues"
    },
    {
      "id": "financial-listing",
      "description": "Financial calculator index; representative listing/navigation template.",
      "url": "https://www.calculator.net/financial-calculator.html",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "mortgage",
      "description": "Mortgage Calculator; representative finance form, result and long-form explanatory template.",
      "url": "https://www.calculator.net/mortgage-calculator.html",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "network trace",
        "HAR"
      ],
      "result": "issues"
    },
    {
      "id": "bmi",
      "description": "BMI Calculator; representative health form, validation, chart, data table and article template.",
      "url": "https://www.calculator.net/bmi-calculator.html",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "forced-colors",
        "invalid input",
        "axe-core"
      ],
      "result": "issues"
    },
    {
      "id": "sign-in",
      "description": "Sign-in page; representative account and authentication flow.",
      "url": "https://www.calculator.net/my-account/sign-in.php",
      "conditions": [
        "desktop",
        "viewport: 360x800"
      ],
      "result": "issues"
    },
    {
      "id": "not-found",
      "description": "Unknown URL; representative HTTP error and recovery state.",
      "url": "https://www.calculator.net/nonexistent-web-uplift-test",
      "conditions": [
        "HTTP 404"
      ],
      "result": "pass"
    },
    {
      "id": "date",
      "description": "Date Calculator; locale-sensitive date input and formatting archetype.",
      "url": "https://www.calculator.net/date-calculator.html",
      "conditions": [
        "desktop locale probe"
      ],
      "result": "issues"
    },
    {
      "id": "currency",
      "description": "Currency Calculator; international currency-data archetype.",
      "url": "https://www.calculator.net/currency-calculator.html",
      "conditions": [
        "desktop locale probe"
      ],
      "result": "issues"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "summary": "The site is hard-coded to a light palette.",
      "evidence": "The dark-condition screenshot is pixel-identical to the default capture (both 77,004-byte PNGs), and the DOM CSS fixes body and panels to white without color-scheme or prefers-color-scheme rules.",
      "suggestedFix": "Declare color-scheme and define preference-driven surface, text, form and chart colors using prefers-color-scheme or light-dark().",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-desktop.png",
        "evidence/home-dom.json"
      ],
      "pathId": "home",
      "url": "https://www.calculator.net/",
      "effort": "medium",
      "confidence": "high"
    },
    {
      "id": "F02",
      "severity": "low",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "cross-document-transitions",
      "guidanceCategory": "user-experience",
      "summary": "Cross-document navigation swaps abruptly.",
      "evidence": "DOM/CSS inspection across the MPA templates found no @view-transition rule, view-transition-name, or pageswap/pagereveal handling.",
      "suggestedFix": "Add a progressively enhanced @view-transition navigation transition and disable it under reduced motion.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/mortgage-dom.json"
      ],
      "pathId": "financial-listing",
      "url": "https://www.calculator.net/financial-calculator.html",
      "effort": "small",
      "confidence": "medium"
    },
    {
      "id": "F03",
      "severity": "low",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "anchored-positioning",
      "guidanceId": "position-aware-tooltips",
      "guidanceCategory": "user-experience",
      "summary": "Calculator help tooltips use manual absolute positioning.",
      "evidence": "Computed CSS defines #tt with position:absolute, while calculator help icons use custom click handlers; no anchor-name, position-anchor or position-try rules were found.",
      "suggestedFix": "Use a popover anchored with CSS anchor positioning and position-try fallbacks, retaining a conventional fallback.",
      "artifacts": [
        "evidence/mortgage-dom.json",
        "evidence/bmi-probe.json"
      ],
      "pathId": "mortgage",
      "url": "https://www.calculator.net/mortgage-calculator.html",
      "effort": "small",
      "confidence": "high"
    },
    {
      "id": "F04",
      "severity": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Core controls are non-semantic click targets.",
      "evidence": "The homepage calculator and Search use span[onclick], and the BMI save action is an img[onclick]. The probe counted two non-native click targets on BMI; these controls are absent from normal keyboard semantics.",
      "suggestedFix": "Replace clickable spans/images with button elements and give each control an accessible name and visible focus state.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/bmi-probe.json",
        "evidence/axe-home.json"
      ],
      "pathId": "home",
      "url": "https://www.calculator.net/",
      "effort": "medium",
      "confidence": "high"
    },
    {
      "id": "F05",
      "severity": "low",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "user-experience",
      "summary": "Shared components adapt only through viewport breakpoints.",
      "evidence": "CSS inspection found no @container/container-type usage; calculator, result and navigation components are sized with fixed widths and global max-width media queries.",
      "suggestedFix": "Introduce containment and component-level size queries for reusable calculator/result/navigation modules while preserving viewport fallbacks.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/bmi-dom.json"
      ],
      "pathId": "bmi",
      "url": "https://www.calculator.net/bmi-calculator.html",
      "effort": "medium",
      "confidence": "high"
    },
    {
      "id": "F06",
      "severity": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Many controls are too small for touch and some have no keyboard path.",
      "evidence": "The BMI probe listed numerous 15-22px-high links; Lighthouse failed target-size for adjacent 17px chart links. Homepage calculator spans and Search are not keyboard controls.",
      "suggestedFix": "Use semantic buttons/links, provide at least 24x24 CSS px targets with spacing (prefer 44px for primary touch controls), and retain visible :focus-visible styles.",
      "artifacts": [
        "evidence/bmi-probe.json",
        "evidence/lighthouse-bmi-summary.json",
        "evidence/bmi-mobile.png"
      ],
      "pathId": "bmi",
      "url": "https://www.calculator.net/bmi-calculator.html",
      "effort": "medium",
      "confidence": "high"
    },
    {
      "id": "F07",
      "severity": "medium",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance",
      "summary": "Advertising code dominates an otherwise light page.",
      "evidence": "HAR recorded 327,468 transferred bytes; 252,043 were script and 294,880 (90%) were third-party. Google Publisher Tag implementation alone transferred 201,092 bytes.",
      "suggestedFix": "Delay ad code until after core content, consent and/or proximity to the ad slot; reduce third-party tags and measure their user value.",
      "artifacts": [
        "evidence/mortgage-summary.json",
        "evidence/mortgage.har"
      ],
      "pathId": "mortgage",
      "url": "https://www.calculator.net/mortgage-calculator.html",
      "effort": "medium",
      "confidence": "high"
    },
    {
      "id": "F08",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Calculator and search inputs lack programmatic labels.",
      "evidence": "axe reported critical label failures: four nodes on BMI (age, height, weight and search) and one on home. The visible table-cell text is not associated with the inputs.",
      "suggestedFix": "Associate every visible label with its control using label[for]/id; name icon-only save/search controls and use semantic buttons.",
      "artifacts": [
        "evidence/axe-bmi.json",
        "evidence/axe-home.json",
        "evidence/lighthouse-bmi-summary.json"
      ],
      "pathId": "bmi",
      "url": "https://www.calculator.net/bmi-calculator.html",
      "effort": "small",
      "confidence": "high"
    },
    {
      "id": "F09",
      "severity": "medium",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Several essential labels and controls fail WCAG contrast.",
      "evidence": "axe found five contrast failures. Lighthouse measured 3.54:1 for cm/kg text and 2.29:1 for the Clear button, below 4.5:1.",
      "suggestedFix": "Darken secondary text and the Clear control background, then verify all states at WCAG AA contrast.",
      "artifacts": [
        "evidence/axe-bmi.json",
        "evidence/lighthouse-bmi-summary.json",
        "evidence/bmi-mobile.png"
      ],
      "pathId": "bmi",
      "url": "https://www.calculator.net/bmi-calculator.html",
      "effort": "small",
      "confidence": "high"
    },
    {
      "id": "F10",
      "severity": "medium",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Page structure lacks landmarks and uses invalid heading/table semantics.",
      "evidence": "axe found no main landmark and 60 BMI regions outside landmarks. Lighthouse also failed heading-order and found data tables whose header cells are td rather than th.",
      "suggestedFix": "Add header/main/nav/footer landmarks, make headings sequential, and use caption/th/scope for data tables.",
      "artifacts": [
        "evidence/axe-bmi.json",
        "evidence/lighthouse-bmi-summary.json"
      ],
      "pathId": "bmi",
      "url": "https://www.calculator.net/bmi-calculator.html",
      "effort": "medium",
      "confidence": "high"
    },
    {
      "id": "F11",
      "severity": "medium",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "summary": "Mobile reflow works, but target sizing does not.",
      "evidence": "Layout at 360px had zero horizontal overflow on home, mortgage and BMI, but Lighthouse failed target-size and the probe found many controls below 24px high.",
      "suggestedFix": "Keep the successful fluid reflow and enlarge/space interactive targets without disabling zoom.",
      "artifacts": [
        "evidence/bmi-mobile-layout.json",
        "evidence/mortgage-mobile-layout.json",
        "evidence/lighthouse-bmi-summary.json"
      ],
      "pathId": "bmi",
      "url": "https://www.calculator.net/bmi-calculator.html",
      "effort": "small",
      "confidence": "high"
    },
    {
      "id": "F12",
      "severity": "low",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Some authored HTML and image semantics are unsound.",
      "evidence": "The image audit found the clickable Save SVG without alt text. DOM inspection shows layout tables, font elements and table cells used as headings; Lighthouse separately failed td-has-header.",
      "suggestedFix": "Use semantic HTML for layout and tables, and replace the clickable image with a named button containing a decorative SVG.",
      "artifacts": [
        "evidence/bmi-images.json",
        "evidence/bmi-dom.json",
        "evidence/lighthouse-bmi-summary.json"
      ],
      "pathId": "bmi",
      "url": "https://www.calculator.net/bmi-calculator.html",
      "effort": "medium",
      "confidence": "high"
    },
    {
      "id": "F13",
      "severity": "low",
      "principleId": "be-discoverable",
      "principleCheckId": "title-and-description",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "The public sign-in page has an empty meta description.",
      "evidence": "DOM evidence shows <meta name=\"description\" content=\"\"> on /my-account/sign-in.php, while the other sampled pages have descriptive titles and descriptions.",
      "suggestedFix": "Add a concise, unique sign-in description or deliberately noindex the utility page if it should not appear in search.",
      "artifacts": [
        "evidence/signin-dom.json",
        "evidence/signin-probe.json"
      ],
      "pathId": "sign-in",
      "url": "https://www.calculator.net/my-account/sign-in.php",
      "effort": "trivial",
      "confidence": "high"
    },
    {
      "id": "F14",
      "severity": "low",
      "principleId": "be-discoverable",
      "principleCheckId": "structured-and-shareable-metadata",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "summary": "Calculator detail pages omit social preview metadata and entity-level structured data.",
      "evidence": "The BMI probe found zero Open Graph tags and zero JSON-LD blocks. Breadcrumb microdata exists, but no metadata describes the calculator/result content for rich sharing.",
      "suggestedFix": "Add accurate Open Graph/Twitter metadata and appropriate JSON-LD for the visible calculator/software content.",
      "artifacts": [
        "evidence/bmi-probe.json",
        "evidence/bmi-dom.json"
      ],
      "pathId": "bmi",
      "url": "https://www.calculator.net/bmi-calculator.html",
      "effort": "small",
      "confidence": "medium"
    },
    {
      "id": "F15",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "Transport is HTTPS, but baseline security headers and cookie flags are missing.",
      "evidence": "Headers evidence found no CSP, HSTS, nosniff, frame protection, Referrer-Policy or Permissions-Policy. PHPSESSID and recentVisit were set without Secure and with SameSite=None; PHPSESSID was also not HttpOnly.",
      "suggestedFix": "Set HSTS, CSP, nosniff, frame-ancestors, Referrer-Policy and Permissions-Policy; mark session cookies Secure, HttpOnly and SameSite=Lax/Strict as appropriate.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "pathId": "home",
      "url": "https://www.calculator.net/",
      "effort": "medium",
      "confidence": "high"
    },
    {
      "id": "F16",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "summary": "Calculator pages load a large advertising/tracking footprint by default.",
      "evidence": "Tracker evidence found seven third-party origins and three known tracker domains. HAR attributed 15 of 21 requests and 294,880 of 327,468 transferred bytes to third parties.",
      "suggestedFix": "Minimise ad/analytics vendors, gate non-essential requests on informed choice, shorten retention, and batch the remaining analytics.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/mortgage-summary.json",
        "evidence/mortgage.har"
      ],
      "pathId": "mortgage",
      "url": "https://www.calculator.net/mortgage-calculator.html",
      "effort": "large",
      "confidence": "high"
    },
    {
      "id": "F17",
      "severity": "medium",
      "principleId": "be-private-and-secure",
      "principleCheckId": "in-context-permissions-and-modern-auth",
      "guidanceId": "passkeys",
      "guidanceCategory": "passkeys",
      "summary": "Authentication is password-only and omits autofill/passkey support.",
      "evidence": "The sign-in probe found no WebAuthn/passkey code. Email/password fields have no autocomplete tokens; password is the only first-party sign-in method besides Google OAuth.",
      "suggestedFix": "Add autocomplete=username/current-password immediately, then offer passkey registration and authentication as a phishing-resistant option.",
      "artifacts": [
        "evidence/signin-probe.json",
        "evidence/signin-dom.json"
      ],
      "pathId": "sign-in",
      "url": "https://www.calculator.net/my-account/sign-in.php",
      "effort": "large",
      "confidence": "high"
    },
    {
      "id": "F18",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "summary": "Browser-enforced defensive policies are absent.",
      "evidence": "The main response lacks clickjacking protection, Referrer-Policy, Permissions-Policy, HSTS and CSP frame-ancestors.",
      "suggestedFix": "Deploy restrictive frame-ancestors, Referrer-Policy and Permissions-Policy with CSP reporting, and evaluate Trusted Types for account surfaces.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "pathId": "home",
      "url": "https://www.calculator.net/",
      "effort": "medium",
      "confidence": "high"
    },
    {
      "id": "F19",
      "severity": "low",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "conditional-async-dependencies",
      "guidanceCategory": "performance",
      "summary": "The calculator app advertises standalone display but has no offline runtime.",
      "evidence": "A manifest exists with display:standalone, but has no start_url and only one 192px icon; navigator.serviceWorker.controller was false. Core calculator use therefore has no demonstrated offline fallback.",
      "suggestedFix": "Complete the manifest and add a small service worker that caches the shell and provides an explicit offline fallback for calculators that can run locally.",
      "artifacts": [
        "evidence/manifest.json",
        "evidence/mortgage-platform-probe.json"
      ],
      "pathId": "mortgage",
      "url": "https://www.calculator.net/mortgage-calculator.html",
      "effort": "medium",
      "confidence": "medium"
    },
    {
      "id": "F20",
      "severity": "medium",
      "principleId": "be-internationalised",
      "principleCheckId": "lang-dir-and-logical-properties",
      "guidanceId": "translator",
      "guidanceCategory": "built-in-ai",
      "summary": "Worldwide content is built with physical-direction CSS.",
      "evidence": "The site declares lang=en, but CSS inspection shows extensive left/right floats, margins, padding and absolute left positioning and no dir attribute or logical-property strategy.",
      "suggestedFix": "Use dir-aware markup and migrate layout-critical physical properties to inline/block logical properties; test an RTL locale.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/bmi-probe.json"
      ],
      "pathId": "home",
      "url": "https://www.calculator.net/",
      "effort": "large",
      "confidence": "high"
    },
    {
      "id": "F21",
      "severity": "medium",
      "principleId": "be-internationalised",
      "principleCheckId": "locale-aware-data",
      "guidanceId": "support-global-calendar-systems",
      "guidanceCategory": "user-experience",
      "summary": "Locale-sensitive calculators hard-code US-style dates and number presentation.",
      "evidence": "The Date Calculator exposes hidden values such as 07/18/2026 and separate month/day/year controls, with no Intl usage. Currency output renders fixed decimal strings and a hard-coded English date such as Jul. 18, 2026.",
      "suggestedFix": "Parse/store unambiguous values and format dates, numbers and currencies with Intl for the selected locale; make locale assumptions explicit.",
      "artifacts": [
        "evidence/date-locale-probe.json",
        "evidence/currency-locale-probe.json"
      ],
      "pathId": "date",
      "url": "https://www.calculator.net/date-calculator.html",
      "effort": "large",
      "confidence": "high"
    },
    {
      "id": "F22",
      "severity": "medium",
      "principleId": "be-trustworthy",
      "principleCheckId": "humane-error-handling",
      "guidanceId": "accessible-error-announcement",
      "guidanceCategory": "accessibility",
      "summary": "Validation errors are immediate but not programmatically announced or associated.",
      "evidence": "Entering age 0 creates “positive numbers only”, but the input gets no aria-invalid or aria-describedby and the message has no role=alert/status.",
      "suggestedFix": "Validate after interaction, set aria-invalid, connect persistent help/error text with aria-describedby, and announce submit-time summaries.",
      "artifacts": [
        "evidence/bmi-validation-probe.json",
        "evidence/axe-bmi.json"
      ],
      "pathId": "bmi",
      "url": "https://www.calculator.net/bmi-calculator.html",
      "effort": "small",
      "confidence": "high"
    },
    {
      "id": "F23",
      "severity": "medium",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "autofill-sign-in-form",
      "guidanceCategory": "forms",
      "summary": "Sign-in fields omit autocomplete assistance.",
      "evidence": "The sign-in probe shows empty autocomplete values for email and password, and the email input is type=text rather than type=email.",
      "suggestedFix": "Use type=email autocomplete=username and autocomplete=current-password; add appropriate tokens to account creation forms.",
      "artifacts": [
        "evidence/signin-probe.json",
        "evidence/signin-dom.json"
      ],
      "pathId": "sign-in",
      "url": "https://www.calculator.net/my-account/sign-in.php",
      "effort": "trivial",
      "confidence": "high"
    },
    {
      "id": "F24",
      "severity": "medium",
      "principleId": "be-trustworthy",
      "principleCheckId": "safe-commercial-and-account-flows",
      "guidanceId": "passkey-management",
      "guidanceCategory": "passkeys",
      "summary": "The account entry flow defaults to persistent sign-in without modern account protections.",
      "evidence": "“stay signed in” is checked by default, the PHP session cookie lacks Secure/HttpOnly/SameSite protection, and no passkey support was found.",
      "suggestedFix": "Use a safer session-cookie posture, explain persistence, reconsider the checked default on shared devices, and add passkey/account-session management.",
      "artifacts": [
        "evidence/signin-dom.json",
        "evidence/signin-probe.json",
        "evidence/cookies.json"
      ],
      "pathId": "sign-in",
      "url": "https://www.calculator.net/my-account/sign-in.php",
      "effort": "large",
      "confidence": "high"
    },
    {
      "id": "F25",
      "severity": "low",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "guidanceCategory": "user-experience",
      "summary": "Below-fold imagery is not responsively delivered or deferred.",
      "evidence": "The BMI image audit found a below-fold PNG without loading=lazy or srcset; three content images lack responsive source selection.",
      "suggestedFix": "Lazy-load below-fold images and provide responsive AVIF/WebP sources where raster content benefits.",
      "artifacts": [
        "evidence/bmi-images.json"
      ],
      "pathId": "bmi",
      "url": "https://www.calculator.net/bmi-calculator.html",
      "effort": "small",
      "confidence": "high"
    },
    {
      "id": "F26",
      "severity": "medium",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "performance",
      "summary": "Background advertising work is disproportionate to the core calculator.",
      "evidence": "The core page is fast and small, yet ad and traffic-quality scripts initiate 15 third-party requests and transfer 294,880 bytes, including background configuration requests.",
      "suggestedFix": "Defer background fetches until idle/consent/visibility, remove redundant traffic-quality work, and enforce a third-party budget.",
      "artifacts": [
        "evidence/mortgage-summary.json",
        "evidence/trackers.json"
      ],
      "pathId": "mortgage",
      "url": "https://www.calculator.net/mortgage-calculator.html",
      "effort": "medium",
      "confidence": "high"
    },
    {
      "id": "F27",
      "severity": "medium",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "efficient-background-processing",
      "guidanceCategory": "performance",
      "summary": "Third-party code consumes about 90% of transferred bytes.",
      "evidence": "HAR measured 294,880 third-party bytes out of 327,468 total; the 201KB ad implementation is over six times the first-party document transfer.",
      "suggestedFix": "Set and monitor a third-party byte/request budget; lazy-load ads and remove vendors that do not justify their resource and privacy cost.",
      "artifacts": [
        "evidence/mortgage-summary.json",
        "evidence/mortgage.har"
      ],
      "pathId": "mortgage",
      "url": "https://www.calculator.net/mortgage-calculator.html",
      "effort": "medium",
      "confidence": "high"
    },
    {
      "id": "F28",
      "severity": "low",
      "principleId": "be-agent-ready",
      "principleCheckId": "structured-agent-capabilities",
      "guidanceId": "webmcp",
      "guidanceCategory": "webmcp",
      "summary": "High-value calculator actions are difficult for agents to invoke safely.",
      "evidence": "No WebMCP/agent tool registration was found, and Lighthouse agentic-browsing scored BMI 0.5 because its accessibility tree is malformed by unlabeled fields.",
      "suggestedFix": "First fix form semantics, then consider exposing selected calculators as typed, constrained WebMCP tools with clear inputs and deterministic outputs.",
      "artifacts": [
        "evidence/bmi-probe.json",
        "evidence/lighthouse-bmi-summary.json"
      ],
      "pathId": "bmi",
      "url": "https://www.calculator.net/bmi-calculator.html",
      "effort": "large",
      "confidence": "medium"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Make forms and custom controls semantic, labelled, keyboard/touch accessible",
      "priority": 1,
      "findingIds": [
        "F04",
        "F06",
        "F08",
        "F10",
        "F11",
        "F12",
        "F22"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Deploy security headers and secure session-cookie defaults",
      "priority": 2,
      "findingIds": [
        "F15",
        "F18",
        "F24"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Reduce and consent-gate the ad/tracker footprint",
      "priority": 3,
      "findingIds": [
        "F07",
        "F16",
        "F26",
        "F27"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Add dark-mode preference support",
      "priority": 4,
      "findingIds": [
        "F01"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Fix color contrast",
      "priority": 5,
      "findingIds": [
        "F09"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Improve sign-in autofill and add passkeys",
      "priority": 6,
      "findingIds": [
        "F17",
        "F23",
        "F24"
      ],
      "guidanceId": "passkeys",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Internationalise layout and locale-sensitive data",
      "priority": 7,
      "findingIds": [
        "F20",
        "F21"
      ],
      "guidanceId": "support-global-calendar-systems",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Add responsive/lazy image delivery",
      "priority": 8,
      "findingIds": [
        "F25"
      ],
      "guidanceId": "deliver-optimized-decorative-images",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Improve metadata and share previews",
      "priority": 9,
      "findingIds": [
        "F13",
        "F14"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Add progressive cross-document transitions and modern tooltip anchoring",
      "priority": 10,
      "findingIds": [
        "F02",
        "F03"
      ],
      "guidanceId": "cross-document-transitions",
      "status": "open"
    },
    {
      "id": "T11",
      "title": "Add component-level container responsiveness",
      "priority": 11,
      "findingIds": [
        "F05"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    },
    {
      "id": "T12",
      "title": "Complete install/offline support",
      "priority": 12,
      "findingIds": [
        "F19"
      ],
      "guidanceId": "conditional-async-dependencies",
      "status": "open"
    },
    {
      "id": "T13",
      "title": "Expose selected calculators as safe structured agent tools",
      "priority": 13,
      "findingIds": [
        "F28"
      ],
      "guidanceId": "webmcp",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 8,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-18T07-55-54-018Z"
}
