{
  "url": "https://business.google.com",
  "auditedAt": "2026-07-19T01:00:24.649Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete audit of four representative localized marketing templates, consent entry, primary signed-out CTA, no-JS rendering, and HTTP 404 behavior.",
  "page": {
    "appType": "mpa",
    "framework": "Google custom elements / server-rendered MPA",
    "notes": "Public Business Profile acquisition site. The fresh UK session first redirects to consent.google.com. Representative pages are server-rendered and retain core content without JavaScript. Not covered: authenticated profile creation beyond Google Account sign-in, other product families (Ads, Merchant Center, Analytics), and every locale duplicate."
  },
  "evidenceUsed": [
    "raw CDP screenshots",
    "DOM/evaluate probes",
    "CDP Network events",
    "Performance.getMetrics",
    "axe-core 4.10.3",
    "JavaScript-disabled rendering",
    "discoverability primitive",
    "headers primitive plus curl response headers",
    "cookies primitive",
    "trackers primitive",
    "secrets primitive",
    "robots/sitemap HTTP fetch",
    "invalid-form flow"
  ],
  "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",
    "summarizer",
    "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": "Fresh-profile regional consent wall.",
      "condition": "fresh profile",
      "findingIds": [
        "F4"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/overview-desktop.png",
      "caption": "overview first viewport at desktop size.",
      "condition": "1440x1000"
    },
    {
      "type": "screenshot",
      "path": "evidence/overview-mobile.png",
      "caption": "overview first viewport on mobile.",
      "condition": "360x800",
      "findingIds": [
        "F7"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/overview-dark.png",
      "caption": "overview remains light under dark preference.",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F1"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/overview-contrast.png",
      "caption": "overview under forced colors/high contrast.",
      "condition": "forced-colors: active"
    },
    {
      "type": "dom",
      "path": "evidence/overview-probe.json",
      "caption": "overview DOM, responsive, image, metadata and performance probe.",
      "condition": "rendered page",
      "findingIds": [
        "F2",
        "F3",
        "F5",
        "F6",
        "F7",
        "F9"
      ]
    },
    {
      "type": "other",
      "path": "evidence/overview-mobile.json",
      "caption": "overview narrow-overflow and focused-control probe.",
      "condition": "360x800",
      "findingIds": [
        "F7"
      ]
    },
    {
      "type": "other",
      "path": "evidence/overview-dark.json",
      "caption": "overview computed color-scheme probe.",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F1"
      ]
    },
    {
      "type": "other",
      "path": "evidence/overview-motion.json",
      "caption": "overview reduced-motion animation probe.",
      "condition": "prefers-reduced-motion: reduce"
    },
    {
      "type": "har-summary",
      "path": "evidence/overview-network-summary.json",
      "caption": "overview CDP network summary."
    },
    {
      "type": "other",
      "path": "evidence/overview-axe.json",
      "caption": "overview axe-core results.",
      "condition": "default"
    },
    {
      "type": "screenshot",
      "path": "evidence/retail-desktop.png",
      "caption": "retail first viewport at desktop size.",
      "condition": "1440x1000"
    },
    {
      "type": "screenshot",
      "path": "evidence/retail-mobile.png",
      "caption": "retail first viewport on mobile.",
      "condition": "360x800"
    },
    {
      "type": "screenshot",
      "path": "evidence/retail-dark.png",
      "caption": "retail remains light under dark preference.",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F1"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/retail-contrast.png",
      "caption": "retail under forced colors/high contrast.",
      "condition": "forced-colors: active"
    },
    {
      "type": "dom",
      "path": "evidence/retail-probe.json",
      "caption": "retail DOM, responsive, image, metadata and performance probe.",
      "condition": "rendered page"
    },
    {
      "type": "other",
      "path": "evidence/retail-mobile.json",
      "caption": "retail narrow-overflow and focused-control probe.",
      "condition": "360x800"
    },
    {
      "type": "other",
      "path": "evidence/retail-dark.json",
      "caption": "retail computed color-scheme probe.",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F1"
      ]
    },
    {
      "type": "other",
      "path": "evidence/retail-motion.json",
      "caption": "retail reduced-motion animation probe.",
      "condition": "prefers-reduced-motion: reduce"
    },
    {
      "type": "har-summary",
      "path": "evidence/retail-network-summary.json",
      "caption": "retail CDP network summary."
    },
    {
      "type": "other",
      "path": "evidence/retail-axe.json",
      "caption": "retail axe-core results.",
      "condition": "default"
    },
    {
      "type": "screenshot",
      "path": "evidence/services-desktop.png",
      "caption": "services first viewport at desktop size.",
      "condition": "1440x1000"
    },
    {
      "type": "screenshot",
      "path": "evidence/services-mobile.png",
      "caption": "services first viewport on mobile.",
      "condition": "360x800"
    },
    {
      "type": "screenshot",
      "path": "evidence/services-dark.png",
      "caption": "services remains light under dark preference.",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F1"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/services-contrast.png",
      "caption": "services under forced colors/high contrast.",
      "condition": "forced-colors: active"
    },
    {
      "type": "dom",
      "path": "evidence/services-probe.json",
      "caption": "services DOM, responsive, image, metadata and performance probe.",
      "condition": "rendered page"
    },
    {
      "type": "other",
      "path": "evidence/services-mobile.json",
      "caption": "services narrow-overflow and focused-control probe.",
      "condition": "360x800"
    },
    {
      "type": "other",
      "path": "evidence/services-dark.json",
      "caption": "services computed color-scheme probe.",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F1"
      ]
    },
    {
      "type": "other",
      "path": "evidence/services-motion.json",
      "caption": "services reduced-motion animation probe.",
      "condition": "prefers-reduced-motion: reduce"
    },
    {
      "type": "har-summary",
      "path": "evidence/services-network-summary.json",
      "caption": "services CDP network summary."
    },
    {
      "type": "other",
      "path": "evidence/services-axe.json",
      "caption": "services axe-core results.",
      "condition": "default",
      "findingIds": [
        "F8"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/restaurants-desktop.png",
      "caption": "restaurants first viewport at desktop size.",
      "condition": "1440x1000"
    },
    {
      "type": "screenshot",
      "path": "evidence/restaurants-mobile.png",
      "caption": "restaurants first viewport on mobile.",
      "condition": "360x800"
    },
    {
      "type": "screenshot",
      "path": "evidence/restaurants-dark.png",
      "caption": "restaurants remains light under dark preference.",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F1"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/restaurants-contrast.png",
      "caption": "restaurants under forced colors/high contrast.",
      "condition": "forced-colors: active"
    },
    {
      "type": "dom",
      "path": "evidence/restaurants-probe.json",
      "caption": "restaurants DOM, responsive, image, metadata and performance probe.",
      "condition": "rendered page"
    },
    {
      "type": "other",
      "path": "evidence/restaurants-mobile.json",
      "caption": "restaurants narrow-overflow and focused-control probe.",
      "condition": "360x800"
    },
    {
      "type": "other",
      "path": "evidence/restaurants-dark.json",
      "caption": "restaurants computed color-scheme probe.",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F1"
      ]
    },
    {
      "type": "other",
      "path": "evidence/restaurants-motion.json",
      "caption": "restaurants reduced-motion animation probe.",
      "condition": "prefers-reduced-motion: reduce"
    },
    {
      "type": "har-summary",
      "path": "evidence/restaurants-network-summary.json",
      "caption": "restaurants CDP network summary."
    },
    {
      "type": "other",
      "path": "evidence/restaurants-axe.json",
      "caption": "restaurants axe-core results.",
      "condition": "default",
      "findingIds": [
        "F8"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/create-flow.png",
      "caption": "Primary CTA reaches the expected signed-out Google Account flow.",
      "condition": "signed out"
    },
    {
      "type": "other",
      "path": "evidence/create-flow.json",
      "caption": "Sign-in flow fields and autocomplete probe."
    },
    {
      "type": "screenshot",
      "path": "evidence/auth-error.png",
      "caption": "Empty Next submission shows inline required-field feedback.",
      "condition": "invalid empty submission"
    },
    {
      "type": "other",
      "path": "evidence/auth-error.json",
      "caption": "Auth validation state after empty submission."
    },
    {
      "type": "screenshot",
      "path": "evidence/overview-nojs.png",
      "caption": "Overview retains core content and CTA without JavaScript.",
      "condition": "JavaScript disabled"
    },
    {
      "type": "dom",
      "path": "evidence/overview-nojs.json",
      "caption": "No-JS title, H1, text and link inventory."
    },
    {
      "type": "other",
      "path": "evidence/memory-metrics.json",
      "caption": "Performance.getMetrics before and after opening/closing FAQ ten times."
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability.json",
      "caption": "Raw HTML and crawler comparison; rendered side was consent surface, so raw/no-JS evidence was used for the target."
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-rendered.png",
      "caption": "Consent-rendered browser side of discoverability pair."
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-crawler.png",
      "caption": "Crawler/no-JS side of discoverability pair."
    },
    {
      "type": "other",
      "path": "evidence/headers.txt",
      "caption": "Actual Business Profile response headers from curl.",
      "condition": "HTTP response",
      "findingIds": [
        "F10"
      ]
    },
    {
      "type": "other",
      "path": "evidence/robots-root.txt",
      "caption": "Root robots policy allowing localized routes."
    },
    {
      "type": "other",
      "path": "evidence/sitemap-root.xml",
      "caption": "Root sitemap index."
    },
    {
      "type": "other",
      "path": "evidence/404-headers.txt",
      "caption": "Redirect followed by intentional HTTP 404 response."
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "Secret scan on the pre-consent surface; detected Google public client keys, not sensitive secrets."
    }
  ],
  "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": "Across all four paths, prefers-color-scheme: dark matched, but body remained rgb(255,255,255), text rgb(60,64,67), and color-scheme was normal",
      "evidence": "Across all four paths, prefers-color-scheme: dark matched, but body remained rgb(255,255,255), text rgb(60,64,67), and color-scheme was normal; dark screenshots are visually identical to light.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-dark.png",
        "evidence/overview-dark.json"
      ],
      "findingIds": [
        "F1"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Computed media and animation probe on all four paths",
      "evidence": "All four paths matched prefers-reduced-motion: reduce and reported zero active document animations after settling.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-motion.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Forced-colors screenshots and axe review",
      "evidence": "Forced-colors/high-contrast captures preserve visible headings, links, controls and CTA boundaries; axe found no completed contrast violation.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/overview-contrast.png"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered probes found browser View Transition support, while the raw authored page contained no @view-transition or startViewTransition opt-in",
      "evidence": "Rendered probes found browser View Transition support, while the raw authored page contained no @view-transition or startViewTransition opt-in; sector links perform conventional full-document swaps.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-probe.json"
      ],
      "findingIds": [
        "F2"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "high",
      "method": "CSS/DOM and long-task probe",
      "evidence": "No scroll-linked/parallax effect or scroll animation was present, and no buffered long tasks were recorded; the page avoids a JS scroll-animation anti-pattern.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-probe.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "Responsive screenshots and control inventory",
      "evidence": "Core navigation and CTA use native links/buttons; no custom pointer-only gesture was required for the acquisition journey.",
      "pathIds": [
        "overview",
        "create-flow"
      ],
      "artifacts": [
        "evidence/overview-mobile.png"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "Desktop and mobile captures show persistent two-level chrome, but the authored output contains no scroll-state container-query or progress treatment to help orient users on the long page.",
      "evidence": "Desktop and mobile captures show persistent two-level chrome, but the authored output contains no scroll-state container-query or progress treatment to help orient users on the long page.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-desktop.png",
        "evidence/overview-probe.json"
      ],
      "findingIds": [
        "F3"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "pass",
      "confidence": "high",
      "method": "Viewport screenshots at two sizes",
      "evidence": "Navigation and CTA chrome remains attached and unclipped at desktop and 360px; no drifting edge overlay was observed in the exercised states.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-desktop.png",
        "evidence/overview-mobile.png"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Visual hierarchy and flow walkthrough",
      "evidence": "H1, explanatory copy and blue Create your profile CTA form a clear sequence; CTA focus moves to an explicitly headed Sign in page.",
      "pathIds": [
        "overview",
        "create-flow"
      ],
      "artifacts": [
        "evidence/overview-desktop.png",
        "evidence/create-flow.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "The fresh-profile screenshot shows only “Before you continue to Google”",
      "evidence": "The fresh-profile screenshot shows only “Before you continue to Google”; the actual Business Profile value proposition and CTA are inaccessible until Reject all or Accept all is chosen. Choices are symmetric, so this is interruption rather than deceptive consent.",
      "pathIds": [
        "consent"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "F4"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Raw overview output contains no dialog, popover, or details elements despite dropdown navigation and an FAQ disclosure",
      "evidence": "Raw overview output contains no dialog, popover, or details elements despite dropdown navigation and an FAQ disclosure; controls are script-enhanced custom elements/buttons.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-probe.json"
      ],
      "findingIds": [
        "F5"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "First-viewport visual review",
      "evidence": "The first viewport prioritises the value proposition and CTA with restrained navigation and no decorative panel borders around copy.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/overview-desktop.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "CDP layout probes at 360px",
      "evidence": "All four templates reported scrollWidth 360 equal to innerWidth 360 and showed a reflowed single-column mobile layout.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/overview-mobile.json",
        "evidence/overview-mobile.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "The same page adapts successfully at 360px, but stylesheet inspection found no @container rules, so reusable cards and navigation depend on page-level viewport logic.",
      "evidence": "The same page adapts successfully at 360px, but stylesheet inspection found no @container rules, so reusable cards and navigation depend on page-level viewport logic.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-mobile.png",
        "evidence/overview-probe.json"
      ],
      "findingIds": [
        "F6"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "The focus probe selected the first visible logo link and computed outline “none 3px” with no box-shadow",
      "evidence": "The focus probe selected the first visible logo link and computed outline “none 3px” with no box-shadow; the mobile screenshot shows no visible focused state. Probes also found 1–4 sub-24px targets by template.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-mobile.png",
        "evidence/overview-mobile.json"
      ],
      "findingIds": [
        "F7"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "First-viewport screenshot and heading probe",
      "evidence": "The H1 names the free Business Profile offer and the prominent Create your profile CTA is visible without scrolling on desktop and mobile.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-desktop.png",
        "evidence/overview-mobile.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "CTA walkthrough",
      "evidence": "Create your profile resolves to the expected Google Account Sign in screen with a labelled username field, Next action and account creation path.",
      "pathIds": [
        "overview",
        "create-flow"
      ],
      "artifacts": [
        "evidence/create-flow.png",
        "evidence/create-flow.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Invalid-submit and HTTP failure probes",
      "evidence": "Submitting the sign-in step empty shows “Enter an email or phone number” and aria-invalid; an unknown product URL returns an intentional HTTP 404 with a titled error document.",
      "pathIds": [
        "create-flow",
        "not-found"
      ],
      "artifacts": [
        "evidence/auth-error.json",
        "evidence/404-headers.txt"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "pass",
      "confidence": "medium",
      "method": "Performance entries and CDP metrics",
      "evidence": "Warm-session LCP entries were 180–324ms, no long tasks were buffered, and settled screenshots showed no visible shift; network sizes remained modest.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/overview-probe.json",
        "evidence/overview-network-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "medium",
      "method": "Image geometry probe and settled captures",
      "evidence": "37 of 38 overview images had dimensions in the rendered state, no oversized images were found, and no late movement was seen during the settle window.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-probe.json",
        "evidence/overview-desktop.png"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Performance long-task probe",
      "evidence": "All four templates reported zero buffered long tasks; JS heap was about 22–24MB after settling.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/overview-probe.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "pass",
      "confidence": "high",
      "method": "CDP network summary and target headers",
      "evidence": "Template navigations completed without HTTP errors; encoded transfer was about 83–234KB in the persistent session and the target uses HTTP/2/HSTS.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/retail-network-summary.json",
        "evidence/headers.txt"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "pass",
      "confidence": "medium",
      "method": "Network and main-thread proportionality review",
      "evidence": "No script produced a long task and total encoded navigation cost stayed below 235KB in the exercised session; no third-party tracker dominated execution.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/retail-network-summary.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "axe-core reported role-img-alt on four ion-text-image elements on Services and four on Restaurants because role=img had no aria-label, aria-labelledby, or title.",
      "evidence": "axe-core reported role-img-alt on four ion-text-image elements on Services and four on Restaurants because role=img had no aria-label, aria-labelledby, or title.",
      "pathIds": [
        "services"
      ],
      "artifacts": [
        "evidence/services-axe.json",
        "evidence/restaurants-axe.json"
      ],
      "findingIds": [
        "F8"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Visual and axe review",
      "evidence": "Normal and forced-color captures retain legible foreground/background separation; axe returned no completed color-contrast violation (three nodes remained manual review on overview).",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-desktop.png",
        "evidence/overview-contrast.png",
        "evidence/overview-axe.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "pass",
      "confidence": "high",
      "method": "Heading/landmark and axe review",
      "evidence": "Each page has an H1, main, header, nav and footer; axe found no heading-order or landmark violation. Focus visibility is separately failed under input-modality-aware.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/overview-probe.json",
        "evidence/overview-axe.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Desktop/mobile screenshots",
      "evidence": "Headlines and body copy reflow into readable centered measures without clipping at 1440px and 360px.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-desktop.png",
        "evidence/overview-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "pass",
      "confidence": "high",
      "method": "Viewport and media probe",
      "evidence": "Viewport permits scaling to 5x, all templates reflow at 360px without horizontal overflow, and primary CTAs are large touch targets.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/overview-probe.json",
        "evidence/overview-mobile.png"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Runtime exception collection",
      "evidence": "No uncaught Runtime exception was captured on any of the four representative templates.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/overview-probe.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "pass",
      "confidence": "high",
      "method": "DOM and image probe",
      "evidence": "Pages use HTML doctype, UTF-8, viewport metadata, canonical titles and correctly displayed images; no oversized image was detected.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/overview-probe.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "high",
      "method": "Runtime and permission observation",
      "evidence": "No console exception or permission prompt appeared on load; the primary flow permits normal text input and uses current platform controls.",
      "pathIds": [
        "overview",
        "create-flow"
      ],
      "artifacts": [
        "evidence/overview-probe.json",
        "evidence/create-flow.png"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "Metadata probe",
      "evidence": "Each representative page has a distinct descriptive title and meta description tailored to overview, retail, services or restaurants.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/overview-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "DOM, robots and no-JS probes",
      "evidence": "Real href links remain in the no-JS DOM (184 on overview), viewport metadata is present, and root robots explicitly allows /uk/.",
      "pathIds": [
        "overview",
        "nojs"
      ],
      "artifacts": [
        "evidence/overview-nojs.json",
        "evidence/robots-root.txt"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "All four UK pages provide canonical URLs and localized language selection, but the DOM probe found zero link[hreflang] elements despite many equivalent regional/language variants. robots.txt allows /uk/ and points to sitemaps.",
      "evidence": "All four UK pages provide canonical URLs and localized language selection, but the DOM probe found zero link[hreflang] elements despite many equivalent regional/language variants. robots.txt allows /uk/ and points to sitemaps.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-probe.json",
        "evidence/robots-root.txt",
        "evidence/sitemap-root.xml"
      ],
      "findingIds": [
        "F9"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "Metadata probe",
      "evidence": "Every representative page exposes one JSON-LD block and six Open Graph properties aligned with visible content.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/overview-probe.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "pass",
      "confidence": "high",
      "method": "Actual response-header and cookie review",
      "evidence": "Target is HTTPS with HSTS, nonce/strict-dynamic CSP, SAMEORIGIN and nosniff; observed Google cookies were Secure and SameSite=Lax.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/headers.txt"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "pass",
      "confidence": "high",
      "method": "CDP network and tracker review",
      "evidence": "Requests were confined largely to Google-owned business.google.com/gstatic/google origins; the tracker primitive found no known tracker and no user data form exists before sign-in.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-network-summary.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "high",
      "method": "Load observation and auth walkthrough",
      "evidence": "No permission prompt appeared on load; account creation delegates to Google Account with username autocomplete and its modern authentication stack.",
      "pathIds": [
        "overview",
        "create-flow"
      ],
      "artifacts": [
        "evidence/create-flow.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Actual target headers include HSTS, nonce/strict-dynamic CSP, SAMEORIGIN, nosniff and COOP, but no Referrer-Policy",
      "evidence": "Actual target headers include HSTS, nonce/strict-dynamic CSP, SAMEORIGIN, nosniff and COOP, but no Referrer-Policy; Permissions-Policy only enumerates UA client hints and does not explicitly restrict sensitive capabilities.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/headers.txt"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "JavaScript-disabled navigation",
      "evidence": "With script execution disabled, the overview retains title, H1, core explanatory content, 184 links and the Create your profile CTA.",
      "pathIds": [
        "nojs"
      ],
      "artifacts": [
        "evidence/overview-nojs.png",
        "evidence/overview-nojs.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Responsive multi-route walkthrough",
      "evidence": "Four templates and the auth transition rendered without clipped chrome, blank shells, console exceptions or HTTP resource errors.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants",
        "create-flow"
      ],
      "artifacts": [
        "evidence/overview-mobile.png",
        "evidence/overview-probe.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from site profile and exercised paths",
      "evidence": "This is a public marketing/content site, not an installed app; offline installability is not needed for its primary acquisition task.",
      "reason": "This is a public marketing/content site, not an installed app; offline installability is not needed for its primary acquisition task.",
      "pathIds": [
        "overview"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "HTTP error probe",
      "evidence": "An unknown nested route returns an actual 404 rather than misleading success; the response document is titled “404 Error - Business Profile”.",
      "pathIds": [
        "not-found"
      ],
      "artifacts": [
        "evidence/404-headers.txt"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "DOM and locale UI probe",
      "evidence": "All audited UK pages declare lang=en and ltr; the footer provides a broad locale/language selector and mobile reflow survives narrow inline size.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/overview-probe.json",
        "evidence/overview-nojs.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered locale review",
      "evidence": "The UK English variant uses localised copy and human-readable relative wording; these marketing templates contain no currency/date computation requiring custom formatting.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/overview-nojs.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from site profile and exercised paths",
      "evidence": "The audited marketing templates do not present user-specific events, schedules, or stored times requiring time-zone/DST handling.",
      "reason": "The audited marketing templates do not present user-specific events, schedules, or stored times requiring time-zone/DST handling.",
      "pathIds": [
        "overview"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "Consent and CTA review",
      "evidence": "Reject all and Accept all have equal prominence, price is explicitly free, and the CTA truthfully leads to Google Account sign-in with a Create account alternative.",
      "pathIds": [
        "consent",
        "overview",
        "create-flow"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/create-flow.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "pass",
      "confidence": "high",
      "method": "Invalid auth-form submission",
      "evidence": "Empty Next submission gives immediate specific feedback, marks the field aria-invalid and preserves the entered step without blame.",
      "pathIds": [
        "create-flow"
      ],
      "artifacts": [
        "evidence/auth-error.png",
        "evidence/auth-error.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "pass",
      "confidence": "high",
      "method": "Form DOM probe",
      "evidence": "The sign-in identifier field has a visible label and autocomplete=username; no marketing-page input obstructs autofill.",
      "pathIds": [
        "create-flow"
      ],
      "artifacts": [
        "evidence/create-flow.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "high",
      "method": "Acquisition/auth walkthrough",
      "evidence": "The service is repeatedly labelled free; Create your profile leads predictably to Google Account sign-in and offers account creation and privacy/terms links.",
      "pathIds": [
        "overview",
        "create-flow"
      ],
      "artifacts": [
        "evidence/overview-desktop.png",
        "evidence/create-flow.png"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "pass",
      "confidence": "high",
      "method": "Rendered image/network probe",
      "evidence": "No image exceeded 2.2x its rendered width on any representative page and navigation byte totals remained proportionate to the image-led marketing design.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/overview-probe.json",
        "evidence/overview-network-summary.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "high",
      "method": "Long-task and network observation",
      "evidence": "No long tasks or HTTP errors were observed after settlement and no known analytics tracker was detected on the fresh pre-consent surface.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/overview-probe.json",
        "evidence/overview-network-summary.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "pass",
      "confidence": "high",
      "method": "Network and visual review",
      "evidence": "Cross-origin requests are primarily same-organisation gstatic/font assets; encoded route transfers stayed under 235KB and no autoplay media was visible in first viewports.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/retail-network-summary.json",
        "evidence/overview-desktop.png"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from site profile and exercised paths",
      "evidence": "Agent-facing WebMCP capabilities are emerging and not required for this conventional marketing and authenticated account-creation surface.",
      "reason": "Agent-facing WebMCP capabilities are emerging and not required for this conventional marketing and authenticated account-creation surface.",
      "pathIds": [
        "overview"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from site profile and exercised paths",
      "evidence": "The audited acquisition pages contain no summarisation or language-model task where on-device inference would materially improve the experience.",
      "reason": "The audited acquisition pages contain no summarisation or language-model task where on-device inference would materially improve the experience.",
      "pathIds": [
        "overview"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "medium",
      "method": "Before/after Performance.getMetrics",
      "evidence": "After opening/closing the FAQ ten times, Nodes, Documents, Frames and JSEventListeners were unchanged; heap rose 2.14MB without structural accumulation.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/memory-metrics.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "CDP Performance.getMetrics",
      "evidence": "Representative templates settled around 4,743–6,065 DOM nodes and 22–24MB JS heap, proportionate to their long image-led marketing pages.",
      "pathIds": [
        "overview",
        "retail",
        "services",
        "restaurants"
      ],
      "artifacts": [
        "evidence/overview-probe.json"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Before/after Performance.getMetrics",
      "evidence": "Ten FAQ open/close cycles left Nodes at 6,065 and JSEventListeners at 404, with no document or frame growth.",
      "pathIds": [
        "overview"
      ],
      "artifacts": [
        "evidence/memory-metrics.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F1"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F2"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F3"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F4",
        "F5"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F6",
        "F7"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F8"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F9"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "This emerging agent-facing principle is not applicable to the conventional public marketing and authenticated account-creation surface."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "consent",
      "description": "Regional consent entry surface before the product site; checked symmetry and interruption.",
      "url": "https://business.google.com",
      "conditions": [
        "fresh profile",
        "UK region"
      ],
      "result": "issues"
    },
    {
      "id": "overview",
      "description": "Business Profile overview and primary acquisition landing page.",
      "url": "https://business.google.com/uk/business-profile/",
      "conditions": [
        "1440x1000",
        "360x800",
        "dark",
        "reduced motion",
        "forced colors",
        "keyboard focus"
      ],
      "result": "issues"
    },
    {
      "id": "retail",
      "description": "Retail audience/detail template representing a sector-specific landing page.",
      "url": "https://business.google.com/uk/business-profile/retail/",
      "conditions": [
        "1440x1000",
        "360x800",
        "dark",
        "reduced motion",
        "forced colors"
      ],
      "result": "issues"
    },
    {
      "id": "services",
      "description": "Services audience/detail template; selected for distinct illustrative cards.",
      "url": "https://business.google.com/uk/business-profile/services/",
      "conditions": [
        "1440x1000",
        "360x800",
        "dark",
        "reduced motion",
        "forced colors",
        "axe-core"
      ],
      "result": "issues"
    },
    {
      "id": "restaurants",
      "description": "Restaurant audience/detail template; selected for sector content and illustrative cards.",
      "url": "https://business.google.com/uk/business-profile/restaurants/",
      "conditions": [
        "1440x1000",
        "360x800",
        "dark",
        "reduced motion",
        "forced colors",
        "axe-core"
      ],
      "result": "issues"
    },
    {
      "id": "create-flow",
      "description": "Primary Create your profile CTA through the expected Google Account sign-in boundary, including empty-submit validation.",
      "url": "https://business.google.com/create/new",
      "conditions": [
        "signed out",
        "empty form submission"
      ],
      "result": "pass"
    },
    {
      "id": "nojs",
      "description": "Overview with JavaScript disabled to test progressive enhancement.",
      "url": "https://business.google.com/uk/business-profile/",
      "conditions": [
        "JavaScript disabled"
      ],
      "result": "pass"
    },
    {
      "id": "not-found",
      "description": "Unknown nested URL to inspect HTTP failure handling.",
      "url": "https://business.google.com/uk/business-profile/does-not-exist",
      "conditions": [
        "HTTP request"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F1",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "pathId": "overview",
      "url": "https://business.google.com/uk/business-profile/",
      "confidence": "high",
      "summary": "The localized Business Profile pages ignore the user’s dark-color preference.",
      "evidence": "Across all four paths, prefers-color-scheme: dark matched, but body remained rgb(255,255,255), text rgb(60,64,67), and color-scheme was normal; dark screenshots are visually identical to light.",
      "suggestedFix": "Declare color-scheme and provide preference-driven dark surface/text tokens, using light-dark() or a prefers-color-scheme query.",
      "effort": "medium",
      "artifacts": [
        "evidence/overview-dark.png",
        "evidence/overview-dark.json"
      ]
    },
    {
      "id": "F2",
      "severity": "low",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "cross-document-transitions",
      "guidanceCategory": "user-experience",
      "pathId": "overview",
      "url": "https://business.google.com/uk/business-profile/",
      "confidence": "high",
      "summary": "Cross-document navigation does not opt into View Transitions.",
      "evidence": "Rendered probes found browser View Transition support, while the raw authored page contained no @view-transition or startViewTransition opt-in; sector links perform conventional full-document swaps.",
      "suggestedFix": "Add @view-transition { navigation: auto } for same-origin sector routes and suppress non-essential motion under reduced motion.",
      "effort": "small",
      "artifacts": [
        "evidence/overview-probe.json"
      ]
    },
    {
      "id": "F3",
      "severity": "low",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "scroll-position-aware-elements",
      "guidanceCategory": "user-experience",
      "pathId": "overview",
      "url": "https://business.google.com/uk/business-profile/",
      "confidence": "high",
      "summary": "Persistent navigation does not expose scroll-state feedback.",
      "evidence": "Desktop and mobile captures show persistent two-level chrome, but the authored output contains no scroll-state container-query or progress treatment to help orient users on the long page.",
      "suggestedFix": "Use a sticky scroll-state container and a subtle scrolled state or progress cue on long landing pages.",
      "effort": "small",
      "artifacts": [
        "evidence/overview-desktop.png",
        "evidence/overview-probe.json"
      ]
    },
    {
      "id": "F4",
      "severity": "medium",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "user-experience",
      "pathId": "consent",
      "url": "https://business.google.com",
      "confidence": "high",
      "summary": "A full-page consent interstitial blocks product content on first visit.",
      "evidence": "The fresh-profile screenshot shows only “Before you continue to Google”; the actual Business Profile value proposition and CTA are inaccessible until Reject all or Accept all is chosen. Choices are symmetric, so this is interruption rather than deceptive consent.",
      "suggestedFix": "Where policy permits, keep essential content visible and present consent as a compact semantic dialog/banner with equally prominent accept and reject actions.",
      "effort": "large",
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "id": "F5",
      "severity": "low",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "user-experience",
      "pathId": "overview",
      "url": "https://business.google.com/uk/business-profile/",
      "confidence": "high",
      "summary": "Disclosure and menu UI is custom rather than using modern semantic primitives.",
      "evidence": "Raw overview output contains no dialog, popover, or details elements despite dropdown navigation and an FAQ disclosure; controls are script-enhanced custom elements/buttons.",
      "suggestedFix": "Use details/summary for FAQ disclosure and popover/dialog primitives for transient menus where compatible.",
      "effort": "medium",
      "artifacts": [
        "evidence/overview-probe.json"
      ]
    },
    {
      "id": "F6",
      "severity": "low",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "user-experience",
      "pathId": "overview",
      "url": "https://business.google.com/uk/business-profile/",
      "confidence": "high",
      "summary": "Responsive changes are viewport-driven, with no container-query evidence.",
      "evidence": "The same page adapts successfully at 360px, but stylesheet inspection found no @container rules, so reusable cards and navigation depend on page-level viewport logic.",
      "suggestedFix": "Introduce container-type on reusable card/list regions and use size-aware @container rules for local adaptation.",
      "effort": "medium",
      "artifacts": [
        "evidence/overview-mobile.png",
        "evidence/overview-probe.json"
      ]
    },
    {
      "id": "F7",
      "severity": "medium",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "overview",
      "url": "https://business.google.com/uk/business-profile/",
      "confidence": "high",
      "summary": "The first keyboard-focus target has no visible focus indicator.",
      "evidence": "The focus probe selected the first visible logo link and computed outline “none 3px” with no box-shadow; the mobile screenshot shows no visible focused state. Probes also found 1–4 sub-24px targets by template.",
      "suggestedFix": "Give every focusable element a strong :focus-visible outline with offset and keep interactive hit areas at least 24px, preferably 44px for primary touch controls.",
      "effort": "small",
      "artifacts": [
        "evidence/overview-mobile.png",
        "evidence/overview-mobile.json"
      ]
    },
    {
      "id": "F8",
      "severity": "medium",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "services",
      "url": "https://business.google.com/uk/business-profile/services/",
      "confidence": "high",
      "summary": "Illustrative role=img components lack accessible text on two sector pages.",
      "evidence": "axe-core reported role-img-alt on four ion-text-image elements on Services and four on Restaurants because role=img had no aria-label, aria-labelledby, or title.",
      "suggestedFix": "If informative, provide concise accessible names; if decorative, remove role=img and hide the wrappers from the accessibility tree.",
      "effort": "small",
      "artifacts": [
        "evidence/services-axe.json",
        "evidence/restaurants-axe.json"
      ]
    },
    {
      "id": "F9",
      "severity": "medium",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "translator",
      "guidanceCategory": "built-in-ai",
      "pathId": "overview",
      "url": "https://business.google.com/uk/business-profile/",
      "confidence": "high",
      "summary": "Localized pages omit hreflang links.",
      "evidence": "All four UK pages provide canonical URLs and localized language selection, but the DOM probe found zero link[hreflang] elements despite many equivalent regional/language variants. robots.txt allows /uk/ and points to sitemaps.",
      "suggestedFix": "Add reciprocal hreflang annotations for equivalent locale variants plus x-default, aligned with canonical and sitemap URLs.",
      "effort": "medium",
      "artifacts": [
        "evidence/overview-probe.json",
        "evidence/robots-root.txt",
        "evidence/sitemap-root.xml"
      ]
    },
    {
      "id": "F10",
      "severity": "low",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "pathId": "overview",
      "url": "https://business.google.com/uk/business-profile/",
      "confidence": "high",
      "summary": "The target omits Referrer-Policy and exposes only a narrow client-hints Permissions-Policy.",
      "evidence": "Actual target headers include HSTS, nonce/strict-dynamic CSP, SAMEORIGIN, nosniff and COOP, but no Referrer-Policy; Permissions-Policy only enumerates UA client hints and does not explicitly restrict sensitive capabilities.",
      "suggestedFix": "Set a deliberate Referrer-Policy such as strict-origin-when-cross-origin and explicitly disable unneeded sensitive capabilities in Permissions-Policy.",
      "effort": "small",
      "artifacts": [
        "evidence/headers.txt"
      ]
    }
  ],
  "taskList": [
    {
      "id": "T1",
      "title": "Give every focusable element a strong :focus-visible outline with offset and keep interactive hit areas at least 24px, preferably 44px for primary touch controls",
      "priority": 1,
      "findingIds": [
        "F7"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T2",
      "title": "If informative, provide concise accessible names; if decorative, remove role=img and hide the wrappers from the accessibility tree",
      "priority": 2,
      "findingIds": [
        "F8"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T3",
      "title": "Declare color-scheme and provide preference-driven dark surface/text tokens, using light-dark() or a prefers-color-scheme query",
      "priority": 3,
      "findingIds": [
        "F1"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T4",
      "title": "Add reciprocal hreflang annotations for equivalent locale variants plus x-default, aligned with canonical and sitemap URLs",
      "priority": 4,
      "findingIds": [
        "F9"
      ],
      "guidanceId": "translator",
      "status": "open"
    },
    {
      "id": "T5",
      "title": "Where policy permits, keep essential content visible and present consent as a compact semantic dialog/banner with equally prominent accept and reject actions",
      "priority": 5,
      "findingIds": [
        "F4"
      ],
      "guidanceId": "light-dismiss-a-dialog",
      "status": "open"
    },
    {
      "id": "T6",
      "title": "Set a deliberate Referrer-Policy such as strict-origin-when-cross-origin and explicitly disable unneeded sensitive capabilities in Permissions-Policy",
      "priority": 6,
      "findingIds": [
        "F10"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T7",
      "title": "Introduce container-type on reusable card/list regions and use size-aware @container rules for local adaptation",
      "priority": 7,
      "findingIds": [
        "F6"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    },
    {
      "id": "T8",
      "title": "Use details/summary for FAQ disclosure and popover/dialog primitives for transient menus where compatible",
      "priority": 8,
      "findingIds": [
        "F5"
      ],
      "guidanceId": "declarative-dialog-popover-control",
      "status": "open"
    },
    {
      "id": "T9",
      "title": "Use a sticky scroll-state container and a subtle scrolled state or progress cue on long landing pages",
      "priority": 9,
      "findingIds": [
        "F3"
      ],
      "guidanceId": "scroll-position-aware-elements",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Add @view-transition { navigation: auto } for same-origin sector routes and suppress non-essential motion under reduced motion",
      "priority": 10,
      "findingIds": [
        "F2"
      ],
      "guidanceId": "cross-document-transitions",
      "status": "open"
    }
  ],
  "budget": {
    "wallClockSeconds": 2400,
    "pathCount": 8,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-19T01-00-24-649Z"
}
