{
  "url": "https://lectormangass.net",
  "auditedAt": "2026-07-17T19:36:40.505Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete audit of six representative page/flow archetypes plus an intentional 404. Not covered: authenticated account state, destructive account actions, admin surfaces, and every individual series because they share the audited templates.",
  "page": {
    "appType": "mpa",
    "framework": "Astro with Vuetify-style legacy component classes and client-side islands",
    "notes": "Public Spanish manga/manhwa catalog and chapter reader. Server-rendered HTML provides 99-100% raw/rendered word coverage. Site includes mature-content imagery."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "Lighthouse",
    "robots/sitemap/manifest fetch"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "accessibility",
    "adapt-scrollbar-to-contrast-preferences",
    "same-document-transitions",
    "scrollytelling",
    "physics-based-easing",
    "shrinking-header-on-scroll",
    "anchor-positioning-tab-underline",
    "directional-navigation-transitions",
    "light-dismiss-a-dialog",
    "declarative-dialog-popover-control",
    "complex-shapes",
    "fluid-scaling",
    "size-aware-styling",
    "forms",
    "accessible-error-announcement",
    "identify-inp-causes",
    "visually-stable-font-fallbacks",
    "break-up-long-tasks",
    "optimize-image-priority",
    "identify-heavy-scripts",
    "move-dom-element-without-losing-state",
    "improve-text-layout-and-legibility",
    "css",
    "html",
    "security",
    "privacy",
    "passkeys",
    "flicker-free-client-side-ab-testing",
    "resilient-context-menus-and-nested-dropdowns",
    "persistent-toast-notifications",
    "translator",
    "support-global-calendar-systems",
    "coordinate-global-events",
    "autofill-address-form",
    "autofill-payment-form",
    "deliver-optimized-decorative-images",
    "deprioritize-background-fetches",
    "webmcp",
    "language-model",
    "manage-recurring-intervals"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/home.png",
      "caption": "Homepage at desktop viewport",
      "condition": "desktop",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "Homepage at 360x800",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/comics-mobile.png",
      "caption": "Catalog at 360x800",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/detail-mobile.png",
      "caption": "Series detail at 360x800",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/chapter-103-mobile.png",
      "caption": "Chapter reader at 360x800",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/announcement.png",
      "caption": "Announcement/article page",
      "condition": "desktop",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/404-mobile.png",
      "caption": "Useful 404 recovery page",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/theme-light.png",
      "caption": "Homepage under light preference",
      "condition": "prefers-color-scheme: light",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/theme-dark.png",
      "caption": "Homepage under dark preference",
      "condition": "prefers-color-scheme: dark",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/contrast-more.png",
      "caption": "Homepage under increased contrast",
      "condition": "prefers-contrast: more",
      "findingIds": [
        "F08"
      ]
    },
    {
      "type": "other",
      "path": "evidence/reduced-motion-probe.json",
      "caption": "Animation and transition probe under reduced motion",
      "condition": "prefers-reduced-motion: reduce",
      "findingIds": [
        "F02"
      ]
    },
    {
      "type": "other",
      "path": "evidence/platform-probe.json",
      "caption": "Focus, target-size, landmarks, and modern CSS feature probe",
      "condition": "default",
      "findingIds": [
        "F04",
        "F05",
        "F09",
        "F10"
      ]
    },
    {
      "type": "other",
      "path": "evidence/auth-open-probe.json",
      "caption": "Auth modal semantics and focus probe",
      "condition": "modal open",
      "findingIds": [
        "F03",
        "F09",
        "F15"
      ]
    },
    {
      "type": "other",
      "path": "evidence/auth-invalid-probe.json",
      "caption": "Auth invalid-submit probe",
      "condition": "empty required fields",
      "findingIds": [
        "F17"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-layout-mobile.json",
      "caption": "Homepage mobile layout metrics",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F10"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/chapter-103-layout-mobile.json",
      "caption": "Chapter mobile layout metrics",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F10"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "DevTools load trace",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "Trace summary with FCP/LCP and long tasks",
      "condition": "default",
      "findingIds": [
        "F06"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "Homepage network capture",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "Network totals, third parties, delivery, and hygiene",
      "condition": "default",
      "findingIds": [
        "F07",
        "F14",
        "F18",
        "F19"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home.json",
      "caption": "Lighthouse performance, accessibility, best-practices, SEO, and agentic-browsing run",
      "condition": "mobile emulation",
      "findingIds": [
        "F06",
        "F07",
        "F08",
        "F12",
        "F14",
        "F18",
        "F19"
      ]
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "Security response-header audit",
      "condition": "default",
      "findingIds": [
        "F13"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "Cookie attribute audit",
      "condition": "default",
      "findingIds": [
        "F13"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "Third-party origin and tracker audit",
      "condition": "default",
      "findingIds": [
        "F14",
        "F19"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "Client-visible secret scan",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/home-images.json",
      "caption": "Homepage image audit",
      "condition": "default",
      "findingIds": [
        "F07",
        "F11",
        "F18"
      ]
    },
    {
      "type": "other",
      "path": "evidence/chapter-103-images.json",
      "caption": "Chapter image audit",
      "condition": "default",
      "findingIds": [
        "F11"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/discover-home.json",
      "caption": "Raw HTML versus rendered homepage comparison",
      "condition": "JavaScript on/off",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discover-home-rendered.png",
      "caption": "Rendered homepage crawler comparison",
      "condition": "JavaScript enabled",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discover-home-crawler.png",
      "caption": "Crawler homepage comparison",
      "condition": "JavaScript disabled",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/discover-detail.json",
      "caption": "Raw HTML versus rendered detail comparison",
      "condition": "JavaScript on/off",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/discover-comics.json",
      "caption": "Raw HTML versus rendered catalog comparison",
      "condition": "JavaScript on/off",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/robots.txt",
      "caption": "robots.txt and AI content signals",
      "condition": "crawler",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/sitemap.xml",
      "caption": "Sitemap index",
      "condition": "crawler",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/site.webmanifest",
      "caption": "Web app manifest",
      "condition": "default",
      "findingIds": [
        "F16"
      ]
    },
    {
      "type": "other",
      "path": "evidence/pwa-probe.json",
      "caption": "Service worker and Cache Storage probe",
      "condition": "default",
      "findingIds": [
        "F16"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.json",
      "caption": "Baseline heap summary",
      "condition": "before interaction",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-post-auth.json",
      "caption": "Heap after 10 auth modal open/close cycles",
      "condition": "after repeated interaction",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/document-platform.json",
      "caption": "Document, script, media, and CSS platform probe",
      "condition": "default",
      "findingIds": []
    },
    {
      "type": "dom",
      "path": "evidence/home-probe.json",
      "caption": "Homepage metadata, links, forms, headings, and structure probe",
      "condition": "default",
      "findingIds": [
        "F15",
        "F17"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/chapter-103-probe.json",
      "caption": "Chapter content, image loading, and navigation probe",
      "condition": "default",
      "findingIds": []
    }
  ],
  "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": "Condition-emulated screenshots and computed-style/animation probes",
      "evidence": "Computed styles were identical under light and dark emulation: color-scheme stayed dark, body background rgb(17,17,19), and body text rgb(255,255,255).",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "issues",
      "confidence": "high",
      "method": "Condition-emulated screenshots and computed-style/animation probes",
      "evidence": "Under prefers-reduced-motion: reduce, getAnimations() still returned a running 1600ms animation and the hero retained 0.8s transitions plus a 5s loading-bar transition.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "pass",
      "confidence": "high",
      "method": "Condition-emulated screenshots and computed-style/animation probes",
      "evidence": "Condition-emulated screenshots and computed-style/animation probes (evidence/theme-light.png, evidence/theme-dark.png, evidence/reduced-motion-probe.json, evidence/contrast-more.png).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "pass",
      "confidence": "high",
      "method": "Platform/CSS probe found viewTransitionName=root, CSS transitions for native controls, and no scroll-timeline rules",
      "evidence": "Platform/CSS probe found viewTransitionName=root, CSS transitions for native controls, and no scroll-timeline rules (evidence/platform-probe.json, evidence/home.png).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Platform/CSS probe found viewTransitionName=root, CSS transitions for native controls, and no scroll-timeline rules",
      "evidence": "No scroll-linked parallax, scrollytelling, or reveal effect is present, so there is no scroll animation implementation to assess.",
      "reason": "No scroll-linked parallax, scrollytelling, or reveal effect is present, so there is no scroll animation implementation to assess."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "high",
      "method": "Platform/CSS probe found viewTransitionName=root, CSS transitions for native controls, and no scroll-timeline rules",
      "evidence": "Platform/CSS probe found viewTransitionName=root, CSS transitions for native controls, and no scroll-timeline rules (evidence/platform-probe.json, evidence/home.png).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Screenshots and DOM walkthrough show persistent global navigation, descriptive route changes, and chapter previous/next controls",
      "evidence": "Screenshots and DOM walkthrough show persistent global navigation, descriptive route changes, and chapter previous/next controls (evidence/home-mobile.png, evidence/detail-mobile.png, evidence/chapter-103-probe.json).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Screenshots and DOM walkthrough show persistent global navigation, descriptive route changes, and chapter previous/next controls",
      "evidence": "No tooltip, popover, or edge-positioned menu requiring anchor positioning was present on the representative paths.",
      "reason": "No tooltip, popover, or edge-positioned menu requiring anchor positioning was present on the representative paths."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "high",
      "method": "Screenshots and DOM walkthrough show persistent global navigation, descriptive route changes, and chapter previous/next controls",
      "evidence": "Screenshots and DOM walkthrough show persistent global navigation, descriptive route changes, and chapter previous/next controls (evidence/home-mobile.png, evidence/detail-mobile.png, evidence/chapter-103-probe.json).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "Load screenshots show no interstitial; auth interaction inspected the only modal overlay and its semantics",
      "evidence": "Load screenshots show no interstitial; auth interaction inspected the only modal overlay and its semantics (evidence/home.png, evidence/auth-open-probe.json).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Load screenshots show no interstitial; auth interaction inspected the only modal overlay and its semantics",
      "evidence": "After activating the member button, #authModal became aria-hidden=false but document.activeElement remained BODY; DOM inspection shows a div role=dialog with a custom backdrop.",
      "pathIds": [
        "auth"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "pass",
      "confidence": "high",
      "method": "Load screenshots show no interstitial; auth interaction inspected the only modal overlay and its semantics",
      "evidence": "Load screenshots show no interstitial; auth interaction inspected the only modal overlay and its semantics (evidence/home.png, evidence/auth-open-probe.json).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "All 360px layout captures reported zero horizontal overflow; target/focus and CSS-feature probes covered modality and component behavior",
      "evidence": "All 360px layout captures reported zero horizontal overflow; target/focus and CSS-feature probes covered modality and component behavior (evidence/home-layout-mobile.json, evidence/chapter-103-layout-mobile.json, evidence/platform-probe.json).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "medium",
      "method": "All 360px layout captures reported zero horizontal overflow; target/focus and CSS-feature probes covered modality and component behavior",
      "evidence": "The platform probe found zero @container rules while the same card/navigation components are reused in several differently sized regions.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "All 360px layout captures reported zero horizontal overflow; target/focus and CSS-feature probes covered modality and component behavior",
      "evidence": "Focusing the first visible control produced outline: none and box-shadow: none. The target probe found repeated genre links only 16px high and footer links 19px high.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "Task walkthrough opened catalog, detail, and Chapter 103 successfully; the 404 route provides clear return actions",
      "evidence": "Task walkthrough opened catalog, detail, and Chapter 103 successfully; the 404 route provides clear return actions (evidence/comics-mobile.png, evidence/detail-mobile.png, evidence/chapter-103-mobile.png, evidence/404-mobile.png).",
      "pathIds": [
        "home",
        "catalog",
        "detail",
        "chapter",
        "not-found"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Task walkthrough opened catalog, detail, and Chapter 103 successfully; the 404 route provides clear return actions",
      "evidence": "Task walkthrough opened catalog, detail, and Chapter 103 successfully; the 404 route provides clear return actions (evidence/comics-mobile.png, evidence/detail-mobile.png, evidence/chapter-103-mobile.png, evidence/404-mobile.png).",
      "pathIds": [
        "auth",
        "not-found"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "high",
      "method": "Task walkthrough opened catalog, detail, and Chapter 103 successfully; the 404 route provides clear return actions",
      "evidence": "Task walkthrough opened catalog, detail, and Chapter 103 successfully; the 404 route provides clear return actions (evidence/comics-mobile.png, evidence/detail-mobile.png, evidence/chapter-103-mobile.png, evidence/404-mobile.png).",
      "pathIds": [
        "auth",
        "not-found"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace, layout, HAR, and image evidence measured LCP, TBT, CLS, transfer weight, and delivery",
      "evidence": "Lighthouse measured LCP 5.3s (score 0.21), while TBT was 0ms and CLS 0.03. A separate warm trace measured LCP 1.06s, so network/image discovery is the likely bottleneck.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse, trace, layout, HAR, and image evidence measured LCP, TBT, CLS, transfer weight, and delivery",
      "evidence": "Lighthouse, trace, layout, HAR, and image evidence measured LCP, TBT, CLS, transfer weight, and delivery (evidence/lighthouse-home.json, evidence/home-trace-summary.json, evidence/home-summary.json, evidence/home-images.json).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse, trace, layout, HAR, and image evidence measured LCP, TBT, CLS, transfer weight, and delivery",
      "evidence": "Lighthouse, trace, layout, HAR, and image evidence measured LCP, TBT, CLS, transfer weight, and delivery (evidence/lighthouse-home.json, evidence/home-trace-summary.json, evidence/home-summary.json, evidence/home-images.json).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse, trace, layout, HAR, and image evidence measured LCP, TBT, CLS, transfer weight, and delivery",
      "evidence": "Lighthouse reported 266KiB image-delivery savings and that the LCP image lacks fetchpriority=high. The HAR transferred 2.55MB, 2.38MB of it images, and identified render-blocking stylesheets.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse, trace, layout, HAR, and image evidence measured LCP, TBT, CLS, transfer weight, and delivery",
      "evidence": "Lighthouse, trace, layout, HAR, and image evidence measured LCP, TBT, CLS, transfer weight, and delivery (evidence/lighthouse-home.json, evidence/home-trace-summary.json, evidence/home-summary.json, evidence/home-images.json).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse accessibility, mobile reflow screenshots, form/landmark DOM, and active focus/target probes covered names, contrast, structure, text, and reflow",
      "evidence": "Lighthouse accessibility, mobile reflow screenshots, form/landmark DOM, and active focus/target probes covered names, contrast, structure, text, and reflow (evidence/lighthouse-home.json, evidence/platform-probe.json, evidence/home-probe.json).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, mobile reflow screenshots, form/landmark DOM, and active focus/target probes covered names, contrast, structure, text, and reflow",
      "evidence": "Lighthouse measured contrast ratios of 3.3:1 for the announcement age, 3.63:1 for the RECOMENDADO badge, and 2.9:1 for the active SEMANA tab, below 4.5:1 for their sizes.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, mobile reflow screenshots, form/landmark DOM, and active focus/target probes covered names, contrast, structure, text, and reflow",
      "evidence": "The focus probe found no outline or box shadow on the focused header control, and the opened modal left activeElement on BODY rather than moving focus into the dialog.",
      "pathIds": [
        "auth"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse accessibility, mobile reflow screenshots, form/landmark DOM, and active focus/target probes covered names, contrast, structure, text, and reflow",
      "evidence": "Lighthouse accessibility, mobile reflow screenshots, form/landmark DOM, and active focus/target probes covered names, contrast, structure, text, and reflow (evidence/lighthouse-home.json, evidence/platform-probe.json, evidence/home-probe.json).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility, mobile reflow screenshots, form/landmark DOM, and active focus/target probes covered names, contrast, structure, text, and reflow",
      "evidence": "All tested 360px layouts had zero horizontal overflow, but the target probe found many active links only 16–19px high.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse and document/image probes covered console, doctype, charset, deprecated APIs, BFCache, and assets",
      "evidence": "Lighthouse and document/image probes covered console, doctype, charset, deprecated APIs, BFCache, and assets (evidence/lighthouse-home.json, evidence/document-platform.json, evidence/chapter-103-images.json).",
      "pathIds": [
        "auth",
        "not-found"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse and document/image probes covered console, doctype, charset, deprecated APIs, BFCache, and assets",
      "evidence": "The chapter image audit found 8 of 10 images without width/height and 8 without srcset; the homepage audit found all four img elements without dimensions.",
      "pathIds": [
        "chapter"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse and document/image probes covered console, doctype, charset, deprecated APIs, BFCache, and assets",
      "evidence": "Lighthouse reported the unload event deprecation and an actionable BFCache failure: UnloadHandlerExistsInMainFrame.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "high",
      "method": "SEO score was 1.0; four discoverability runs showed 99-100% raw/rendered coverage, and robots/sitemap/canonical/social/JSON-LD were inspected",
      "evidence": "SEO score was 1.0; four discoverability runs showed 99-100% raw/rendered coverage, and robots/sitemap/canonical/social/JSON-LD were inspected (evidence/lighthouse-home.json, evidence/discover-home.json, evidence/discover-detail.json, evidence/discover-comics.json, evidence/robots.txt, evidence/sitemap.xml, evidence/home-probe.json).",
      "pathIds": [
        "home",
        "catalog",
        "detail",
        "announcement"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "high",
      "method": "SEO score was 1.0; four discoverability runs showed 99-100% raw/rendered coverage, and robots/sitemap/canonical/social/JSON-LD were inspected",
      "evidence": "SEO score was 1.0; four discoverability runs showed 99-100% raw/rendered coverage, and robots/sitemap/canonical/social/JSON-LD were inspected (evidence/lighthouse-home.json, evidence/discover-home.json, evidence/discover-detail.json, evidence/discover-comics.json, evidence/robots.txt, evidence/sitemap.xml, evidence/home-probe.json).",
      "pathIds": [
        "home",
        "catalog",
        "detail",
        "announcement"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "high",
      "method": "SEO score was 1.0; four discoverability runs showed 99-100% raw/rendered coverage, and robots/sitemap/canonical/social/JSON-LD were inspected",
      "evidence": "SEO score was 1.0; four discoverability runs showed 99-100% raw/rendered coverage, and robots/sitemap/canonical/social/JSON-LD were inspected (evidence/lighthouse-home.json, evidence/discover-home.json, evidence/discover-detail.json, evidence/discover-comics.json, evidence/robots.txt, evidence/sitemap.xml, evidence/home-probe.json).",
      "pathIds": [
        "home",
        "catalog",
        "detail",
        "announcement"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "high",
      "method": "SEO score was 1.0; four discoverability runs showed 99-100% raw/rendered coverage, and robots/sitemap/canonical/social/JSON-LD were inspected",
      "evidence": "SEO score was 1.0; four discoverability runs showed 99-100% raw/rendered coverage, and robots/sitemap/canonical/social/JSON-LD were inspected (evidence/lighthouse-home.json, evidence/discover-home.json, evidence/discover-detail.json, evidence/discover-comics.json, evidence/robots.txt, evidence/sitemap.xml, evidence/home-probe.json).",
      "pathIds": [
        "home",
        "catalog",
        "detail",
        "announcement"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, secrets, HAR, Lighthouse, and auth-form probes covered transport, policies, third parties, secrets, permissions, and auth",
      "evidence": "The headers audit found no CSP, HSTS, nosniff, clickjacking, Referrer-Policy, or Permissions-Policy. All 7 first-party Hst* cookies lacked Secure and used SameSite=None.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, secrets, HAR, Lighthouse, and auth-form probes covered transport, policies, third parties, secrets, permissions, and auth",
      "evidence": "Network evidence found seven third-party origins, including Histats and several opaque .cfd/.rest hosts; Lighthouse found five third-party cookies. Two opaque scripts failed with ORB/DNS errors.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "issues",
      "confidence": "medium",
      "method": "Headers, cookies, trackers, secrets, HAR, Lighthouse, and auth-form probes covered transport, policies, third parties, secrets, permissions, and auth",
      "evidence": "The inspected sign-in/register forms provide email and password fields with appropriate autocomplete, but no WebAuthn/passkey affordance or navigator.credentials flow was present.",
      "pathIds": [
        "auth"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Headers, cookies, trackers, secrets, HAR, Lighthouse, and auth-form probes covered transport, policies, third parties, secrets, permissions, and auth",
      "evidence": "The headers audit found no CSP, HSTS, nosniff, clickjacking, Referrer-Policy, or Permissions-Policy. All 7 first-party Hst* cookies lacked Secure and used SameSite=None.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Raw HTML retained 99-100% content without JS; modal and 404 recovery worked; manifest/SW state was inspected",
      "evidence": "Raw HTML retained 99-100% content without JS; modal and 404 recovery worked; manifest/SW state was inspected (evidence/discover-home.json, evidence/auth-open-probe.json, evidence/404-mobile.png, evidence/site.webmanifest, evidence/pwa-probe.json).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "high",
      "method": "Raw HTML retained 99-100% content without JS; modal and 404 recovery worked; manifest/SW state was inspected",
      "evidence": "Raw HTML retained 99-100% content without JS; modal and 404 recovery worked; manifest/SW state was inspected (evidence/discover-home.json, evidence/auth-open-probe.json, evidence/404-mobile.png, evidence/site.webmanifest, evidence/pwa-probe.json).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "issues",
      "confidence": "high",
      "method": "Raw HTML retained 99-100% content without JS; modal and 404 recovery worked; manifest/SW state was inspected",
      "evidence": "site.webmanifest declares display=standalone, start_url=/, and app icons; navigator.serviceWorker.getRegistrations() and Cache Storage both returned empty arrays.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "high",
      "method": "Raw HTML retained 99-100% content without JS; modal and 404 recovery worked; manifest/SW state was inspected",
      "evidence": "Raw HTML retained 99-100% content without JS; modal and 404 recovery worked; manifest/SW state was inspected (evidence/discover-home.json, evidence/auth-open-probe.json, evidence/404-mobile.png, evidence/site.webmanifest, evidence/pwa-probe.json).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM reported lang=es; representative pages were assessed for locale/time-zone data and the single-locale publishing intent",
      "evidence": "The site is deliberately Spanish-only and declares lang=es; no translated or bidirectional variant is offered, so multi-language layout adaptation is outside this run’s observed intent.",
      "reason": "The site is deliberately Spanish-only and declares lang=es; no translated or bidirectional variant is offered, so multi-language layout adaptation is outside this run’s observed intent."
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM reported lang=es; representative pages were assessed for locale/time-zone data and the single-locale publishing intent",
      "evidence": "The representative public paths contain no user-entered locale-sensitive numbers, currencies, calendars, or dates requiring runtime locale formatting.",
      "reason": "The representative public paths contain no user-entered locale-sensitive numbers, currencies, calendars, or dates requiring runtime locale formatting."
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM reported lang=es; representative pages were assessed for locale/time-zone data and the single-locale publishing intent",
      "evidence": "No scheduled events, user-facing times, or cross-zone coordination flow is present on the representative paths.",
      "reason": "No scheduled events, user-facing times, or cross-zone coordination flow is present on the representative paths."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "high",
      "method": "No consent/upsell interruption appeared; auth forms were opened and invalid submission/autocomplete behavior inspected",
      "evidence": "No consent/upsell interruption appeared; auth forms were opened and invalid submission/autocomplete behavior inspected (evidence/home.png, evidence/auth-invalid-probe.json, evidence/home-probe.json).",
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "pass",
      "confidence": "high",
      "method": "No consent/upsell interruption appeared; auth forms were opened and invalid submission/autocomplete behavior inspected",
      "evidence": "No consent/upsell interruption appeared; auth forms were opened and invalid submission/autocomplete behavior inspected (evidence/home.png, evidence/auth-invalid-probe.json, evidence/home-probe.json).",
      "pathIds": [
        "auth",
        "not-found"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "issues",
      "confidence": "high",
      "method": "No consent/upsell interruption appeared; auth forms were opened and invalid submission/autocomplete behavior inspected",
      "evidence": "The main sign-in and registration fields have useful tokens, but forgot-password account/captcha and reset email fields returned empty autocomplete values.",
      "pathIds": [
        "auth"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "pass",
      "confidence": "high",
      "method": "No consent/upsell interruption appeared; auth forms were opened and invalid submission/autocomplete behavior inspected",
      "evidence": "No consent/upsell interruption appeared; auth forms were opened and invalid submission/autocomplete behavior inspected (evidence/home.png, evidence/auth-invalid-probe.json, evidence/home-probe.json).",
      "pathIds": [
        "auth",
        "not-found"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "HAR, trackers, image audits, trace and Lighthouse quantified bytes, third-party work, image formats, and idle/main-thread cost",
      "evidence": "The homepage transferred 2.38MB of images; Lighthouse estimated 266KiB avoidable image bytes, and the image audit found an 1600px hero displayed at 431px with no srcset.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "HAR, trackers, image audits, trace and Lighthouse quantified bytes, third-party work, image formats, and idle/main-thread cost",
      "evidence": "The HAR recorded 39 third-party requests and the tracker audit found seven third-party origins; opaque advertising requests produced network errors and third-party cookies.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "HAR, trackers, image audits, trace and Lighthouse quantified bytes, third-party work, image formats, and idle/main-thread cost",
      "evidence": "The HAR recorded 39 third-party requests and the tracker audit found seven third-party origins; opaque advertising requests produced network errors and third-party cookies.",
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "robots.txt AI directives, raw HTML coverage, Lighthouse agentic category, and DOM capabilities were inspected",
      "evidence": "The publisher explicitly disallows major AI agents in robots.txt and exposes no stated agent-facing capability, so structured WebMCP tooling is outside declared public intent.",
      "reason": "The publisher explicitly disallows major AI agents in robots.txt and exposes no stated agent-facing capability, so structured WebMCP tooling is outside declared public intent."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "robots.txt AI directives, raw HTML coverage, Lighthouse agentic category, and DOM capabilities were inspected",
      "evidence": "No summarisation, generation, or other inference task is part of the observed reading flow, and the publisher blocks AI-agent reuse.",
      "reason": "No summarisation, generation, or other inference task is part of the observed reading flow, and the publisher blocks AI-agent reuse."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "high",
      "method": "Heap summaries before and after 10 real modal open/close cycles measured retained footprint and constructor populations",
      "evidence": "Heap summaries before and after 10 real modal open/close cycles measured retained footprint and constructor populations (evidence/heap-baseline.json, evidence/heap-post-auth.json).",
      "pathIds": [
        "auth"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "high",
      "method": "Heap summaries before and after 10 real modal open/close cycles measured retained footprint and constructor populations",
      "evidence": "Heap summaries before and after 10 real modal open/close cycles measured retained footprint and constructor populations (evidence/heap-baseline.json, evidence/heap-post-auth.json).",
      "pathIds": [
        "auth"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "high",
      "method": "Heap summaries before and after 10 real modal open/close cycles measured retained footprint and constructor populations",
      "evidence": "Heap summaries before and after 10 real modal open/close cycles measured retained footprint and constructor populations (evidence/heap-baseline.json, evidence/heap-post-auth.json).",
      "pathIds": [
        "auth"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01",
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04",
        "F05"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06",
        "F07"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F08",
        "F09",
        "F10"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F11",
        "F12"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F13",
        "F14",
        "F15"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "The site is deliberately Spanish-only and declares lang=es; no translated or bidirectional variant is offered, so multi-language layout adaptation is outside this run’s observed intent. The representative public paths contain no user-entered locale-sensitive numbers, currencies, calendars, or dates requiring runtime locale formatting. No scheduled events, user-facing times, or cross-zone coordination flow is present on the representative paths."
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F18",
        "F19"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "The publisher explicitly disallows major AI agents in robots.txt and exposes no stated agent-facing capability, so structured WebMCP tooling is outside declared public intent. No summarisation, generation, or other inference task is part of the observed reading flow, and the publisher blocks AI-agent reuse."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and discovery surface: featured title, recent releases, rankings, navigation, account entry, and global chrome.",
      "url": "https://lectormangass.net/",
      "conditions": [
        "desktop",
        "viewport 360x800",
        "prefers-color-scheme: light/dark",
        "prefers-reduced-motion: reduce",
        "prefers-contrast: more",
        "keyboard/focus probe"
      ],
      "result": "issues"
    },
    {
      "id": "catalog",
      "description": "Comics catalog/listing archetype, representing browse, ranking, and search-oriented discovery.",
      "url": "https://lectormangass.net/comics",
      "conditions": [
        "desktop",
        "viewport 360x800",
        "no-JavaScript crawler comparison"
      ],
      "result": "pass"
    },
    {
      "id": "detail",
      "description": "Series detail archetype and the start of the primary read flow, including chapter selection and account/list actions.",
      "url": "https://lectormangass.net/comics/jinx",
      "conditions": [
        "desktop",
        "viewport 360x800",
        "no-JavaScript crawler comparison"
      ],
      "result": "issues"
    },
    {
      "id": "chapter",
      "description": "Primary core-task flow: open and read a representative chapter, then use chapter navigation.",
      "url": "https://lectormangass.net/comics/jinx/capitulo-103",
      "conditions": [
        "viewport 360x800",
        "image audit",
        "layout metrics"
      ],
      "result": "issues"
    },
    {
      "id": "auth",
      "description": "Account modal flow: open sign-in and submit empty required fields to inspect semantics, focus, validation, and recovery.",
      "url": "https://lectormangass.net/",
      "conditions": [
        "modal open",
        "invalid submit",
        "10 repeated open/close cycles"
      ],
      "result": "issues"
    },
    {
      "id": "announcement",
      "description": "Announcement/article archetype, selected to cover long-form content and current operational messaging.",
      "url": "https://lectormangass.net/anuncios/incidente-servidor-imagenes",
      "conditions": [
        "desktop",
        "no-JavaScript crawler comparison"
      ],
      "result": "pass"
    },
    {
      "id": "not-found",
      "description": "Intentional unknown route used to inspect HTTP/navigation failure recovery.",
      "url": "https://lectormangass.net/definitely-not-a-real-page-web-uplift",
      "conditions": [
        "viewport 360x800"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "low",
      "confidence": "high",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "guidanceCategory": "user-experience",
      "pathId": "home",
      "url": "https://lectormangass.net/",
      "summary": "The site forces a dark palette instead of following the user’s light/dark preference.",
      "evidence": "Computed styles were identical under light and dark emulation: color-scheme stayed dark, body background rgb(17,17,19), and body text rgb(255,255,255).",
      "artifacts": [
        "evidence/theme-light.png",
        "evidence/theme-dark.png"
      ],
      "suggestedFix": "Declare color-scheme: light dark and use prefers-color-scheme or light-dark() tokens so the existing dark theme has a usable light counterpart.",
      "effort": "medium"
    },
    {
      "id": "F02",
      "severity": "medium",
      "confidence": "high",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-reduced-motion",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "home",
      "url": "https://lectormangass.net/",
      "summary": "The auto-advancing hero continues motion when reduced motion is requested.",
      "evidence": "Under prefers-reduced-motion: reduce, getAnimations() still returned a running 1600ms animation and the hero retained 0.8s transitions plus a 5s loading-bar transition.",
      "artifacts": [
        "evidence/reduced-motion-probe.json"
      ],
      "suggestedFix": "In a prefers-reduced-motion: reduce query, stop auto-advance and loading-bar motion and reduce non-essential transitions to near-zero while preserving state changes.",
      "effort": "small"
    },
    {
      "id": "F03",
      "severity": "medium",
      "confidence": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "declarative-dialog-popover-control",
      "guidanceCategory": "html",
      "pathId": "auth",
      "url": "https://lectormangass.net/",
      "summary": "The sign-in modal is a custom role=dialog overlay rather than a native dialog, and opening it does not move focus into the modal.",
      "evidence": "After activating the member button, #authModal became aria-hidden=false but document.activeElement remained BODY; DOM inspection shows a div role=dialog with a custom backdrop.",
      "artifacts": [
        "evidence/auth-open-probe.json"
      ],
      "suggestedFix": "Use <dialog> with showModal(), provide a labelled close control, move initial focus to the first field, trap focus through the native top layer, and restore focus to the opener.",
      "effort": "medium"
    },
    {
      "id": "F04",
      "severity": "low",
      "confidence": "medium",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "size-aware-styling",
      "guidanceCategory": "css",
      "pathId": "home",
      "url": "https://lectormangass.net/",
      "summary": "Responsive layout works at tested viewport sizes but is entirely viewport-driven, with no component-level container rules found.",
      "evidence": "The platform probe found zero @container rules while the same card/navigation components are reused in several differently sized regions.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/home-mobile.png",
        "evidence/comics-mobile.png"
      ],
      "suggestedFix": "Give reusable card and navigation regions containment and express local layout changes with @container rules, retaining viewport queries only for page-level composition.",
      "effort": "medium"
    },
    {
      "id": "F05",
      "severity": "medium",
      "confidence": "high",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "home",
      "url": "https://lectormangass.net/",
      "summary": "Keyboard focus is not visibly distinguished and several links have very short target boxes.",
      "evidence": "Focusing the first visible control produced outline: none and box-shadow: none. The target probe found repeated genre links only 16px high and footer links 19px high.",
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "suggestedFix": "Add a strong :focus-visible ring with sufficient contrast and enlarge compact links with padding or pseudo-element hit areas to at least 24px, preferably 44px for primary touch controls.",
      "effort": "small"
    },
    {
      "id": "F06",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "identify-inp-causes",
      "guidanceCategory": "performance",
      "pathId": "home",
      "url": "https://lectormangass.net/",
      "summary": "The mobile lab LCP is slow even though the main thread is responsive and layout is stable.",
      "evidence": "Lighthouse measured LCP 5.3s (score 0.21), while TBT was 0ms and CLS 0.03. A separate warm trace measured LCP 1.06s, so network/image discovery is the likely bottleneck.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json"
      ],
      "suggestedFix": "Prioritise the actual hero LCP image, reduce its transfer cost, avoid delaying its URL selection, and re-test under Lighthouse mobile throttling until LCP is within 2.5s.",
      "effort": "medium"
    },
    {
      "id": "F07",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "optimize-image-priority",
      "guidanceCategory": "performance",
      "pathId": "home",
      "url": "https://lectormangass.net/",
      "summary": "Hero and cover delivery leaves meaningful image and request-priority savings.",
      "evidence": "Lighthouse reported 266KiB image-delivery savings and that the LCP image lacks fetchpriority=high. The HAR transferred 2.55MB, 2.38MB of it images, and identified render-blocking stylesheets.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json",
        "evidence/home-images.json"
      ],
      "suggestedFix": "Add fetchpriority=high to the known LCP image, provide responsive image candidates, compress covers to their display size, and keep only genuinely critical CSS render-blocking.",
      "effort": "medium"
    },
    {
      "id": "F08",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "home",
      "url": "https://lectormangass.net/",
      "summary": "Several small labels fail minimum text contrast.",
      "evidence": "Lighthouse measured contrast ratios of 3.3:1 for the announcement age, 3.63:1 for the RECOMENDADO badge, and 2.9:1 for the active SEMANA tab, below 4.5:1 for their sizes.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/contrast-more.png"
      ],
      "suggestedFix": "Adjust foreground/background tokens for small muted labels, red badges, and active tabs to meet at least 4.5:1 in every state.",
      "effort": "small"
    },
    {
      "id": "F09",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "auth",
      "url": "https://lectormangass.net/",
      "summary": "Focus indication and modal focus management do not provide a dependable keyboard path.",
      "evidence": "The focus probe found no outline or box shadow on the focused header control, and the opened modal left activeElement on BODY rather than moving focus into the dialog.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/auth-open-probe.json"
      ],
      "suggestedFix": "Implement visible :focus-visible styling and native dialog focus management, including initial focus, containment, Escape close, and focus restoration.",
      "effort": "medium"
    },
    {
      "id": "F10",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "accessibility",
      "guidanceCategory": "accessibility",
      "pathId": "home",
      "url": "https://lectormangass.net/",
      "summary": "Reflow succeeds, but compact link targets reduce usability for touch and motor-impaired users.",
      "evidence": "All tested 360px layouts had zero horizontal overflow, but the target probe found many active links only 16–19px high.",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/home-layout-mobile.json",
        "evidence/chapter-103-layout-mobile.json"
      ],
      "suggestedFix": "Preserve the successful fluid reflow and increase interactive target boxes using padding and spacing without shrinking readable content.",
      "effort": "small"
    },
    {
      "id": "F11",
      "severity": "low",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "pathId": "chapter",
      "url": "https://lectormangass.net/comics/jinx/capitulo-103",
      "summary": "Many content images omit intrinsic dimensions and responsive candidates.",
      "evidence": "The chapter image audit found 8 of 10 images without width/height and 8 without srcset; the homepage audit found all four img elements without dimensions.",
      "artifacts": [
        "evidence/home-images.json",
        "evidence/chapter-103-images.json"
      ],
      "suggestedFix": "Emit width and height (or a reserved aspect ratio) for every image and responsive srcset/sizes for covers and reader pages where multiple resolutions are available.",
      "effort": "small"
    },
    {
      "id": "F12",
      "severity": "medium",
      "confidence": "high",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "guidanceCategory": "html",
      "pathId": "home",
      "url": "https://lectormangass.net/",
      "summary": "A deprecated unload listener prevents back/forward cache restoration.",
      "evidence": "Lighthouse reported the unload event deprecation and an actionable BFCache failure: UnloadHandlerExistsInMainFrame.",
      "artifacts": [
        "evidence/lighthouse-home.json"
      ],
      "suggestedFix": "Remove the unload handler; use pagehide or visibilitychange only when needed, and verify the page restores from BFCache.",
      "effort": "small"
    },
    {
      "id": "F13",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "guidanceCategory": "security",
      "pathId": "home",
      "url": "https://lectormangass.net/",
      "summary": "Transport is HTTPS, but baseline security headers are absent and first-party analytics cookies use unsafe attributes.",
      "evidence": "The headers audit found no CSP, HSTS, nosniff, clickjacking, Referrer-Policy, or Permissions-Policy. All 7 first-party Hst* cookies lacked Secure and used SameSite=None.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "suggestedFix": "Set HSTS, a restrictive CSP, nosniff, frame-ancestors or X-Frame-Options, Referrer-Policy, and Permissions-Policy; mark HTTPS cookies Secure and use Lax/Strict unless cross-site use is essential.",
      "effort": "medium"
    },
    {
      "id": "F14",
      "severity": "high",
      "confidence": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "guidanceCategory": "privacy",
      "pathId": "home",
      "url": "https://lectormangass.net/",
      "summary": "The page loads opaque advertising/tracking origins and sets tracking cookies without an observed consent step.",
      "evidence": "Network evidence found seven third-party origins, including Histats and several opaque .cfd/.rest hosts; Lighthouse found five third-party cookies. Two opaque scripts failed with ORB/DNS errors.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/lighthouse-home.json"
      ],
      "suggestedFix": "Remove opaque ad/redirect chains and non-essential analytics; proxy or self-host essentials, obtain informed consent before optional tracking, and document each retained third party.",
      "effort": "medium"
    },
    {
      "id": "F15",
      "severity": "medium",
      "confidence": "medium",
      "principleId": "be-private-and-secure",
      "principleCheckId": "in-context-permissions-and-modern-auth",
      "guidanceId": "passkeys",
      "guidanceCategory": "identity",
      "pathId": "auth",
      "url": "https://lectormangass.net/",
      "summary": "The account flow is password-only and exposes no phishing-resistant sign-in option.",
      "evidence": "The inspected sign-in/register forms provide email and password fields with appropriate autocomplete, but no WebAuthn/passkey affordance or navigator.credentials flow was present.",
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/auth-open-probe.json"
      ],
      "suggestedFix": "Offer passkey registration and authentication alongside the existing password fallback, with conditional mediation where supported.",
      "effort": "large"
    },
    {
      "id": "F16",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-resilient",
      "principleCheckId": "offline-and-installable",
      "guidanceId": "flicker-free-client-side-ab-testing",
      "guidanceCategory": "performance",
      "pathId": "home",
      "url": "https://lectormangass.net/",
      "summary": "The app advertises standalone installation but has no service worker or offline cache.",
      "evidence": "site.webmanifest declares display=standalone, start_url=/, and app icons; navigator.serviceWorker.getRegistrations() and Cache Storage both returned empty arrays.",
      "artifacts": [
        "evidence/site.webmanifest",
        "evidence/pwa-probe.json"
      ],
      "suggestedFix": "Add a scoped service worker with a small offline shell/fallback and cache only stable app chrome and explicitly chosen reader assets; provide retry messaging for unavailable chapters.",
      "effort": "large"
    },
    {
      "id": "F17",
      "severity": "low",
      "confidence": "high",
      "principleId": "be-trustworthy",
      "principleCheckId": "trustworthy-input-assistance",
      "guidanceId": "autofill-address-form",
      "guidanceCategory": "forms",
      "pathId": "auth",
      "url": "https://lectormangass.net/",
      "summary": "Recovery forms omit autocomplete hints that would help users enter account identifiers.",
      "evidence": "The main sign-in and registration fields have useful tokens, but forgot-password account/captcha and reset email fields returned empty autocomplete values.",
      "artifacts": [
        "evidence/home-probe.json",
        "evidence/auth-invalid-probe.json"
      ],
      "suggestedFix": "Add autocomplete=email or username to recovery account fields and retain current-password/new-password tokens only on the corresponding authentication steps.",
      "effort": "trivial"
    },
    {
      "id": "F18",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "deliver-optimized-decorative-images",
      "guidanceCategory": "performance",
      "pathId": "home",
      "url": "https://lectormangass.net/",
      "summary": "Image bytes are high for displayed cover sizes and responsive image selection is limited.",
      "evidence": "The homepage transferred 2.38MB of images; Lighthouse estimated 266KiB avoidable image bytes, and the image audit found an 1600px hero displayed at 431px with no srcset.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/lighthouse-home.json",
        "evidence/home-images.json"
      ],
      "suggestedFix": "Generate width-appropriate WebP/AVIF variants, use srcset/sizes, and lower compression quality for small cover thumbnails while preserving reader-page legibility.",
      "effort": "medium"
    },
    {
      "id": "F19",
      "severity": "medium",
      "confidence": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "deprioritize-background-fetches",
      "guidanceCategory": "performance",
      "pathId": "home",
      "url": "https://lectormangass.net/",
      "summary": "Optional tracking and opaque ad scripts add third-party work with little visible user value.",
      "evidence": "The HAR recorded 39 third-party requests and the tracker audit found seven third-party origins; opaque advertising requests produced network errors and third-party cookies.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json",
        "evidence/lighthouse-home.json"
      ],
      "suggestedFix": "Set an explicit third-party budget, remove failing/opaque ad chains, defer optional analytics until consent and idle time, and prefer first-party, batched measurement.",
      "effort": "medium"
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Remove opaque tracking/ad chains and establish a consent-gated third-party budget",
      "priority": 1,
      "findingIds": [
        "F14",
        "F19"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Deploy baseline security headers and safe cookie attributes",
      "priority": 2,
      "findingIds": [
        "F13"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Fix mobile LCP by prioritising and resizing the hero image",
      "priority": 3,
      "findingIds": [
        "F06",
        "F07",
        "F18"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Restore keyboard-visible focus and native dialog focus management",
      "priority": 4,
      "findingIds": [
        "F03",
        "F05",
        "F09",
        "F10"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Correct failing small-text contrast tokens",
      "priority": 5,
      "findingIds": [
        "F08"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Respect theme and reduced-motion preferences",
      "priority": 6,
      "findingIds": [
        "F01",
        "F02"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Add intrinsic/responsive image metadata across cards and reader pages",
      "priority": 7,
      "findingIds": [
        "F11",
        "F18"
      ],
      "guidanceId": "deliver-optimized-decorative-images",
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Remove unload handlers and restore BFCache eligibility",
      "priority": 8,
      "findingIds": [
        "F12"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T09",
      "title": "Add an intentional offline fallback for the installable app",
      "priority": 9,
      "findingIds": [
        "F16"
      ],
      "guidanceId": "flicker-free-client-side-ab-testing",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Add passkeys and complete recovery-field autocomplete hints",
      "priority": 10,
      "findingIds": [
        "F15",
        "F17"
      ],
      "guidanceId": "passkeys",
      "status": "open"
    },
    {
      "id": "T11",
      "title": "Introduce container-query rules for reused cards and navigation regions",
      "priority": 11,
      "findingIds": [
        "F04"
      ],
      "guidanceId": "size-aware-styling",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 7,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-17T19-26-54-704Z"
}
