{
  "url": "https://www.canva.com",
  "auditedAt": "2026-07-20T08:57:17.484Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete representative audit of five public archetypes. Authenticated editor, checkout completion, localized variants and every template URL were out of scope.",
  "page": {
    "appType": "hybrid",
    "framework": "React-like",
    "notes": "Public marketing/listing/detail pages redirect by locale and hydrate into a large React-like experience. No authenticated editor source was available."
  },
  "evidenceUsed": [
    "screenshot",
    "DOM+computed CSS",
    "layout metrics/CLS observer",
    "evaluate probes",
    "discoverability/raw HTML",
    "HAR/network summary",
    "DevTools trace",
    "Lighthouse",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap summaries",
    "raw HTTP/robots"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "light-dismiss-a-dialog",
    "validate-input-after-interaction",
    "optimize-image-priority",
    "identify-heavy-scripts",
    "break-up-long-tasks",
    "security",
    "privacy",
    "html",
    "fluid-scaling",
    "webmcp",
    "same-document-transitions",
    "visually-stable-font-fallbacks",
    "manage-recurring-intervals"
  ],
  "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
  },
  "paths": [
    {
      "id": "home",
      "description": "Public landing page and primary “Start creating” entry point; represents global navigation, consent, product proposition and homepage content.",
      "url": "https://www.canva.com/en_gb/",
      "conditions": [
        "desktop 780x493",
        "mobile 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "keyboard-focus probe",
        "no JavaScript/raw HTML"
      ],
      "result": "issues"
    },
    {
      "id": "templates",
      "description": "Template listing/search archetype; selected because it is a high-volume discovery journey with dynamic cards.",
      "url": "https://www.canva.com/templates/",
      "conditions": [
        "desktop",
        "mobile 360x800",
        "no JavaScript/raw HTML"
      ],
      "result": "issues"
    },
    {
      "id": "presentation-detail",
      "description": "Product/detail landing archetype for creating a presentation; represents SEO landing pages and a route into creation.",
      "url": "https://www.canva.com/presentations/",
      "conditions": [
        "desktop",
        "no JavaScript/raw HTML"
      ],
      "result": "issues"
    },
    {
      "id": "pricing",
      "description": "Commercial decision page; represents plan comparison, pricing clarity and account conversion.",
      "url": "https://www.canva.com/pricing/",
      "conditions": [
        "desktop"
      ],
      "result": "issues"
    },
    {
      "id": "help",
      "description": "Support/search surface; represents recovery and self-service help.",
      "url": "https://www.canva.com/help/",
      "conditions": [
        "desktop"
      ],
      "result": "pass"
    },
    {
      "id": "error",
      "description": "Invalid sitemap URL response was inspected as a representative not-found recovery state; it offered a home link and error identifier.",
      "url": "https://www.canva.com/sitemap.xml",
      "conditions": [
        "raw HTTP"
      ],
      "result": "pass"
    }
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "Homepage first viewport with consent panel",
      "condition": "desktop",
      "findingIds": [
        "CANVA-001",
        "CANVA-003",
        "CANVA-004"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "Homepage mobile first viewport",
      "condition": "360x800",
      "findingIds": [
        "CANVA-003"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-mobile-layout.json",
      "caption": "Homepage mobile layout metrics",
      "condition": "360x800",
      "findingIds": [
        "CANVA-003"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "Homepage under dark preference",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "CANVA-001"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-reduced-probe.json",
      "caption": "Animation inventory under reduced-motion",
      "condition": "prefers-reduced-motion: reduce",
      "findingIds": [
        "CANVA-002"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "Rendered homepage DOM and CSS",
      "condition": "desktop",
      "findingIds": [
        "CANVA-004",
        "CANVA-015"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse.json",
      "caption": "Lighthouse performance/accessibility/best-practices/SEO run",
      "condition": "mobile throttling",
      "findingIds": [
        "CANVA-006",
        "CANVA-007",
        "CANVA-008",
        "CANVA-009"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "Homepage network archive",
      "condition": "6 second load",
      "findingIds": [
        "CANVA-007"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "Compact homepage network summary",
      "condition": "6 second load",
      "findingIds": [
        "CANVA-007"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "DevTools performance trace",
      "condition": "load",
      "findingIds": [
        "CANVA-006"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "Trace timing and long-task summary",
      "condition": "load",
      "findingIds": [
        "CANVA-006"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-headers.json",
      "caption": "Security response header inspection",
      "condition": "load",
      "findingIds": [
        "CANVA-010"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-cookies.json",
      "caption": "Cookie security inspection",
      "condition": "load",
      "findingIds": [
        "CANVA-010"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-trackers.json",
      "caption": "Third-party/tracker origin inventory",
      "condition": "5 second load",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-secrets.json",
      "caption": "Client secret scan",
      "condition": "load",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-images.json",
      "caption": "Rendered image delivery inventory",
      "condition": "load",
      "findingIds": [
        "CANVA-008"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "Homepage raw-vs-rendered content comparison",
      "condition": "JavaScript/no-JavaScript",
      "findingIds": [
        "CANVA-011",
        "CANVA-012"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "Homepage rendered browser view",
      "condition": "JavaScript",
      "findingIds": [
        "CANVA-011",
        "CANVA-012"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "Homepage crawler/no-JS view",
      "condition": "JavaScript disabled",
      "findingIds": [
        "CANVA-011",
        "CANVA-012"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/templates.png",
      "caption": "Templates listing first viewport",
      "condition": "desktop",
      "findingIds": [
        "CANVA-003",
        "CANVA-005"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/templates-mobile-layout.json",
      "caption": "Templates mobile CLS and overflow",
      "condition": "360x800",
      "findingIds": [
        "CANVA-003",
        "CANVA-005"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/templates-discoverability.json",
      "caption": "Templates raw-vs-rendered comparison",
      "condition": "JavaScript/no-JavaScript",
      "findingIds": [
        "CANVA-011",
        "CANVA-012"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/templates-discoverability-rendered.png",
      "caption": "Templates rendered browser view",
      "condition": "JavaScript",
      "findingIds": [
        "CANVA-011",
        "CANVA-012"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/templates-discoverability-crawler.png",
      "caption": "Templates crawler/no-JS view",
      "condition": "JavaScript disabled",
      "findingIds": [
        "CANVA-011",
        "CANVA-012"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/create-presentations-discoverability.json",
      "caption": "Presentation detail raw-vs-rendered comparison",
      "condition": "JavaScript/no-JavaScript",
      "findingIds": [
        "CANVA-011",
        "CANVA-012"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/create-presentations-discoverability-rendered.png",
      "caption": "Presentation rendered browser view",
      "condition": "JavaScript",
      "findingIds": [
        "CANVA-011",
        "CANVA-012"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/create-presentations-discoverability-crawler.png",
      "caption": "Presentation crawler/no-JS view",
      "condition": "JavaScript disabled",
      "findingIds": [
        "CANVA-011",
        "CANVA-012"
      ]
    },
    {
      "type": "other",
      "path": "evidence/templates-probe.json",
      "caption": "Templates metadata, search and semantic-control probe",
      "condition": "desktop",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/create-presentations.png",
      "caption": "Presentation landing first viewport",
      "condition": "desktop",
      "findingIds": [
        "CANVA-003"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/pricing.png",
      "caption": "Pricing first viewport",
      "condition": "desktop",
      "findingIds": [
        "CANVA-003"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/help.png",
      "caption": "Help first viewport",
      "condition": "desktop",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.json",
      "caption": "Baseline homepage heap summary",
      "condition": "post-load",
      "findingIds": [
        "CANVA-013",
        "CANVA-014"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-post-menu.json",
      "caption": "Heap after 20 navigation menu toggles",
      "condition": "repeated interaction",
      "findingIds": [
        "CANVA-013"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-structure-probe.json",
      "caption": "Metadata, structure, forms and locale probe",
      "condition": "desktop",
      "findingIds": [
        "CANVA-001"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-interaction-probe.json",
      "caption": "Target-size and focus-style probe",
      "condition": "desktop",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-platform-probe.json",
      "caption": "Script attributes and emerging platform probe",
      "condition": "desktop",
      "findingIds": [
        "CANVA-016"
      ]
    },
    {
      "type": "other",
      "path": "evidence/robots.txt",
      "caption": "robots.txt with declared sitemap indexes",
      "condition": "raw HTTP",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/sitemap.xml",
      "caption": "Representative branded 404 recovery body",
      "condition": "raw HTTP",
      "findingIds": []
    }
  ],
  "checkOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-color-scheme",
      "status": "issues",
      "confidence": "high",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "The dark-emulated screenshot is pixel-identical in appearance to the light capture, and the structure probe reports computed colorScheme “light”.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-desktop.png",
        "evidence/home-structure-probe.json"
      ],
      "findingIds": [
        "CANVA-001"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "issues",
      "confidence": "high",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "Under prefers-reduced-motion: reduce, getAnimations() returned 42 running animations, each with 1400 ms duration and an infinite iteration count (serialized as null).",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-reduced-probe.json"
      ],
      "findingIds": [
        "CANVA-002"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Lighthouse accessibility scored 100 and color-contrast passed on the rendered homepage; the UI remained legible across sampled screenshots.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "Rendered DOM/CSS inspection found no view-transition-name or ::view-transition usage across the homepage snapshot, while the page presents carousels, menus and cross-page journeys.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ],
      "findingIds": [
        "CANVA-015"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Rendered CSS contained animation-timeline declarations; layout/trace evidence found no sustained scroll task problem on the sampled landing page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Rendered CSS contained scroll-snap and overscroll-behavior rules for carousel/scroll surfaces, providing platform-native gesture behavior.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Desktop and mobile screenshots show compact, persistent navigation chrome that maintains orientation without covering the primary heading.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "No tooltip-style floating anchored surface was present in the sampled first-load states; menus did not visibly drift or clip.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "The landing and detail screenshots use a single prominent heading/CTA, and the presentation detail includes a Home > Presentations breadcrumb.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/create-presentations.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "Desktop and mobile screenshots show the cookie panel covering roughly half the viewport and hiding the primary call to action/content on home, templates, presentation and pricing pages.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json",
        "evidence/templates.png",
        "evidence/templates-mobile-layout.json",
        "evidence/create-presentations.png",
        "evidence/pricing.png"
      ],
      "findingIds": [
        "CANVA-003"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "The rendered DOM contains zero dialog and zero popover elements while the screenshot shows a blocking overlay.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/home-desktop.png"
      ],
      "findingIds": [
        "CANVA-004"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Screenshots show border-light content-led layouts with a compact header; outside consent, decorative visuals support the product message.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "At 360x800, home and templates reported scrollWidth 360, clientWidth 360 and zero horizontal overflow; viewport metadata is present.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "DOM/CSS inspection found an @container rule, and 360px evidence shows components reflow without horizontal overflow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Lighthouse target-size passed; focus probing found native/3px focus treatments on representative links and controls.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-interaction-probe.json"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "The first viewport states “Bring your ideas to life” and exposes “Start creating”; detail/listing pages have specific H1s.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/templates.png",
        "evidence/templates-mobile-layout.json",
        "evidence/create-presentations.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Representative navigation targets for templates, presentation creation, pricing and help all loaded successfully with clear continuation controls.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/templates.png",
        "evidence/templates-mobile-layout.json",
        "evidence/create-presentations.png",
        "evidence/pricing.png",
        "evidence/help.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "The sampled invalid sitemap endpoint rendered a branded roadblock state with a “Go to home” recovery link and error identifier.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/sitemap.xml"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "Lighthouse measured LCP 4.168 s, FCP 3.31 s and TTI 7.241 s; the first-party trace corroborated two long tasks and 92.97 ms total blocking time.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-trace.json",
        "evidence/home-trace-summary.json"
      ],
      "findingIds": [
        "CANVA-006"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "issues",
      "confidence": "high",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "The 360x800 layout observer measured CLS 0.2157, including a 0.21285 shift at about 6.18 seconds, above the 0.1 good threshold.",
      "pathIds": [
        "templates"
      ],
      "artifacts": [
        "evidence/templates-mobile-layout.json",
        "evidence/templates.png"
      ],
      "findingIds": [
        "CANVA-005"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "First-party trace measured only two long tasks and 92.97 ms TBT; Lighthouse TBT was 93 ms, within the good range.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace.json",
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Assets were compressed and mostly cacheable; trace LCP was 1.20 s in the unthrottled capture, though overall delivery issues are recorded under related checks.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json",
        "evidence/home-trace.json",
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "HAR recorded 60 requests and 3.27 MB transferred; Lighthouse estimated 277 KiB unused JavaScript and 62 KiB unused CSS, with four individual JS resources around 31–61% unused.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "CANVA-007"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Lighthouse accessibility scored 100; button-name and link-name audits passed, and the template search input has an accessible label.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Lighthouse color-contrast passed and sampled screenshots remain legible.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Lighthouse heading-order passed; DOM contains header/nav/main/footer landmarks; focus probe found focus treatments.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-structure-probe.json",
        "evidence/home-interaction-probe.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Desktop/mobile screenshots show large readable headings, comfortable body line-height and no clipped main copy outside the separately reported consent overlap.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Meta viewport allows scaling, Lighthouse target-size and viewport audits passed, and mobile layouts had no horizontal overflow.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Lighthouse errors-in-console audit passed with no logged console errors.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "DOM has HTML5 doctype and UTF-8; Lighthouse image aspect-ratio and responsive-size audits passed. Unsized delivery is separately reported.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-structure-probe.json",
        "evidence/lighthouse.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "Lighthouse found an unload listener in sentry_browser.js and four BFCache failure reasons, including the unload handler and no-store responses.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "CANVA-009"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Home and templates expose descriptive rendered titles and meta descriptions; the template probe records “Free templates | Canva”.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-structure-probe.json",
        "evidence/templates-probe.json"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "Discoverability measured only 4% raw/rendered word coverage on home, 2% on templates and 4% on the presentation page; each was classified as a JS shell and raw HTML lacked title and h1.",
      "pathIds": [
        "templates"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-discoverability-rendered.png",
        "evidence/home-discoverability-crawler.png",
        "evidence/templates-discoverability.json",
        "evidence/templates-discoverability-rendered.png",
        "evidence/templates-discoverability-crawler.png",
        "evidence/create-presentations-discoverability.json",
        "evidence/create-presentations-discoverability-rendered.png",
        "evidence/create-presentations-discoverability-crawler.png"
      ],
      "findingIds": [
        "CANVA-011"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Rendered home has canonical URL and 107 hreflang entries; robots.txt allows core paths and declares two sitemap indexes; sampled pages returned HTTP 200.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-structure-probe.json",
        "evidence/robots.txt"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Home includes JSON-LD plus eight Open Graph tags and a canonical URL matching visible Canva organization/product content.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-structure-probe.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Page uses HTTPS with HSTS preload, nosniff, frame protection, strict-origin referrer policy and CSP; no client secrets were found.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json",
        "evidence/home-cookies.json"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Consent offers reject/manage choices before optional analytics; tracker probe found one known error-monitoring origin and no third-party cookies.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trackers.json",
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "No browser permission prompt appeared on load; login is user-initiated and Google identity is available. No inappropriate prompt was observed.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "Headers inspection found CSP unsafe-eval and no Permissions-Policy. Cookie inspection found g_state without Secure and four of five cookies flagged, including SameSite=None cookies.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-headers.json",
        "evidence/home-cookies.json"
      ],
      "findingIds": [
        "CANVA-010"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "issues",
      "confidence": "high",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "Raw HTML comparisons across three representative public templates retained only 2–4% of rendered words and omitted title/h1, despite the pages having substantial public content.",
      "pathIds": [
        "templates"
      ],
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-discoverability-rendered.png",
        "evidence/home-discoverability-crawler.png",
        "evidence/templates-discoverability.json",
        "evidence/templates-discoverability-rendered.png",
        "evidence/templates-discoverability-crawler.png",
        "evidence/create-presentations-discoverability.json",
        "evidence/create-presentations-discoverability-rendered.png",
        "evidence/create-presentations-discoverability-crawler.png"
      ],
      "findingIds": [
        "CANVA-012"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Five representative routes loaded without clipped navigation or blank runtime states; the help route retained usable high-contrast chrome.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/templates.png",
        "evidence/templates-mobile-layout.json",
        "evidence/help.png"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-page recon.",
      "evidence": "Canva’s core editor is intrinsically online and collaborative; offline/installability was not treated as required for these public marketing surfaces.",
      "reason": "Canva’s core editor is intrinsically online and collaborative; offline/installability was not treated as required for these public marketing surfaces.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "The sampled invalid URL returned a branded roadblock with explicit home recovery rather than a blank shell.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/sitemap.xml"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Home reports lang=en-GB and dir=ltr, templates lang=en, 107 hreflang links, and rendered markup includes logical inline properties.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-structure-probe.json",
        "evidence/home-dom.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-page recon.",
      "evidence": "The sampled public surfaces display no dates, currencies, durations or locale-sensitive numeric data requiring an Intl formatting judgment.",
      "reason": "The sampled public surfaces display no dates, currencies, durations or locale-sensitive numeric data requiring an Intl formatting judgment.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-page recon.",
      "evidence": "The sampled public surfaces contain no event scheduling or time-zone-sensitive values.",
      "reason": "The sampled public surfaces contain no event scheduling or time-zone-sensitive values.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Consent presents Accept, Reject and Manage as direct choices without confirmshaming; sampled pricing copy did not show disguised commitments.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/pricing.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "No required multi-field form was present on sampled public paths; template search is optional and does not produce premature validation.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/templates-probe.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "The only sampled input is a labelled search field; autocomplete=off is appropriate for dynamic template-query suggestions.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/templates-probe.json"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Pricing and login entry points are clearly labelled; no forced continuity or hidden default was observed in the sampled anonymous states.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/pricing.png",
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "The image probe found all 13 images without width/height, 11 without srcset, 8 below-fold images not lazy-loaded and 9 legacy-format assets; Lighthouse independently failed the unsized-images audit.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-images.json",
        "evidence/lighthouse.json"
      ],
      "findingIds": [
        "CANVA-008"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Trace showed bounded TBT and trackers recorded only a small telemetry/error-monitoring request footprint before consent.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-trace.json",
        "evidence/home-trace-summary.json",
        "evidence/home-trackers.json"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "No autoplay video/audio was present; transferred media was dominated by product imagery, though optimization issues are separately recorded.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json",
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "issues",
      "confidence": "medium",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "The platform probe found no WebMCP/model-context registration on the public product surface; agents must infer actions from a large rendered UI.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-platform-probe.json"
      ],
      "findingIds": [
        "CANVA-016"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Applicability judgement from representative-page recon.",
      "evidence": "The sampled public marketing and discovery surfaces expose no bounded inference task where built-in local inference is necessary to complete the user journey.",
      "reason": "The sampled public marketing and discovery surfaces expose no bounded inference task where built-in local inference is necessary to complete the user journey.",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "issues",
      "confidence": "medium",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "The baseline heap summary was 67.15 MB across 1.52M nodes; after 20 menu toggles it was 88.60 MB across 2.06M nodes, about 32% more bytes and 36% more nodes. Separate page sessions add variance, so this is a leak signal requiring allocation-retainer confirmation.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post-menu.json"
      ],
      "findingIds": [
        "CANVA-013"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "issues",
      "confidence": "high",
      "method": "Direct inspection using the artifact(s) cited by the linked finding.",
      "evidence": "A post-load heap summary contained about 1.52M heap nodes, 8.77M edges and 67.15 MB self size before entering the editor.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json"
      ],
      "findingIds": [
        "CANVA-014"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "Representative-path visual, DOM and/or objective probe review.",
      "evidence": "Neither heap summary listed Detached* constructors among the dominant retained constructors; the stronger growth signal is separately recorded.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post-menu.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "CANVA-001",
        "CANVA-002"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "CANVA-015"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "CANVA-003",
        "CANVA-004"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "CANVA-006",
        "CANVA-005",
        "CANVA-007"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "CANVA-009"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "CANVA-011"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "CANVA-010"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "CANVA-012"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "CANVA-008"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "CANVA-016"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "CANVA-013",
        "CANVA-014"
      ]
    }
  ],
  "findings": [
    {
      "id": "CANVA-001",
      "severity": "medium",
      "confidence": "high",
      "summary": "The public landing page does not adapt to the user’s dark color-scheme preference.",
      "evidence": "The dark-emulated screenshot is pixel-identical in appearance to the light capture, and the structure probe reports computed colorScheme “light”.",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/home-desktop.png",
        "evidence/home-structure-probe.json"
      ],
      "suggestedFix": "Declare color-scheme: light dark and map surfaces/text through light-dark() or prefers-color-scheme tokens.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.canva.com/en_gb/",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience"
    },
    {
      "id": "CANVA-002",
      "severity": "high",
      "confidence": "high",
      "summary": "Continuous hero motion remains active when reduced motion is requested.",
      "evidence": "Under prefers-reduced-motion: reduce, getAnimations() returned 42 running animations, each with 1400 ms duration and an infinite iteration count (serialized as null).",
      "artifacts": [
        "evidence/home-reduced-probe.json"
      ],
      "suggestedFix": "Use prefers-reduced-motion to remove non-essential loops and replace motion with a static composition.",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.canva.com/en_gb/",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-reduced-motion",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility"
    },
    {
      "id": "CANVA-003",
      "severity": "medium",
      "confidence": "high",
      "summary": "The first-load cookie panel obscures most of the primary content on every sampled marketing page.",
      "evidence": "Desktop and mobile screenshots show the cookie panel covering roughly half the viewport and hiding the primary call to action/content on home, templates, presentation and pricing pages.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/home-mobile-layout.json",
        "evidence/templates.png",
        "evidence/templates-mobile-layout.json",
        "evidence/create-presentations.png",
        "evidence/pricing.png"
      ],
      "suggestedFix": "Use a compact, content-preserving consent surface where legally possible while keeping accept, reject and manage choices equally available.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.canva.com/en_gb/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "user-experience"
    },
    {
      "id": "CANVA-004",
      "severity": "medium",
      "confidence": "high",
      "summary": "The blocking consent overlay is not exposed with a native dialog or popover primitive.",
      "evidence": "The rendered DOM contains zero dialog and zero popover elements while the screenshot shows a blocking overlay.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/home-desktop.png"
      ],
      "suggestedFix": "Model blocking consent as a properly labelled dialog with managed focus, or a non-modal popover when blocking is unnecessary.",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.canva.com/en_gb/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "light-dismiss-a-dialog",
      "guidanceCategory": "user-experience"
    },
    {
      "id": "CANVA-005",
      "severity": "high",
      "confidence": "high",
      "summary": "The mobile templates listing has poor visual stability.",
      "evidence": "The 360x800 layout observer measured CLS 0.2157, including a 0.21285 shift at about 6.18 seconds, above the 0.1 good threshold.",
      "artifacts": [
        "evidence/templates-mobile-layout.json",
        "evidence/templates.png"
      ],
      "suggestedFix": "Reserve space for late template/list content and identify the element injected at ~6.18 s; give media and async regions explicit intrinsic dimensions.",
      "effort": "medium",
      "pathId": "templates",
      "url": "https://www.canva.com/templates/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "visual-stability",
      "guidanceId": "visually-stable-font-fallbacks",
      "guidanceCategory": "performance"
    },
    {
      "id": "CANVA-006",
      "severity": "high",
      "confidence": "high",
      "summary": "Throttled load performance misses the good LCP range.",
      "evidence": "Lighthouse measured LCP 4.168 s, FCP 3.31 s and TTI 7.241 s; the first-party trace corroborated two long tasks and 92.97 ms total blocking time.",
      "artifacts": [
        "evidence/lighthouse.json",
        "evidence/home-trace.json",
        "evidence/home-trace-summary.json"
      ],
      "suggestedFix": "Profile the LCP request chain, prioritize the hero/LCP resource, and defer non-critical scripts and styles.",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.canva.com/en_gb/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "optimize-preload-priority",
      "guidanceCategory": "performance"
    },
    {
      "id": "CANVA-007",
      "severity": "high",
      "confidence": "high",
      "summary": "The anonymous homepage ships a large amount of avoidable code and network weight.",
      "evidence": "HAR recorded 60 requests and 3.27 MB transferred; Lighthouse estimated 277 KiB unused JavaScript and 62 KiB unused CSS, with four individual JS resources around 31–61% unused.",
      "artifacts": [
        "evidence/home.har",
        "evidence/home-summary.json",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Route-split anonymous marketing code, conditionally load editor/account dependencies, remove unused CSS, and defer Google identity until sign-in intent.",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.canva.com/en_gb/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance"
    },
    {
      "id": "CANVA-008",
      "severity": "medium",
      "confidence": "high",
      "summary": "Homepage imagery is not delivered responsively or with stable intrinsic sizing.",
      "evidence": "The image probe found all 13 images without width/height, 11 without srcset, 8 below-fold images not lazy-loaded and 9 legacy-format assets; Lighthouse independently failed the unsized-images audit.",
      "artifacts": [
        "evidence/home-images.json",
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Add intrinsic width/height, srcset/sizes, lazy loading below the fold, and AVIF/WebP variants for raster assets.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.canva.com/en_gb/",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance"
    },
    {
      "id": "CANVA-009",
      "severity": "medium",
      "confidence": "high",
      "summary": "Deprecated unload handling prevents back/forward cache restoration.",
      "evidence": "Lighthouse found an unload listener in sentry_browser.js and four BFCache failure reasons, including the unload handler and no-store responses.",
      "artifacts": [
        "evidence/lighthouse.json"
      ],
      "suggestedFix": "Remove unload listeners in favor of pagehide/visibilitychange and audit no-store use so eligible public pages can enter BFCache.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.canva.com/en_gb/",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "guidanceCategory": "html"
    },
    {
      "id": "CANVA-010",
      "severity": "medium",
      "confidence": "high",
      "summary": "Browser security policy and cookie posture have avoidable gaps.",
      "evidence": "Headers inspection found CSP unsafe-eval and no Permissions-Policy. Cookie inspection found g_state without Secure and four of five cookies flagged, including SameSite=None cookies.",
      "artifacts": [
        "evidence/home-headers.json",
        "evidence/home-cookies.json"
      ],
      "suggestedFix": "Remove unsafe-eval through compatible bundling, add a least-privilege Permissions-Policy, secure g_state, and restrict SameSite=None to cookies that truly require cross-site use.",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.canva.com/en_gb/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "security",
      "guidanceCategory": "security"
    },
    {
      "id": "CANVA-011",
      "severity": "high",
      "confidence": "high",
      "summary": "Core public content is largely absent from raw server HTML.",
      "evidence": "Discoverability measured only 4% raw/rendered word coverage on home, 2% on templates and 4% on the presentation page; each was classified as a JS shell and raw HTML lacked title and h1.",
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-discoverability-rendered.png",
        "evidence/home-discoverability-crawler.png",
        "evidence/templates-discoverability.json",
        "evidence/templates-discoverability-rendered.png",
        "evidence/templates-discoverability-crawler.png",
        "evidence/create-presentations-discoverability.json",
        "evidence/create-presentations-discoverability-rendered.png",
        "evidence/create-presentations-discoverability-crawler.png"
      ],
      "suggestedFix": "Server-render or statically emit each landing page’s title, h1, primary copy, links and template/product content, then hydrate enhancements.",
      "effort": "large",
      "pathId": "templates",
      "url": "https://www.canva.com/templates/",
      "principleId": "be-discoverable",
      "principleCheckId": "crawlable-and-mobile-friendly",
      "guidanceId": "html",
      "guidanceCategory": "html"
    },
    {
      "id": "CANVA-012",
      "severity": "high",
      "confidence": "high",
      "summary": "Public content and primary discovery journeys do not progressively enhance without JavaScript.",
      "evidence": "Raw HTML comparisons across three representative public templates retained only 2–4% of rendered words and omitted title/h1, despite the pages having substantial public content.",
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/home-discoverability-rendered.png",
        "evidence/home-discoverability-crawler.png",
        "evidence/templates-discoverability.json",
        "evidence/templates-discoverability-rendered.png",
        "evidence/templates-discoverability-crawler.png",
        "evidence/create-presentations-discoverability.json",
        "evidence/create-presentations-discoverability-rendered.png",
        "evidence/create-presentations-discoverability-crawler.png"
      ],
      "suggestedFix": "Ship meaningful HTML for navigation, headings, copy and template links; use client JavaScript to enhance search/filter/editor entry rather than create the content baseline.",
      "effort": "large",
      "pathId": "templates",
      "url": "https://www.canva.com/templates/",
      "principleId": "be-resilient",
      "principleCheckId": "progressive-enhancement",
      "guidanceId": "html",
      "guidanceCategory": "html"
    },
    {
      "id": "CANVA-013",
      "severity": "medium",
      "confidence": "medium",
      "summary": "Repeated navigation-menu toggling produced substantial retained-heap growth.",
      "evidence": "The baseline heap summary was 67.15 MB across 1.52M nodes; after 20 menu toggles it was 88.60 MB across 2.06M nodes, about 32% more bytes and 36% more nodes. Separate page sessions add variance, so this is a leak signal requiring allocation-retainer confirmation.",
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post-menu.json"
      ],
      "suggestedFix": "Repeat baseline/target/final snapshots in one session, force GC, inspect retainers for menu DOM/listeners, and release transient navigation state after close.",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.canva.com/en_gb/",
      "principleId": "be-memory-efficient",
      "principleCheckId": "no-leak-under-repeated-interaction",
      "guidanceId": "manage-recurring-intervals",
      "guidanceCategory": "performance"
    },
    {
      "id": "CANVA-014",
      "severity": "medium",
      "confidence": "high",
      "summary": "The initial memory footprint is disproportionate for a marketing landing page.",
      "evidence": "A post-load heap summary contained about 1.52M heap nodes, 8.77M edges and 67.15 MB self size before entering the editor.",
      "artifacts": [
        "evidence/heap-baseline.json"
      ],
      "suggestedFix": "Use heap allocation profiles to remove anonymous-page editor/runtime state, delay optional features, and set a landing-page heap budget.",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.canva.com/en_gb/",
      "principleId": "be-memory-efficient",
      "principleCheckId": "bounded-footprint",
      "guidanceId": "identify-heavy-scripts",
      "guidanceCategory": "performance"
    },
    {
      "id": "CANVA-015",
      "severity": "low",
      "confidence": "high",
      "summary": "State and route changes do not expose View Transition styling on the sampled public pages.",
      "evidence": "Rendered DOM/CSS inspection found no view-transition-name or ::view-transition usage across the homepage snapshot, while the page presents carousels, menus and cross-page journeys.",
      "artifacts": [
        "evidence/home-dom.json"
      ],
      "suggestedFix": "Use same-document View Transitions for major menu/carousel state and cross-document transitions for compatible marketing routes, with reduced-motion handling.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.canva.com/en_gb/",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "same-document-transitions",
      "guidanceCategory": "user-experience"
    },
    {
      "id": "CANVA-016",
      "severity": "low",
      "confidence": "medium",
      "summary": "Canva’s agent-relevant productivity capabilities are not exposed as structured browser tools.",
      "evidence": "The platform probe found no WebMCP/model-context registration on the public product surface; agents must infer actions from a large rendered UI.",
      "artifacts": [
        "evidence/home-platform-probe.json"
      ],
      "suggestedFix": "Pilot narrowly scoped WebMCP tools or agentic forms for safe tasks such as template search and draft creation, with explicit confirmation for consequential actions.",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.canva.com/en_gb/",
      "principleId": "be-agent-ready",
      "principleCheckId": "structured-agent-capabilities",
      "guidanceId": "webmcp",
      "guidanceCategory": "ai"
    }
  ],
  "taskList": [
    {
      "id": "TASK-001",
      "title": "Server-render public landing and template content",
      "priority": 1,
      "findingIds": [
        "CANVA-011",
        "CANVA-012"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "TASK-002",
      "title": "Honor reduced motion and dark color preferences",
      "priority": 2,
      "findingIds": [
        "CANVA-001",
        "CANVA-002"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "TASK-003",
      "title": "Stabilize the mobile templates listing",
      "priority": 3,
      "findingIds": [
        "CANVA-005",
        "CANVA-008"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "TASK-004",
      "title": "Split and defer anonymous-page JavaScript/CSS",
      "priority": 4,
      "findingIds": [
        "CANVA-006",
        "CANVA-007",
        "CANVA-014"
      ],
      "guidanceId": "identify-heavy-scripts",
      "status": "open"
    },
    {
      "id": "TASK-005",
      "title": "Rework the consent surface with semantic, content-preserving UI",
      "priority": 5,
      "findingIds": [
        "CANVA-003",
        "CANVA-004"
      ],
      "guidanceId": "light-dismiss-a-dialog",
      "status": "open"
    },
    {
      "id": "TASK-006",
      "title": "Tighten CSP, Permissions-Policy and cookie attributes",
      "priority": 6,
      "findingIds": [
        "CANVA-010"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "TASK-007",
      "title": "Investigate menu-state heap retention",
      "priority": 7,
      "findingIds": [
        "CANVA-013"
      ],
      "guidanceId": "manage-recurring-intervals",
      "status": "open"
    },
    {
      "id": "TASK-008",
      "title": "Restore BFCache eligibility",
      "priority": 8,
      "findingIds": [
        "CANVA-009"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "TASK-009",
      "title": "Pilot safe structured agent capabilities",
      "priority": 9,
      "findingIds": [
        "CANVA-016"
      ],
      "guidanceId": "webmcp",
      "status": "open"
    },
    {
      "id": "TASK-010",
      "title": "Add View Transitions to major public state changes",
      "priority": 10,
      "findingIds": [
        "CANVA-015"
      ],
      "guidanceId": "same-document-transitions",
      "status": "open"
    }
  ],
  "budget": {
    "wallClockSeconds": 2700,
    "pathCount": 6,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-20T08-57-17-484Z"
}
