{
  "url": "https://loteriadehoy.com",
  "auditedAt": "2026-07-17T21:48:52.337Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Coverage-complete audit of four representative public templates plus an HTTP failure state. Excludes the separate secure.loteriadehoy.com account origin and exhaustive lottery-template duplication.",
  "page": {
    "appType": "mpa",
    "framework": "Server-rendered MPA with Bootstrap/jQuery-style assets",
    "notes": "Public Spanish lottery-results and gambling-information site. Raw HTML contains 99% of rendered content."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "layout-metrics",
    "evaluate-probe",
    "discoverability",
    "images",
    "har",
    "trace",
    "lighthouse",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "heap-summary"
  ],
  "guidanceConsulted": [
    "dark-mode",
    "component-specific-light-dark-theme",
    "accessibility",
    "adapt-scrollbar-to-contrast-preferences",
    "same-document-transitions",
    "cross-document-transitions",
    "group-element-transitions",
    "faster-spa-view-transitions",
    "scrollytelling",
    "parallax-scroll-effects",
    "scroll-entry-exit-effects",
    "carousel-slide-effects",
    "physics-based-easing",
    "individual-transform-properties",
    "animate-element-entry-exit",
    "animate-to-from-top-layer",
    "animate-to-intrinsic-sizes",
    "dynamic-sibling-animations",
    "interactive-content-reveal",
    "pull-to-reveal",
    "swipe-to-remove",
    "shrinking-header-on-scroll",
    "scroll-progress-indicator",
    "scroll-position-aware-elements",
    "scroll-snap-realtime-feedback",
    "scroll-snap-state-sync",
    "scroll-target-on-load",
    "soft-edge-content-fade",
    "scrollability-affordance-hints",
    "anchor-positioning-tab-underline",
    "position-aware-tooltips",
    "interest-triggered-tooltips",
    "interest-triggered-action-previews",
    "directional-navigation-transitions",
    "carousel-snap-highlights",
    "navigation-drawer",
    "stack-drill-down",
    "persistent-app-tours",
    "persistent-toast-notifications",
    "light-dismiss-a-dialog",
    "platform-controls-dismiss-dialog",
    "declarative-dialog-popover-control",
    "animated-select-picker",
    "branded-select-styling",
    "brand-consistent-forms",
    "custom-select-picker-layouts",
    "rich-media-picker",
    "complex-shapes",
    "shaped-cutouts",
    "overflow-clipping-control",
    "visually-texture-content",
    "apply-webgl-shaders",
    "interactive-content-in-3d-scenes",
    "highlight-text-ranges",
    "prevent-text-wrapping",
    "customize-scrollbar-color-and-thickness",
    "export-html-media-from-canvas",
    "fluid-scaling",
    "calculate-with-intrinsic-sizes",
    "css-layout",
    "size-aware-styling",
    "content-based-styling",
    "child-state-based-styling",
    "design-token-reactivity",
    "dynamic-sibling-styling",
    "form-fields-automatically-fit-contents",
    "improve-text-layout-and-legibility",
    "forms",
    "accessible-error-announcement",
    "required-field-feedback",
    "validate-input-after-interaction",
    "identify-inp-causes",
    "schedule-tasks-by-priority",
    "optimize-preload-priority",
    "improve-next-page-load-performance",
    "interactions-in-complex-layouts",
    "performance",
    "visually-stable-font-fallbacks",
    "break-up-long-tasks",
    "identify-heavy-scripts",
    "optimize-script-priority",
    "defer-rendering-heavy-content",
    "defer-work-until-scroll-ends",
    "optimize-image-priority",
    "conditional-async-dependencies",
    "expose-canvas-content-to-browser-features",
    "move-dom-element-without-losing-state",
    "precise-text-alignment",
    "visually-stable-mixed-fonts",
    "css",
    "html",
    "reduce-style-repetition",
    "security",
    "privacy",
    "batch-analytics-events",
    "full-session-analytics",
    "calculate-total-foreground-time",
    "passkeys",
    "passkey-registration",
    "passkey-authentication",
    "passkey-reauthentication",
    "passkey-conditional-create",
    "passkey-management",
    "flicker-free-client-side-ab-testing",
    "consistent-cross-document-transitions",
    "stabilize-reactive-state",
    "resilient-context-menus-and-nested-dropdowns",
    "persistent-top-layer-ui",
    "detect-initial-visibility-state",
    "sequence-distributed-events",
    "translator",
    "language-detection",
    "support-global-calendar-systems",
    "capture-location-agnostic-data",
    "format-human-readable-durations",
    "manage-recurring-intervals",
    "calculate-event-differentials",
    "coordinate-global-events",
    "model-partial-time-concepts",
    "search-hidden-content",
    "select-menu-interaction",
    "style-parent-with-has",
    "autofill-address-form",
    "autofill-payment-form",
    "autofill-sign-in-form",
    "autofill-sign-up-form",
    "autofill-highlight-inputs",
    "deliver-optimized-decorative-images",
    "resolution-optimized-pseudo-elements",
    "deprioritize-background-fetches",
    "efficient-background-processing",
    "webmcp",
    "agentic-forms",
    "agentic-javascript-tools",
    "language-model",
    "summarizer"
  ],
  "artifacts": [
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "Homepage at desktop viewport",
      "condition": "viewport: desktop",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "Homepage at 360x800",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/home-preferences.png",
      "caption": "Homepage under dark, reduced-motion and increased-contrast preferences",
      "condition": "dark; reduced motion; increased contrast",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/results-mobile.png",
      "caption": "Animalitos results at 360x800",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F03"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/detail-mobile.png",
      "caption": "Lotto Activo detail at 360x800",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/help-mobile.png",
      "caption": "Help/FAQ at 360x800",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/not-found-mobile.png",
      "caption": "Bare Apache 404 at 360x800",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F12"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/platform-probe.json",
      "caption": "Platform, semantics, focus and CSS feature probe",
      "findingIds": [
        "F02",
        "F05"
      ]
    },
    {
      "type": "dom",
      "path": "evidence/results-metadata.json",
      "caption": "Metadata, link, form, media and PWA probe",
      "findingIds": [
        "F09",
        "F11"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-layout.json",
      "caption": "Homepage narrow layout metrics",
      "condition": "viewport: 360x800",
      "findingIds": []
    },
    {
      "type": "layout",
      "path": "evidence/results-layout.json",
      "caption": "Results narrow layout metrics",
      "condition": "viewport: 360x800",
      "findingIds": [
        "F03"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability-home.json",
      "caption": "Raw HTML versus rendered homepage",
      "condition": "JavaScript disabled crawler comparison",
      "findingIds": []
    },
    {
      "type": "discoverability",
      "path": "evidence/discoverability-results.json",
      "caption": "Raw HTML versus rendered results",
      "condition": "JavaScript disabled crawler comparison",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-home-rendered.png",
      "caption": "Rendered homepage crawler comparison",
      "condition": "JavaScript enabled",
      "findingIds": []
    },
    {
      "type": "screenshot",
      "path": "evidence/discoverability-home-crawler.png",
      "caption": "Crawler homepage comparison",
      "condition": "JavaScript disabled",
      "findingIds": []
    },
    {
      "type": "har",
      "path": "evidence/results.har",
      "caption": "Full results-page network capture",
      "findingIds": [
        "F07"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/results-summary.json",
      "caption": "Compact results-page network summary",
      "findingIds": [
        "F07",
        "F14"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/results-trace.json",
      "caption": "Results-page DevTools trace",
      "findingIds": []
    },
    {
      "type": "trace-summary",
      "path": "evidence/results-trace-summary.json",
      "caption": "Compact trace metrics",
      "findingIds": []
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-results.json",
      "caption": "Lighthouse JSON for results template",
      "condition": "mobile emulation",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/lighthouse-summary.json",
      "caption": "Selected Lighthouse audit summary",
      "condition": "mobile emulation",
      "findingIds": [
        "F05",
        "F06",
        "F07",
        "F08",
        "F09",
        "F10"
      ]
    },
    {
      "type": "other",
      "path": "evidence/images-home.json",
      "caption": "Homepage image audit",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/images-results.json",
      "caption": "Results image audit",
      "findingIds": [
        "F06",
        "F07",
        "F09"
      ]
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "Security response headers",
      "findingIds": [
        "F13"
      ]
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "Cookie security flags",
      "findingIds": [
        "F13",
        "F14"
      ]
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "Third-party tracker inventory",
      "findingIds": [
        "F14"
      ]
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "Client-side secret scan",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.heapsnapshot",
      "caption": "Baseline heap snapshot",
      "condition": "before interaction",
      "findingIds": []
    },
    {
      "type": "heap",
      "path": "evidence/heap-post.heapsnapshot",
      "caption": "Heap after ten menu cycles",
      "condition": "after repeated interaction",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/memory-interaction-probe.json",
      "caption": "DOM/listener/timer accumulation probe",
      "condition": "ten menu cycles",
      "findingIds": []
    },
    {
      "type": "other",
      "path": "evidence/preferences-probe.json",
      "caption": "Computed styles and animations under user preferences",
      "condition": "dark; reduced motion; increased contrast",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "other",
      "path": "evidence/help-interaction.json",
      "caption": "FAQ disclosure state probe",
      "condition": "after one activation",
      "findingIds": [
        "F04"
      ]
    },
    {
      "type": "other",
      "path": "evidence/not-found.json",
      "caption": "404 content and recovery-link probe",
      "condition": "invalid route",
      "findingIds": [
        "F12"
      ]
    },
    {
      "type": "other",
      "path": "evidence/recon.json",
      "caption": "Routes, headings, robots and sitemap recon",
      "findingIds": [
        "F11"
      ]
    }
  ],
  "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": "Screenshot and computed-style probe under prefers-color-scheme: dark",
      "evidence": "The dark preference matched, but body remained rgb(255,255,255), color-scheme was normal, and the preference screenshot was identical to light mode.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/home-preferences.png"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "pass",
      "confidence": "high",
      "method": "Animation probe under prefers-reduced-motion: reduce",
      "evidence": "The preference matched and document.getAnimations() returned no active animations, so there was no non-essential motion to suppress.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/preferences-probe.json"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "prefers-contrast probe plus Lighthouse contrast audit",
      "evidence": "The page did not expose contrast-specific styling and Lighthouse found multiple WCAG contrast failures, including teal buttons at 2.95:1.",
      "pathIds": [
        "home",
        "results"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "medium",
      "method": "CSS/DOM platform probe and route walkthrough",
      "evidence": "The multi-page navigation has no view-transition-name or View Transition CSS; route changes are abrupt full-document swaps.",
      "pathIds": [
        "home",
        "results"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "CSS animation-timeline inspection",
      "evidence": "No parallax, scrollytelling, entry reveal, carousel, or other scroll-linked motion exists on the representative pages.",
      "reason": "No parallax, scrollytelling, entry reveal, carousel, or other scroll-linked motion exists on the representative pages."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "medium",
      "method": "DOM interaction inspection on menu and FAQ",
      "evidence": "Interactions use native links and buttons; no custom pointermove, swipe, or pull gesture was exposed in the representative paths.",
      "pathIds": [
        "home",
        "help"
      ],
      "artifacts": [
        "evidence/help-interaction.json"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "medium",
      "method": "Mobile screenshots and CSS/DOM inspection",
      "evidence": "On pages up to 22,963 CSS px tall, the chrome provides no scroll progress or position-aware cue; the platform probe found no scroll-state/timeline styling.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/results-mobile.png"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "not-applicable",
      "confidence": "high",
      "method": "DOM inspection for transient overlays",
      "evidence": "No tooltip, popover, or viewport-edge menu requiring anchored positioning appeared in the representative paths.",
      "reason": "No tooltip, popover, or viewport-edge menu requiring anchored positioning appeared in the representative paths."
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "issues",
      "confidence": "medium",
      "method": "Route and long-page visual walkthrough",
      "evidence": "Navigation swaps abruptly and the very long results page lacks progress, current-section, or other attention cues.",
      "pathIds": [
        "home",
        "results"
      ],
      "artifacts": [
        "evidence/results-mobile.png"
      ],
      "findingIds": [
        "F02",
        "F03"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "pass",
      "confidence": "high",
      "method": "Initial-load screenshots across four templates",
      "evidence": "No modal, consent wall, or interstitial obscured primary content on load; advertising occupied bounded page regions.",
      "pathIds": [
        "home",
        "results",
        "detail",
        "help"
      ],
      "artifacts": [
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "FAQ interaction and DOM semantics inspection",
      "evidence": "The FAQ disclosure uses no details elements; after one interaction all sampled question buttons reported aria-expanded=true, making state semantics unreliable.",
      "pathIds": [
        "help"
      ],
      "artifacts": [
        "evidence/help-interaction.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "medium",
      "method": "Mobile visual review and layout metrics",
      "evidence": "The results template is 22,963 CSS px tall and adds a persistent right rail of logos plus repeated social controls and advertising around the result content.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/results-mobile.png"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "high",
      "method": "Layout primitives at 360x800 on four templates",
      "evidence": "All four layouts reported scrollWidth 360, innerWidth 360, viewport meta present, and zero horizontal overflow.",
      "pathIds": [
        "home",
        "results",
        "detail",
        "help"
      ],
      "artifacts": [
        "evidence/results-layout.json"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "pass",
      "confidence": "medium",
      "method": "Desktop/mobile screenshot comparison and narrow layout metrics",
      "evidence": "Hero actions change from a row on desktop to a stacked mobile layout, while result/detail/help templates fit at 360 px without overflow.",
      "pathIds": [
        "home",
        "results",
        "detail",
        "help"
      ],
      "artifacts": [
        "evidence/home-desktop.png"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Programmatic focus/target probe and Lighthouse accessibility audit",
      "evidence": "Many links expose outline:none when focused, result buttons are 38 px tall, and hundreds of empty hash links add unnamed keyboard stops.",
      "pathIds": [
        "home",
        "results"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "high",
      "method": "First-viewport screenshots and heading/link inspection",
      "evidence": "The home page clearly offers result categories, and result/detail/help pages state their purpose with prominent headings and actions.",
      "pathIds": [
        "home",
        "results",
        "detail",
        "help"
      ],
      "artifacts": [
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "pass",
      "confidence": "high",
      "method": "Direct navigation through home, listing, and Lotto Activo detail URLs",
      "evidence": "The core information journey is reachable without login: home links to results, results expose dated outcomes, and a lottery detail explains schedules.",
      "pathIds": [
        "home",
        "results",
        "detail"
      ],
      "artifacts": [
        "evidence/results-mobile.png"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "issues",
      "confidence": "high",
      "method": "Invalid-route recovery test",
      "evidence": "A missing route returns a bare Apache 404 with no site navigation, search, home link, or recovery action.",
      "pathIds": [
        "not-found"
      ],
      "artifacts": [
        "evidence/not-found-mobile.png"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse plus DevTools trace and layout observer",
      "evidence": "Trace LCP was 973 ms and TBT 6 ms, but Lighthouse measured CLS 0.265, outside the good range.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse CLS and image-dimension audit",
      "evidence": "Lighthouse measured CLS 0.265; all 100 result-page images and all 33 home images lacked explicit width/height.",
      "pathIds": [
        "home",
        "results"
      ],
      "artifacts": [
        "evidence/images-results.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "pass",
      "confidence": "high",
      "method": "DevTools performance trace",
      "evidence": "The trace recorded one 56.25 ms long task and only 6.25 ms total blocking time over a 5.8 s capture.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/results-trace-summary.json"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "HAR summary confirmed against DOM assets and Lighthouse",
      "evidence": "The results page made 205 requests, loaded 173 images, and shipped seven parser-inserted high-priority stylesheets; 88 below-fold images were eager.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/results-summary.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse code coverage and HAR",
      "evidence": "Lighthouse estimated 85 KiB unused JS and 37 KiB unused CSS, including 95% of Bootstrap CSS and 86% of datatables.js.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility and images/DOM probes",
      "evidence": "All 100 result images lacked alt, 310 of 409 links had no text, Lighthouse found unnamed links, and the date input had no label.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/images-results.json"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse contrast audit",
      "evidence": "Lighthouse found repeated failures: primary teal buttons at 2.95:1, orange Register at 2.47:1, and heading teal at 2.8:1.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Heading/focus probe and Lighthouse accessibility audit",
      "evidence": "The homepage jumps from H5 to H1 to H6, Lighthouse flags heading order, and many focusable links have no visible outline or accessible name.",
      "pathIds": [
        "home",
        "results"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ],
      "findingIds": [
        "F05",
        "F09"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "medium",
      "method": "Mobile screenshots on four templates",
      "evidence": "Body text wraps within the viewport with readable line lengths and no clipping on the sampled templates.",
      "pathIds": [
        "home",
        "results",
        "detail",
        "help"
      ],
      "artifacts": [
        "evidence/detail-mobile.png"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "360 px reflow, viewport, and target-size inspection",
      "evidence": "Reflow itself succeeds and scaling is allowed, but prominent result controls are only 38 px tall and dense unnamed icon links create poor touch/keyboard targets.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/results-mobile.png"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "high",
      "method": "Lighthouse console audit",
      "evidence": "Lighthouse reported no browser errors logged to the console.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "DOM, image primitive, and Lighthouse asset audits",
      "evidence": "Doctype and UTF-8 are valid, but 100/100 result images lack dimensions and Lighthouse flags a low-resolution ad asset.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/images-results.json"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse best-practices diagnostics",
      "evidence": "The page is excluded from BFCache by cache-control:no-store and Lighthouse recorded DevTools cookie issues.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "issues",
      "confidence": "high",
      "method": "Metadata probe across home and result templates",
      "evidence": "Descriptions exist, but titles are keyword-stuffed: 1,073 characters on the results page and similarly excessive on home, rather than concise unique descriptions.",
      "pathIds": [
        "home",
        "results"
      ],
      "artifacts": [
        "evidence/results-metadata.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "issues",
      "confidence": "high",
      "method": "DOM link probe, robots fetch, and Lighthouse SEO",
      "evidence": "Viewport and robots are valid, but 312 of 409 result links use href=\"#\" and 310 links have empty text, undermining crawlable descriptive navigation.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/results-metadata.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "issues",
      "confidence": "high",
      "method": "HTTP/metadata/robots/sitemap probe",
      "evidence": "Pages return 200 and allow search indexing, but no canonical is present and /sitemap.xml returns an Apache 404.",
      "pathIds": [
        "home",
        "results"
      ],
      "artifacts": [
        "evidence/recon.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "issues",
      "confidence": "high",
      "method": "JSON-LD and Open Graph probe",
      "evidence": "No JSON-LD exists; og:url and og:image are malformed with a single slash, and the generic keyword-stuffed og:title does not accurately summarize the result page.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/results-metadata.json"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Headers and cookies primitives",
      "evidence": "HTTPS is used, but CSP, HSTS and nosniff are absent; PHPSESSID is neither Secure nor HttpOnly and has SameSite=None.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Trackers, cookies, secrets, and HAR primitives",
      "evidence": "Seven third-party origins include Analytics and DoubleClick; analytics cookies last 400 days and 213,552 transferred bytes were third-party. No exposed secret was found.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/trackers.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Initial-load and public-path DOM inspection",
      "evidence": "No permission prompt or authentication form appeared on the audited public pages; authentication is hosted on a separate secure subdomain outside this run.",
      "reason": "No permission prompt or authentication form appeared on the audited public pages; authentication is hosted on a separate secure subdomain outside this run."
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Security-header and cookie inspection",
      "evidence": "X-Frame-Options is present, but HSTS, CSP/frame-ancestors, Referrer-Policy and Permissions-Policy are absent, while cookies use SameSite=None.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/headers.json"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "high",
      "method": "Discoverability no-JS/raw-HTML comparison",
      "evidence": "Raw HTML preserves 99% of rendered content on home and results, including title, H1 and description; neither page is a JS shell.",
      "pathIds": [
        "home",
        "results"
      ],
      "artifacts": [
        "evidence/discoverability-home.json"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "issues",
      "confidence": "medium",
      "method": "FAQ interaction and responsive visual inspection",
      "evidence": "Layouts remain in bounds, but FAQ disclosure state is inconsistent: all sampled questions report aria-expanded=true after one question is activated.",
      "pathIds": [
        "help"
      ],
      "artifacts": [
        "evidence/help-interaction.json"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Manifest/service-worker probe and site-purpose judgement",
      "evidence": "This is a server-rendered lottery-results content site rather than an installed app; no manifest or controlling service worker exists, and installability is not needed for the core task.",
      "reason": "This is a server-rendered lottery-results content site rather than an installed app; no manifest or controlling service worker exists, and installability is not needed for the core task."
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "issues",
      "confidence": "high",
      "method": "Invalid-route recovery test",
      "evidence": "The representative HTTP failure state is a bare server 404 with no branded explanation, navigation, or retry/home recovery.",
      "pathIds": [
        "not-found"
      ],
      "artifacts": [
        "evidence/not-found.json"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "high",
      "method": "DOM language and visual reading-order inspection",
      "evidence": "The document declares lang=\"es\" and the Spanish left-to-right content reads and lays out correctly on all sampled pages.",
      "pathIds": [
        "home",
        "results",
        "detail",
        "help"
      ],
      "artifacts": [
        "evidence/platform-probe.json"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "medium",
      "method": "Rendered date and schedule inspection",
      "evidence": "Dates are rendered in natural Spanish, for example “17 de julio de 2026”, rather than an ambiguous numeric-only format.",
      "pathIds": [
        "home",
        "results",
        "detail"
      ],
      "artifacts": [
        "evidence/results-mobile.png"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Content and data-surface inspection",
      "evidence": "The site shows local Venezuelan daily draw schedules and dates, with no cross-time-zone events, user-entered times, or DST-sensitive coordination.",
      "reason": "The site shows local Venezuelan daily draw schedules and dates, with no cross-time-zone events, user-entered times, or DST-sensitive coordination."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "pass",
      "confidence": "medium",
      "method": "Visual review of public landing, results, detail, and help pages",
      "evidence": "No confirmshaming, forced consent, preselected purchase, disguised control, or forced-continuity flow appeared on the audited public pages.",
      "pathIds": [
        "home",
        "results",
        "detail",
        "help"
      ],
      "artifacts": [
        "evidence/home-mobile.png"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Form inventory and public-flow inspection",
      "evidence": "The audited public flow has only a date selector and no required multi-field form or validation-error flow to exercise.",
      "reason": "The audited public flow has only a date selector and no required multi-field form or validation-error flow to exercise."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Input inventory",
      "evidence": "The only public input sampled is a date/results selector; address, payment, sign-in, and sign-up autofill assistance is not applicable on these pages.",
      "reason": "The only public input sampled is a date/results selector; address, payment, sign-in, and sign-up autofill assistance is not applicable on these pages."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "medium",
      "method": "Public-page journey boundary judgement",
      "evidence": "No checkout, subscription, consent, or account-management flow exists on the audited public origin; login/register lead to a separate secure subdomain.",
      "reason": "No checkout, subscription, consent, or account-management flow exists on the audited public origin; login/register lead to a separate secure subdomain."
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Images primitive and HAR",
      "evidence": "Images are predominantly WebP, but 100 result images omit dimensions, 74 omit responsive sources, and 88 below-fold images load eagerly.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/images-results.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "HAR, trace, and Lighthouse coverage",
      "evidence": "The page eagerly fetches 173 images and ships largely unused Bootstrap, icon, and DataTables code despite a light main thread.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/results-summary.json"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "HAR and trackers primitives",
      "evidence": "Nine third-party requests transfer 213,552 bytes; Google Tag Manager alone transfers 179,180 bytes and multiple advertising/analytics origins run on load.",
      "pathIds": [
        "results"
      ],
      "artifacts": [
        "evidence/results-summary.json"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "WebMCP/markup inspection and contextual applicability judgement",
      "evidence": "This public results-content site exposes no transactional agent capability that needs WebMCP; raw content is already machine-readable, while robots policy explicitly limits major AI crawlers.",
      "reason": "This public results-content site exposes no transactional agent capability that needs WebMCP; raw content is already machine-readable, while robots policy explicitly limits major AI crawlers."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Feature and task inspection",
      "evidence": "No summarisation, generation, or language task on this simple results site warrants on-device inference.",
      "reason": "No summarisation, generation, or language task on this simple results site warrants on-device inference."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "medium",
      "method": "Baseline/post heap snapshots around ten menu open/close cycles",
      "evidence": "After ten menu cycles, heap self size rose from 12,337,567 to 12,648,725 bytes (2.5%) rather than showing unbounded growth; live DOM remained stable.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-post.heapsnapshot"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "pass",
      "confidence": "medium",
      "method": "Heap snapshots and DOM count",
      "evidence": "The sampled server-rendered page used about 12.3–12.6 MB heap self size with 978 live elements, proportionate to its long content page.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/heap-baseline.heapsnapshot"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "Instrumented repeated-interaction probe plus heap comparison",
      "evidence": "Ten menu cycles left the live DOM at 978 nodes, created no intervals, and added only three transitionend listeners total rather than accumulating per cycle.",
      "pathIds": [
        "home"
      ],
      "artifacts": [
        "evidence/memory-interaction-probe.json"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01",
        "F08"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F03",
        "F02"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04",
        "F03"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06",
        "F07"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F09",
        "F08",
        "F05"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F06",
        "F10"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F13",
        "F14"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F04",
        "F12"
      ]
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F07",
        "F14"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "All checks were judged not applicable to this site and its representative public tasks."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "pass"
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and category gateway; represents first impression, navigation and category choice.",
      "url": "https://loteriadehoy.com/",
      "conditions": [
        "desktop",
        "viewport: 360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "prefers-contrast: more",
        "keyboard focus",
        "ten menu cycles"
      ],
      "result": "issues"
    },
    {
      "id": "results",
      "description": "Animalitos results listing; represents the highest-density primary results task and date-selection flow.",
      "url": "https://loteriadehoy.com/animalitos/resultados/",
      "conditions": [
        "viewport: 360x800",
        "Lighthouse mobile",
        "no-JavaScript crawler comparison",
        "network and performance capture"
      ],
      "result": "issues"
    },
    {
      "id": "detail",
      "description": "Lotto Activo detail; represents informational lottery/detail templates.",
      "url": "https://loteriadehoy.com/animalito/lottoactivo/",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "pass"
    },
    {
      "id": "help",
      "description": "Help and FAQ; represents disclosure interaction and support content.",
      "url": "https://loteriadehoy.com/ayuda/",
      "conditions": [
        "viewport: 360x800",
        "FAQ activation"
      ],
      "result": "issues"
    },
    {
      "id": "not-found",
      "description": "Invalid URL; represents HTTP/network failure recovery.",
      "url": "https://loteriadehoy.com/definitely-not-found-audit",
      "conditions": [
        "viewport: 360x800"
      ],
      "result": "issues"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "pathId": "home",
      "url": "https://loteriadehoy.com/animalitos/resultados/",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "severity": "medium",
      "confidence": "high",
      "summary": "No system-driven dark theme",
      "evidence": "Under prefers-color-scheme: dark the body remains white, color-scheme is normal, and the screenshot is identical to light mode.",
      "suggestedFix": "Declare color-scheme: light dark and define tested dark surface/text tokens with prefers-color-scheme or light-dark().",
      "effort": "small",
      "artifacts": [
        "evidence/home-preferences.png",
        "evidence/preferences-probe.json"
      ]
    },
    {
      "id": "F02",
      "pathId": "results",
      "url": "https://loteriadehoy.com/animalitos/resultados/",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "cross-document-transitions",
      "severity": "low",
      "confidence": "high",
      "summary": "Navigation changes are abrupt",
      "evidence": "The site has multiple document routes but the CSS probe found no View Transition styling or names.",
      "suggestedFix": "Add @view-transition { navigation: auto } for same-origin MPA navigation, then name stable shared elements and respect reduced motion.",
      "effort": "small",
      "artifacts": [
        "evidence/platform-probe.json"
      ]
    },
    {
      "id": "F03",
      "pathId": "results",
      "url": "https://loteriadehoy.com/animalitos/resultados/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "reduced-chrome",
      "guidanceId": "scrollability-affordance-hints",
      "severity": "medium",
      "confidence": "high",
      "summary": "The long results template is visually noisy and hard to orient within",
      "evidence": "The mobile results page is 22,963 CSS px tall and surrounds results with ads, a fixed logo rail, repeated social links, and no progress/current-section cue.",
      "suggestedFix": "Remove non-actionable repeated chrome, lazy-render result sections, and add a lightweight section/progress affordance for the long page.",
      "effort": "medium",
      "artifacts": [
        "evidence/results-mobile.png",
        "evidence/results-layout.json"
      ]
    },
    {
      "id": "F04",
      "pathId": "results",
      "url": "https://loteriadehoy.com/animalitos/resultados/",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "interactive-content-reveal",
      "severity": "medium",
      "confidence": "high",
      "summary": "FAQ disclosure state is not semantic or reliable",
      "evidence": "No details elements exist, and after opening one FAQ all sampled question buttons expose aria-expanded=true.",
      "suggestedFix": "Use details/summary for each FAQ, or correctly pair each button with one controlled region and update aria-expanded only for that item.",
      "effort": "small",
      "artifacts": [
        "evidence/help-interaction.json",
        "evidence/help-mobile.png"
      ]
    },
    {
      "id": "F05",
      "pathId": "results",
      "url": "https://loteriadehoy.com/animalitos/resultados/",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Keyboard and touch affordances are weak",
      "evidence": "Focus probing found outline:none on many links, result controls are 38 px high, and the page contains hundreds of unnamed hash links in the tab order.",
      "suggestedFix": "Provide a high-contrast :focus-visible ring, make primary targets at least 44 CSS px where practical, and remove or name non-functional icon links.",
      "effort": "medium",
      "artifacts": [
        "evidence/platform-probe.json",
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F06",
      "pathId": "results",
      "url": "https://loteriadehoy.com/animalitos/resultados/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "visual-stability",
      "guidanceId": "optimize-image-priority",
      "severity": "high",
      "confidence": "high",
      "summary": "Image sizing causes poor visual stability",
      "evidence": "Lighthouse measured CLS 0.265; 100/100 result images and 33/33 home images omit width and height.",
      "suggestedFix": "Emit intrinsic width/height or aspect-ratio for every image and reserve ad/result media space before loading.",
      "effort": "medium",
      "artifacts": [
        "evidence/lighthouse-summary.json",
        "evidence/images-results.json"
      ]
    },
    {
      "id": "F07",
      "pathId": "results",
      "url": "https://loteriadehoy.com/animalitos/resultados/",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "defer-rendering-heavy-content",
      "severity": "high",
      "confidence": "high",
      "summary": "The results page eagerly ships excessive assets and unused code",
      "evidence": "HAR records 205 requests and 1.52 MB transferred, including 173 images; 88 below-fold images are eager. Lighthouse estimates 85 KiB unused JS and 37 KiB unused CSS.",
      "suggestedFix": "Lazy-load below-fold images, add responsive sources, render result groups on demand/content-visibility, and remove page-inapplicable DataTables/icon/Bootstrap code.",
      "effort": "large",
      "artifacts": [
        "evidence/results.har",
        "evidence/results-summary.json",
        "evidence/lighthouse-summary.json",
        "evidence/images-results.json"
      ]
    },
    {
      "id": "F08",
      "pathId": "results",
      "url": "https://loteriadehoy.com/animalitos/resultados/",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Core text and buttons fail WCAG contrast",
      "evidence": "Lighthouse measured 2.95:1 for teal primary buttons, 2.47:1 for Register, and 2.8:1 for the teal H1.",
      "suggestedFix": "Darken teal/orange tokens or switch foreground colors so normal text reaches 4.5:1 and large text/UI reaches its required ratio in every state.",
      "effort": "small",
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F09",
      "pathId": "results",
      "url": "https://loteriadehoy.com/animalitos/resultados/",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "accessibility",
      "severity": "high",
      "confidence": "high",
      "summary": "Result imagery and controls lack accessible names and structure",
      "evidence": "All 100 result images lack alt, 310 links have empty text, the date input lacks a label, and heading order skips levels.",
      "suggestedFix": "Give meaningful result images concise alt text, decorative images alt=\"\", label the date field, remove empty links, and restore a sequential heading hierarchy.",
      "effort": "large",
      "artifacts": [
        "evidence/images-results.json",
        "evidence/lighthouse-summary.json",
        "evidence/results-metadata.json"
      ]
    },
    {
      "id": "F10",
      "pathId": "results",
      "url": "https://loteriadehoy.com/animalitos/resultados/",
      "principleId": "follow-best-practices",
      "principleCheckId": "browser-platform-hygiene",
      "guidanceId": "html",
      "severity": "medium",
      "confidence": "high",
      "summary": "Caching policy disables back/forward cache",
      "evidence": "Lighthouse reports three BFCache blockers caused by cache-control:no-store on the document and fetched resources.",
      "suggestedFix": "Use private/no-cache with validators where fresh data is required instead of blanket no-store, and reserve no-store for genuinely sensitive responses.",
      "effort": "small",
      "artifacts": [
        "evidence/lighthouse-summary.json"
      ]
    },
    {
      "id": "F11",
      "pathId": "results",
      "url": "https://loteriadehoy.com/animalitos/resultados/",
      "principleId": "be-discoverable",
      "principleCheckId": "canonical-and-indexing-signals",
      "guidanceId": "html",
      "severity": "high",
      "confidence": "high",
      "summary": "Search and sharing metadata is malformed and keyword-stuffed",
      "evidence": "The result title is 1,073 characters, canonical and JSON-LD are absent, sitemap.xml is 404, and og:url/og:image use malformed https:/ URLs.",
      "suggestedFix": "Generate concise unique titles/descriptions, valid canonical and Open Graph URLs, a sitemap, and accurate Lottery/Organization/Breadcrumb structured data where supported.",
      "effort": "medium",
      "artifacts": [
        "evidence/results-metadata.json",
        "evidence/recon.json"
      ]
    },
    {
      "id": "F12",
      "pathId": "not-found",
      "url": "https://loteriadehoy.com/definitely-not-found-audit",
      "principleId": "be-resilient",
      "principleCheckId": "network-and-http-failure-states",
      "guidanceId": "persistent-toast-notifications",
      "severity": "medium",
      "confidence": "high",
      "summary": "HTTP failures provide no recovery path",
      "evidence": "A missing URL renders only Apache’s “Not Found” text with no site shell, home link, search, or useful next action.",
      "suggestedFix": "Serve a branded 404 in the normal shell with a clear explanation and links to current results, home, and help.",
      "effort": "small",
      "artifacts": [
        "evidence/not-found-mobile.png",
        "evidence/not-found.json"
      ]
    },
    {
      "id": "F13",
      "pathId": "results",
      "url": "https://loteriadehoy.com/animalitos/resultados/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "security",
      "severity": "high",
      "confidence": "high",
      "summary": "Baseline browser defenses and session-cookie flags are missing",
      "evidence": "CSP, HSTS, nosniff, Referrer-Policy and Permissions-Policy are absent; PHPSESSID lacks Secure, HttpOnly and restrictive SameSite.",
      "suggestedFix": "Set Secure, HttpOnly and SameSite=Lax/Strict on PHPSESSID; deploy HSTS, nosniff, a restrictive CSP, Referrer-Policy and Permissions-Policy after testing.",
      "effort": "medium",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ]
    },
    {
      "id": "F14",
      "pathId": "results",
      "url": "https://loteriadehoy.com/animalitos/resultados/",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "privacy",
      "severity": "medium",
      "confidence": "high",
      "summary": "Tracking runs broadly on load with long-lived identifiers",
      "evidence": "Seven third-party origins include Analytics and DoubleClick; analytics cookies persist 400 days and third parties transfer 213,552 bytes.",
      "suggestedFix": "Document consent/legal basis, defer non-essential analytics/ads until appropriate consent, shorten retention, and remove tags that do not provide measured value.",
      "effort": "medium",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/cookies.json",
        "evidence/results-summary.json"
      ]
    }
  ],
  "taskList": [
    {
      "id": "T1",
      "title": "Repair accessible names, labels, heading order, focus, targets, and color contrast",
      "priority": 1,
      "findingIds": [
        "F05",
        "F08",
        "F09"
      ],
      "guidanceId": "accessibility",
      "status": "open"
    },
    {
      "id": "T2",
      "title": "Reserve image space and defer/trim the long results payload",
      "priority": 2,
      "findingIds": [
        "F06",
        "F07"
      ],
      "guidanceId": "optimize-image-priority",
      "status": "open"
    },
    {
      "id": "T3",
      "title": "Harden headers and session cookies",
      "priority": 3,
      "findingIds": [
        "F13"
      ],
      "guidanceId": "security",
      "status": "open"
    },
    {
      "id": "T4",
      "title": "Replace keyword stuffing with valid canonical, sitemap, Open Graph, and structured metadata",
      "priority": 4,
      "findingIds": [
        "F11"
      ],
      "guidanceId": "html",
      "status": "open"
    },
    {
      "id": "T5",
      "title": "Reduce and consent-gate advertising and analytics tracking",
      "priority": 5,
      "findingIds": [
        "F14"
      ],
      "guidanceId": "privacy",
      "status": "open"
    },
    {
      "id": "T6",
      "title": "Simplify and orient the long results page",
      "priority": 6,
      "findingIds": [
        "F03"
      ],
      "guidanceId": "scrollability-affordance-hints",
      "status": "open"
    },
    {
      "id": "T7",
      "title": "Make FAQ disclosure semantic and state-correct",
      "priority": 7,
      "findingIds": [
        "F04"
      ],
      "guidanceId": "interactive-content-reveal",
      "status": "open"
    },
    {
      "id": "T8",
      "title": "Add a useful branded 404 recovery page",
      "priority": 8,
      "findingIds": [
        "F12"
      ],
      "guidanceId": "persistent-toast-notifications",
      "status": "open"
    },
    {
      "id": "T9",
      "title": "Add system-driven dark colors",
      "priority": 9,
      "findingIds": [
        "F01"
      ],
      "guidanceId": "dark-mode",
      "status": "open"
    },
    {
      "id": "T10",
      "title": "Enable cross-document view transitions",
      "priority": 10,
      "findingIds": [
        "F02"
      ],
      "guidanceId": "cross-document-transitions",
      "status": "open"
    },
    {
      "id": "T11",
      "title": "Restore BFCache eligibility where responses are not sensitive",
      "priority": 11,
      "findingIds": [
        "F10"
      ],
      "guidanceId": "html",
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 5,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-17T21-48-52-337Z"
}
