{
  "url": "https://www.protothema.gr",
  "auditedAt": "2026-07-21T19:45:28.273Z",
  "mode": "report",
  "status": "completed",
  "statusDetail": "Atomic coverage complete across 58 checks and five representative paths. The fresh-load consent wall was evaluated as part of the real experience; content DOM/raw HTML remained inspectable.",
  "page": {
    "appType": "mpa",
    "framework": "server-rendered custom MPA",
    "notes": "Greek breaking-news publisher. Raw HTML preserves 93-96% of rendered content. Audited homepage, section, all-news listing, article, consent entry state, and 404 recovery. Not covered: login/subscription/checkout (not exposed), games and the separate English-domain templates (distinct products/templates), and destructive/account flows."
  },
  "evidenceUsed": [
    "screenshot",
    "dom",
    "evaluate-probe",
    "layout-metrics",
    "trace",
    "har",
    "discoverability",
    "headers",
    "cookies",
    "trackers",
    "secrets",
    "images",
    "heap-summary",
    "lighthouse",
    "curl-http"
  ],
  "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/all-news.png",
      "caption": "all news"
    },
    {
      "type": "discoverability",
      "path": "evidence/article-discoverability",
      "caption": "article discoverability"
    },
    {
      "type": "screenshot",
      "path": "evidence/article-discoverability-crawler.png",
      "caption": "article discoverability crawler"
    },
    {
      "type": "screenshot",
      "path": "evidence/article-discoverability-rendered.png",
      "caption": "article discoverability rendered"
    },
    {
      "type": "discoverability",
      "path": "evidence/article-discoverability.json",
      "caption": "article discoverability"
    },
    {
      "type": "layout",
      "path": "evidence/article-layout-mobile.json",
      "caption": "article layout mobile"
    },
    {
      "type": "screenshot",
      "path": "evidence/article-mobile.png",
      "caption": "article mobile",
      "findingIds": [
        "F07"
      ]
    },
    {
      "type": "other",
      "path": "evidence/article-quality-probe.json",
      "caption": "article quality probe"
    },
    {
      "type": "other",
      "path": "evidence/cookies.json",
      "caption": "cookies",
      "findingIds": [
        "F21",
        "F24"
      ]
    },
    {
      "type": "other",
      "path": "evidence/coverage-manifest.json",
      "caption": "coverage manifest"
    },
    {
      "type": "other",
      "path": "evidence/error-404-probe.json",
      "caption": "error 404 probe"
    },
    {
      "type": "other",
      "path": "evidence/guidance-list.json",
      "caption": "guidance list"
    },
    {
      "type": "other",
      "path": "evidence/guidance-retrieved.md",
      "caption": "guidance retrieved"
    },
    {
      "type": "other",
      "path": "evidence/guidance-searches.ndjson",
      "caption": "guidance searches"
    },
    {
      "type": "other",
      "path": "evidence/headers.json",
      "caption": "headers",
      "findingIds": [
        "F21",
        "F23"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-baseline.json",
      "caption": "heap baseline",
      "findingIds": [
        "F28"
      ]
    },
    {
      "type": "heap",
      "path": "evidence/heap-post-scroll.json",
      "caption": "heap post scroll"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-content-mobile.png",
      "caption": "home content mobile"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-content.png",
      "caption": "home content"
    },
    {
      "type": "other",
      "path": "evidence/home-controls.json",
      "caption": "home controls",
      "findingIds": [
        "F06",
        "F08"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-dark.png",
      "caption": "home dark",
      "findingIds": [
        "F01"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-desktop.png",
      "caption": "home desktop",
      "findingIds": [
        "F07",
        "F22"
      ]
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability",
      "caption": "home discoverability"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-crawler.png",
      "caption": "home discoverability crawler"
    },
    {
      "type": "screenshot",
      "path": "evidence/home-discoverability-rendered.png",
      "caption": "home discoverability rendered"
    },
    {
      "type": "discoverability",
      "path": "evidence/home-discoverability.json",
      "caption": "home discoverability"
    },
    {
      "type": "dom",
      "path": "evidence/home-dom.json",
      "caption": "home dom",
      "findingIds": [
        "F05",
        "F14"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-images.json",
      "caption": "home images",
      "findingIds": [
        "F16",
        "F20",
        "F25"
      ]
    },
    {
      "type": "layout",
      "path": "evidence/home-layout-mobile.json",
      "caption": "home layout mobile",
      "findingIds": [
        "F09",
        "F19"
      ]
    },
    {
      "type": "screenshot",
      "path": "evidence/home-mobile.png",
      "caption": "home mobile",
      "findingIds": [
        "F07",
        "F09",
        "F24"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-quality-probe.json",
      "caption": "home quality probe",
      "findingIds": [
        "F01",
        "F02",
        "F03",
        "F04",
        "F05",
        "F06",
        "F08",
        "F09",
        "F10",
        "F11",
        "F16",
        "F18",
        "F19",
        "F20"
      ]
    },
    {
      "type": "other",
      "path": "evidence/home-recon.json",
      "caption": "home recon",
      "findingIds": [
        "F18"
      ]
    },
    {
      "type": "har-summary",
      "path": "evidence/home-summary.json",
      "caption": "home summary",
      "findingIds": [
        "F14",
        "F15",
        "F22",
        "F24",
        "F25",
        "F26",
        "F27",
        "F28"
      ]
    },
    {
      "type": "trace-summary",
      "path": "evidence/home-trace-summary.json",
      "caption": "home trace summary",
      "findingIds": [
        "F12",
        "F13"
      ]
    },
    {
      "type": "trace",
      "path": "evidence/home-trace.json",
      "caption": "home trace",
      "findingIds": [
        "F12"
      ]
    },
    {
      "type": "har",
      "path": "evidence/home.har",
      "caption": "home",
      "findingIds": [
        "F14",
        "F22"
      ]
    },
    {
      "type": "lighthouse",
      "path": "evidence/lighthouse-home.json",
      "caption": "lighthouse home",
      "findingIds": [
        "F03",
        "F12",
        "F13",
        "F15",
        "F16",
        "F17",
        "F18",
        "F26"
      ]
    },
    {
      "type": "other",
      "path": "evidence/manifest.json",
      "caption": "manifest"
    },
    {
      "type": "other",
      "path": "evidence/preferences-probe.json",
      "caption": "preferences probe",
      "findingIds": [
        "F01",
        "F02"
      ]
    },
    {
      "type": "other",
      "path": "evidence/robots-sitemap.txt",
      "caption": "robots sitemap"
    },
    {
      "type": "other",
      "path": "evidence/secrets.json",
      "caption": "secrets"
    },
    {
      "type": "screenshot",
      "path": "evidence/section-mobile.png",
      "caption": "section mobile"
    },
    {
      "type": "other",
      "path": "evidence/trackers.json",
      "caption": "trackers",
      "findingIds": [
        "F22",
        "F24",
        "F27"
      ]
    }
  ],
  "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": "Emulated dark media screenshot plus computed-style/CSS probe.",
      "evidence": "Under emulated prefers-color-scheme: dark, body remained rgb(255,255,255) on rgb(0,0,0), color-scheme computed as normal, and the dark screenshot was byte-identical to light.",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/preferences-probe.json",
        "evidence/home-quality-probe.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F01"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-reduced-motion",
      "status": "issues",
      "confidence": "high",
      "method": "Emulated reduced-motion getAnimations() and stylesheet probe.",
      "evidence": "Under prefers-reduced-motion: reduce, eight animations remained, including three 30s infinite animations and one 6s infinite animation; CSS contained no prefers-reduced-motion rule.",
      "artifacts": [
        "evidence/preferences-probe.json",
        "evidence/home-quality-probe.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F02"
      ]
    },
    {
      "principleId": "respect-user-preferences",
      "checkId": "respects-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Stylesheet feature probe and Lighthouse contrast audit.",
      "evidence": "Stylesheet probe found no prefers-contrast or forced-colors handling, while Lighthouse found 3.68:1 low-contrast text.",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/lighthouse-home.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "view-transitions",
      "status": "issues",
      "confidence": "high",
      "method": "Fetched same-origin stylesheet/script inspection across the homepage.",
      "evidence": "Same-document news navigation and content state are present, but fetched CSS/JS contained no view-transition usage.",
      "artifacts": [
        "evidence/home-quality-probe.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "scroll-driven-animations",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Visual recon and fetched CSS inspection.",
      "evidence": "No parallax, scrollytelling, or entry/exit reveal that needed scroll-linked animation was observed on representative news templates.",
      "artifacts": [
        "evidence/home-discoverability-crawler.png",
        "evidence/home-quality-probe.json"
      ],
      "pathIds": [
        "home"
      ],
      "reason": "The representative pages did not expose a scroll-linked animation to implement."
    },
    {
      "principleId": "implement-natural-interactions",
      "checkId": "physical-gestures",
      "status": "pass",
      "confidence": "medium",
      "method": "Fetched CSS probe and mobile layout inspection.",
      "evidence": "CSS probe found scroll-snap support and no evidence that core article/list scrolling was replaced by a custom pointer-driven surface.",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-layout-mobile.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "scroll-state-aware-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "DOM/script and same-origin CSS inspection.",
      "evidence": "The header is wired to a JavaScript stickit plugin, while fetched CSS contained no scroll-state container query or declarative scroll progress treatment.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/home-quality-probe.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F05"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "anchored-positioning",
      "status": "issues",
      "confidence": "high",
      "method": "DOM ancestor/computed-position probe and fetched CSS inspection.",
      "evidence": "The site exposes menus and a consent overlay, but CSS contains no anchor-name or position-anchor support; the overlay is a manually layered fixed div.",
      "artifacts": [
        "evidence/home-controls.json",
        "evidence/home-quality-probe.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F06"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "checkId": "directs-attention",
      "status": "pass",
      "confidence": "medium",
      "method": "Rendered DOM/navigation and crawler-visible screenshot review.",
      "evidence": "Persistent labelled section navigation, article cards, headings, and a distinct current content hierarchy provide clear destinations and attention cues.",
      "artifacts": [
        "evidence/home-recon.json",
        "evidence/home-discoverability-crawler.png"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "no-intrusive-interruptions",
      "status": "issues",
      "confidence": "high",
      "method": "Desktop/mobile load screenshots.",
      "evidence": "Every fresh load is fully obscured by a long consent dialog describing 1,726 partners; desktop and 360px screenshots show no news content until a choice is made.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/article-mobile.png"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "semantic-dismissible-primitives",
      "status": "issues",
      "confidence": "high",
      "method": "Rendered DOM primitive count and dialog ancestor inspection.",
      "evidence": "The consent modal uses role=dialog on nested divs rather than <dialog>, and the page contains zero dialog, popover, or details primitives.",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-controls.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F08"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "checkId": "reduced-chrome",
      "status": "issues",
      "confidence": "high",
      "method": "DOM interaction count, mobile layout metrics, and screenshot review.",
      "evidence": "The homepage has 475 visible interactive elements and a 41,385px mobile document, while a full-viewport consent layer dominates the initial experience.",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-layout-mobile.json",
        "evidence/home-mobile.png"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F09"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "responsive-no-horizontal-scroll",
      "status": "pass",
      "confidence": "medium",
      "method": "Mobile layout primitive on homepage and article.",
      "evidence": "At 360x800 the homepage and article both reported scrollWidth=clientWidth=360, zero horizontal overflow, and a valid viewport meta tag.",
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/article-layout-mobile.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "component-level-responsiveness",
      "status": "issues",
      "confidence": "high",
      "method": "Same-origin stylesheet feature probe.",
      "evidence": "Fetched first-party stylesheets contain no @container rules despite cards/components being reused across the 41,385px responsive homepage.",
      "artifacts": [
        "evidence/home-quality-probe.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F10"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "checkId": "input-modality-aware",
      "status": "issues",
      "confidence": "high",
      "method": "Computed focus style and target-size probe.",
      "evidence": "Keyboard focus was visible, but 90 of 475 visible interactive elements measured below 24px in at least one dimension.",
      "artifacts": [
        "evidence/home-quality-probe.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F11"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-purpose-and-primary-action",
      "status": "pass",
      "confidence": "medium",
      "method": "Homepage title, nav, headings, and links inspection.",
      "evidence": "The title, section navigation, all-news link, and descriptive story links clearly identify a breaking-news publication and expose the next reading action.",
      "artifacts": [
        "evidence/home-recon.json",
        "evidence/home-discoverability-crawler.png"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "primary-flow-completion",
      "status": "issues",
      "confidence": "high",
      "method": "Homepage, section, listing, and article fresh-load screenshots.",
      "evidence": "The primary reading journey is needlessly interrupted before any content can be read by the full-viewport consent dialog on every tested route.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/section-mobile.png",
        "evidence/all-news.png",
        "evidence/article-mobile.png"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "checkId": "clear-system-state-and-recovery",
      "status": "pass",
      "confidence": "medium",
      "method": "HTTP status probe and rendered 404 DOM inspection.",
      "evidence": "A fabricated route returned a real HTTP 404 after redirect, used a descriptive 404 title, and retained navigation links back into the site.",
      "artifacts": [
        "evidence/error-404-probe.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "good-core-web-vitals",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse plus raw-CDP performance trace summary.",
      "evidence": "Lighthouse performance was 0.57 with LCP 15.5s, Speed Index 9.3s, TBT 290ms, and TTI 18.4s; the independent trace measured LCP 4.99s.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json",
        "evidence/home-trace.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F12"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "visual-stability",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse and mobile layout-shift observer.",
      "evidence": "CLS was 0.052 in Lighthouse and 0.041 on the 360px layout run, both within the good threshold.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-layout-mobile.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-main-thread",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse and trace long-task/TBT analysis.",
      "evidence": "Lighthouse measured 290ms TBT and 18.4s time to interactive; the trace also captured a 72ms long task.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F13"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "efficient-resource-delivery",
      "status": "issues",
      "confidence": "high",
      "method": "HAR summary confirmed against live DOM stylesheet/script attributes.",
      "evidence": "The load transferred 3.34MB in 126 requests; 54 scripts transferred 1.68MB, and parser-inserted high-priority stylesheets were present.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/home-dom.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F14"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "checkId": "trim-unused-and-duplicate-code",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse code-coverage diagnostics and HAR origin weights.",
      "evidence": "Lighthouse estimated 603KiB unused JavaScript and 49KiB unused CSS; repeated Google tag bundles dominate the waste list.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F15"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "names-roles-labels",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse accessibility audits and DOM semantics probe.",
      "evidence": "Lighthouse found unnamed social links, unnamed mainLink overlays, and nine images lacking alt; the independent probe counted 174 unnamed visible interactive elements.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-quality-probe.json",
        "evidence/home-images.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F16"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "sufficient-contrast",
      "status": "issues",
      "confidence": "high",
      "method": "Lighthouse color-contrast audit.",
      "evidence": "Lighthouse found repeated 3.68:1 text contrast failures for Games, tabs, and timestamps against white.",
      "artifacts": [
        "evidence/lighthouse-home.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F17"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "structure-and-focus",
      "status": "issues",
      "confidence": "high",
      "method": "Focus computed-style probe, heading DOM inspection, and Lighthouse heading-order audit.",
      "evidence": "Focus styling was visible, but the homepage H1 is empty and Lighthouse found skipped heading levels including H3/H4 starts.",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-recon.json",
        "evidence/lighthouse-home.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F18"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "legible-text",
      "status": "pass",
      "confidence": "medium",
      "method": "Article metadata/text inspection and mobile layout/reflow evidence.",
      "evidence": "Article titles and body copy use readable Greek text, descriptive line wrapping, and no horizontal clipping at 360px.",
      "artifacts": [
        "evidence/article-quality-probe.json",
        "evidence/article-layout-mobile.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-inclusive",
      "checkId": "zoom-reflow-targets-and-media",
      "status": "issues",
      "confidence": "high",
      "method": "Viewport, target-size, media, and mobile layout probe.",
      "evidence": "The viewport permits scaling and reflows without horizontal overflow, but 90 visible targets are below 24px and the detected video has no captions track.",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-layout-mobile.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F19"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "no-console-errors",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse errors-in-console audit.",
      "evidence": "Lighthouse logged no browser console errors.",
      "artifacts": [
        "evidence/lighthouse-home.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "sound-document-and-assets",
      "status": "issues",
      "confidence": "high",
      "method": "DOM document probe and images primitive.",
      "evidence": "The doctype and charset are valid, but 95 of 100 inspected images lack explicit dimensions and 93 lack srcset; six lacked alt.",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-images.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "checkId": "browser-platform-hygiene",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse best-practices and DOM/runtime inspection.",
      "evidence": "No console errors or permission prompts on load were observed; Lighthouse best-practices completed without a deprecated-API or paste-prevention finding in the inspected evidence.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-quality-probe.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "title-and-description",
      "status": "pass",
      "confidence": "medium",
      "method": "DOM metadata probes and discoverability primitive.",
      "evidence": "Homepage and article expose unique descriptive titles and meta descriptions in rendered and raw HTML.",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/article-quality-probe.json",
        "evidence/home-discoverability.json",
        "evidence/article-discoverability.json"
      ],
      "pathIds": [
        "home",
        "article"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "crawlable-and-mobile-friendly",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse SEO plus mobile layout and robots inspection.",
      "evidence": "Lighthouse passed crawlable anchors, robots.txt validity, crawlability, and viewport; the mobile layout has no overflow.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-layout-mobile.json",
        "evidence/robots-sitemap.txt"
      ],
      "pathIds": [
        "home",
        "article"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "canonical-and-indexing-signals",
      "status": "pass",
      "confidence": "medium",
      "method": "Metadata probes, discoverability HTTP results, and robots/sitemap fetch.",
      "evidence": "Homepage and article return 200, declare self-canonicals, are index/follow, and robots/sitemap endpoints are available.",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/article-quality-probe.json",
        "evidence/robots-sitemap.txt",
        "evidence/article-discoverability.json"
      ],
      "pathIds": [
        "home",
        "article"
      ]
    },
    {
      "principleId": "be-discoverable",
      "checkId": "structured-and-shareable-metadata",
      "status": "pass",
      "confidence": "medium",
      "method": "Article JSON-LD/Open Graph probe.",
      "evidence": "The article contains NewsArticle JSON-LD and matching Open Graph title, description, URL, author, image, and update time.",
      "artifacts": [
        "evidence/article-quality-probe.json"
      ],
      "pathIds": [
        "home",
        "article"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "secure-transport-and-headers",
      "status": "issues",
      "confidence": "high",
      "method": "Headers and cookies primitives.",
      "evidence": "HTTPS and HSTS are present, but CSP and X-Content-Type-Options are absent; four analytics cookies are not Secure and all eight observed cookies were flagged insecure by the cookie audit.",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F21"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "data-minimisation-and-third-parties",
      "status": "issues",
      "confidence": "high",
      "method": "Trackers primitive, HAR summary, and fresh-load consent screenshot.",
      "evidence": "The load contacted 22 third-party origins and seven known tracker domains; 74 third-party requests transferred 2.37MB before a consent choice.",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/home-desktop.png"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F22"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "in-context-permissions-and-modern-auth",
      "status": "pass",
      "confidence": "medium",
      "method": "Fresh-load runtime/visual inspection and representative-flow applicability review.",
      "evidence": "No notification/geolocation permission prompt fired on load; authentication is not part of the representative public-news journey.",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-quality-probe.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-private-and-secure",
      "checkId": "defensive-browser-policies",
      "status": "issues",
      "confidence": "high",
      "method": "Security headers primitive.",
      "evidence": "CSP/frame-ancestors or X-Frame-Options, Referrer-Policy, Permissions-Policy, and nosniff are all absent; only HSTS is present.",
      "artifacts": [
        "evidence/headers.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F23"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "progressive-enhancement",
      "status": "pass",
      "confidence": "medium",
      "method": "Discoverability raw-versus-rendered comparison.",
      "evidence": "Raw HTML preserved 96% of homepage and 93% of article rendered content; both titles/descriptions survive without JavaScript and the article H1 does too.",
      "artifacts": [
        "evidence/home-discoverability.json",
        "evidence/article-discoverability.json",
        "evidence/home-discoverability-crawler.png",
        "evidence/article-discoverability-crawler.png"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "resilient-runtime-behaviour",
      "status": "pass",
      "confidence": "medium",
      "method": "Mobile layout and rendered control inspection.",
      "evidence": "The responsive pages retained navigation and content structure at 360px with no overflow; the consent overlay fit the viewport and exposed explicit choices.",
      "artifacts": [
        "evidence/home-layout-mobile.json",
        "evidence/article-layout-mobile.json",
        "evidence/home-mobile.png"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-resilient",
      "checkId": "offline-and-installable",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Manifest and service-worker capability probe.",
      "evidence": "A valid standalone manifest exists, but this live breaking-news publication is intrinsically network-current; an offline app experience was not treated as required.",
      "artifacts": [
        "evidence/manifest.json",
        "evidence/home-quality-probe.json"
      ],
      "pathIds": [
        "home"
      ],
      "reason": "Offline content freshness/installability is contextual for this network-current news publication."
    },
    {
      "principleId": "be-resilient",
      "checkId": "network-and-http-failure-states",
      "status": "pass",
      "confidence": "medium",
      "method": "HTTP and rendered 404 inspection.",
      "evidence": "An unknown route resolves to an HTTP 404 page with a descriptive title and retained navigation rather than a blank shell.",
      "artifacts": [
        "evidence/error-404-probe.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "lang-dir-and-logical-properties",
      "status": "pass",
      "confidence": "medium",
      "method": "DOM language/navigation and fetched stylesheet probe.",
      "evidence": "The Greek site declares html lang=el, uses logical CSS properties, and provides a visible English-site switch; Greek is left-to-right so an explicit dir is not required.",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-controls.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "locale-aware-data",
      "status": "pass",
      "confidence": "medium",
      "method": "Rendered DOM/time element and language navigation inspection.",
      "evidence": "Rendered dates use Greek relative-time strings and machine-readable ISO datetime values; a dedicated English edition is linked.",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/home-controls.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-internationalised",
      "checkId": "time-zone-correctness",
      "status": "pass",
      "confidence": "medium",
      "method": "Article Open Graph and DOM datetime inspection.",
      "evidence": "Article metadata and visible time elements carry unambiguous ISO offsets such as +03:00 and updated_time values.",
      "artifacts": [
        "evidence/article-quality-probe.json",
        "evidence/home-dom.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "no-dark-patterns",
      "status": "issues",
      "confidence": "high",
      "method": "Fresh-load screenshot plus trackers, cookies, and HAR evidence.",
      "evidence": "The first screen is a dense consent wall naming 1,726 partners; tracking requests and analytics cookies are already present before the user chooses, undermining an informed, honest default.",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/trackers.json",
        "evidence/cookies.json",
        "evidence/home-summary.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "humane-error-handling",
      "status": "pass",
      "confidence": "medium",
      "method": "Lighthouse label audit and 404 inspection.",
      "evidence": "The public content flow has no required form; Lighthouse found form controls labelled and the 404 state uses a clear title with recovery navigation.",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/error-404-probe.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "trustworthy-input-assistance",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Representative route and form-purpose inspection.",
      "evidence": "No address, payment, sign-in, or sign-up data-entry flow is present in the representative public-news paths.",
      "artifacts": [
        "evidence/home-quality-probe.json"
      ],
      "pathIds": [
        "home"
      ],
      "reason": "Only site search/utility inputs were present; the personal-data autofill scenarios in this check do not apply."
    },
    {
      "principleId": "be-trustworthy",
      "checkId": "safe-commercial-and-account-flows",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Representative route and navigation inspection.",
      "evidence": "No checkout, subscription purchase, authentication, or account-management flow was exposed on the representative public-news paths.",
      "artifacts": [
        "evidence/home-recon.json"
      ],
      "pathIds": [
        "home"
      ],
      "reason": "No commercial or account flow was present in the audited scope."
    },
    {
      "principleId": "be-sustainable",
      "checkId": "optimised-assets",
      "status": "issues",
      "confidence": "high",
      "method": "Images primitive and HAR resource totals.",
      "evidence": "Of 100 inspected images, 93 lack srcset, 95 lack dimensions, 17 use legacy formats, and seven are oversized; images transferred 1.11MB.",
      "artifacts": [
        "evidence/home-images.json",
        "evidence/home-summary.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F25"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "no-wasteful-work",
      "status": "issues",
      "confidence": "high",
      "method": "HAR and Lighthouse unused-code diagnostics.",
      "evidence": "The initial load makes 126 requests and ships 1.68MB of scripts; Lighthouse estimates 603KiB unused JavaScript.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/lighthouse-home.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F26"
      ]
    },
    {
      "principleId": "be-sustainable",
      "checkId": "third-party-and-media-budget",
      "status": "issues",
      "confidence": "high",
      "method": "HAR third-party byte accounting and trackers primitive.",
      "evidence": "Third parties account for 74 requests and 2.37MB, including 1.12MB from Google Tag Manager alone, disproportionate for the initial text-news view.",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F27"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "structured-agent-capabilities",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Raw/rendered discoverability and source feature probe.",
      "evidence": "The site publishes crawler-readable HTML and JSON-LD but declares no agent-facing transactional capability; WebMCP was not treated as required for this public news surface.",
      "artifacts": [
        "evidence/article-discoverability.json",
        "evidence/article-quality-probe.json",
        "evidence/home-quality-probe.json"
      ],
      "pathIds": [
        "home"
      ],
      "reason": "No agent-facing action surface or declared WebMCP intent was identified; this emerging check is contextual."
    },
    {
      "principleId": "be-agent-ready",
      "checkId": "on-device-inference",
      "status": "not-applicable",
      "confidence": "high",
      "method": "Fetched script feature probe and task applicability review.",
      "evidence": "No user task in the representative paths requires on-device inference, and no built-in language-model API use was found.",
      "artifacts": [
        "evidence/home-quality-probe.json"
      ],
      "pathIds": [
        "home"
      ],
      "reason": "Built-in on-device inference is an optional emerging enhancement, not required for basic news reading."
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-leak-under-repeated-interaction",
      "status": "pass",
      "confidence": "medium",
      "method": "Baseline and post-interaction heap summaries using repeated real scrolling.",
      "evidence": "After ten full-document scroll cycles, the post heap was smaller than baseline: 959,239 vs 997,826 nodes and 52.18MB vs 53.60MB self size.",
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post-scroll.json"
      ],
      "pathIds": [
        "home"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "bounded-footprint",
      "status": "issues",
      "confidence": "high",
      "method": "Heap summary totals judged against page purpose and HAR/script weight.",
      "evidence": "A fresh homepage heap contains 997,826 nodes and 53.60MB self size, a large footprint for a document whose core task is reading news.",
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/home-summary.json"
      ],
      "pathIds": [
        "home"
      ],
      "findingIds": [
        "F28"
      ]
    },
    {
      "principleId": "be-memory-efficient",
      "checkId": "no-detached-dom-or-unbounded-listeners",
      "status": "pass",
      "confidence": "medium",
      "method": "Before/after heap constructor and total comparison.",
      "evidence": "No Detached* constructor appeared among the top heap constructors, and node count fell by 38,587 after repeated scrolling rather than growing.",
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/heap-post-scroll.json"
      ],
      "pathIds": [
        "home"
      ]
    }
  ],
  "principleOutcomes": [
    {
      "principleId": "respect-user-preferences",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F01",
        "F02",
        "F03"
      ]
    },
    {
      "principleId": "implement-natural-interactions",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F04"
      ]
    },
    {
      "principleId": "provide-guided-navigation",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F05",
        "F06"
      ]
    },
    {
      "principleId": "maximize-content-reduce-noise",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F07",
        "F08",
        "F09"
      ]
    },
    {
      "principleId": "adapt-to-the-form-factor",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F10",
        "F11"
      ]
    },
    {
      "principleId": "support-core-task-success",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F07"
      ]
    },
    {
      "principleId": "be-fast-and-stable",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F12",
        "F13",
        "F14",
        "F15"
      ]
    },
    {
      "principleId": "be-inclusive",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F16",
        "F17",
        "F18",
        "F19"
      ]
    },
    {
      "principleId": "follow-best-practices",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F20"
      ]
    },
    {
      "principleId": "be-discoverable",
      "expectation": "default",
      "status": "pass"
    },
    {
      "principleId": "be-private-and-secure",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F21",
        "F22",
        "F23"
      ]
    },
    {
      "principleId": "be-resilient",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-internationalised",
      "expectation": "contextual",
      "status": "pass"
    },
    {
      "principleId": "be-trustworthy",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F24"
      ]
    },
    {
      "principleId": "be-sustainable",
      "expectation": "contextual",
      "status": "issues",
      "findingIds": [
        "F25",
        "F26",
        "F27"
      ]
    },
    {
      "principleId": "be-agent-ready",
      "expectation": "contextual",
      "status": "not-applicable",
      "reason": "No agent-facing action surface or declared WebMCP intent was identified; this emerging check is contextual. Built-in on-device inference is an optional emerging enhancement, not required for basic news reading."
    },
    {
      "principleId": "be-memory-efficient",
      "expectation": "default",
      "status": "issues",
      "findingIds": [
        "F28"
      ]
    }
  ],
  "paths": [
    {
      "id": "home",
      "description": "Homepage and consent entry state: primary news discovery, global navigation, preferences, performance, privacy, accessibility, and memory.",
      "url": "https://www.protothema.gr",
      "conditions": [
        "desktop fresh load",
        "360x800",
        "prefers-color-scheme: dark",
        "prefers-reduced-motion: reduce",
        "no JavaScript/raw HTML"
      ],
      "result": "issues"
    },
    {
      "id": "section",
      "description": "Greece section listing: representative category/index template and narrow-screen entry state.",
      "url": "https://www.protothema.gr/greece/",
      "conditions": [
        "360x800 fresh load"
      ],
      "result": "issues"
    },
    {
      "id": "all-news",
      "description": "All News listing: high-density chronological listing and navigation archetype.",
      "url": "https://www.protothema.gr/oles-oi-eidiseis/",
      "conditions": [
        "desktop fresh load"
      ],
      "result": "issues"
    },
    {
      "id": "article",
      "description": "News article: representative content/detail template, metadata, reading flow, narrow layout, and no-JS discoverability.",
      "url": "https://www.protothema.gr/greece/article/1854277/domino-oi-kathusteriseis-sto-el-venizelos-horis-telos-i-talaiporia-ton-taxidioton/",
      "conditions": [
        "360x800",
        "no JavaScript/raw HTML"
      ],
      "result": "issues"
    },
    {
      "id": "error-404",
      "description": "Unknown URL: HTTP and navigation recovery state.",
      "url": "https://www.protothema.gr/not-a-real-page-web-uplift-404/",
      "conditions": [
        "desktop fresh load"
      ],
      "result": "pass"
    }
  ],
  "findings": [
    {
      "id": "F01",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-color-scheme",
      "guidanceId": "dark-mode",
      "confidence": "high",
      "summary": "The site ignores the user’s dark-color preference.",
      "evidence": "Dark emulation stayed white with color-scheme: normal.",
      "suggestedFix": "Declare color-scheme and map surfaces/text through light-dark() or a prefers-color-scheme layer.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-dark.png",
        "evidence/preferences-probe.json",
        "evidence/home-quality-probe.json"
      ]
    },
    {
      "id": "F02",
      "severity": "high",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-reduced-motion",
      "guidanceId": "accessibility",
      "confidence": "high",
      "summary": "Long-running motion continues under reduced-motion.",
      "evidence": "Eight animations remained, including infinite 30s and 6s animations.",
      "suggestedFix": "Add a prefers-reduced-motion: reduce layer that removes non-essential animation and auto-advance.",
      "effort": "small",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/preferences-probe.json",
        "evidence/home-quality-probe.json"
      ]
    },
    {
      "id": "F03",
      "severity": "medium",
      "principleId": "respect-user-preferences",
      "principleCheckId": "respects-contrast",
      "guidanceId": "adapt-scrollbar-to-contrast-preferences",
      "confidence": "high",
      "summary": "High-contrast preferences are unsupported.",
      "evidence": "No forced-colors/prefers-contrast CSS; ordinary mode already has 3.68:1 text.",
      "suggestedFix": "Add forced-colors and prefers-contrast styles, preserving system colors and visible boundaries.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/lighthouse-home.json"
      ]
    },
    {
      "id": "F04",
      "severity": "low",
      "principleId": "implement-natural-interactions",
      "principleCheckId": "view-transitions",
      "guidanceId": "cross-document-transitions",
      "confidence": "high",
      "summary": "Content navigation does not use View Transitions.",
      "evidence": "No view-transition usage was found in first-party CSS/JS.",
      "suggestedFix": "Progressively enhance same-origin article and section navigation with cross-document View Transitions.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-quality-probe.json"
      ]
    },
    {
      "id": "F05",
      "severity": "low",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "scroll-state-aware-chrome",
      "guidanceId": "shrinking-header-on-scroll",
      "confidence": "high",
      "summary": "Sticky navigation is driven by a JavaScript plugin rather than scroll-state-aware CSS.",
      "evidence": "DOM uses data-plugin-stickit; no scroll-state query was found.",
      "suggestedFix": "Replace eligible sticky-header state toggling with scroll-state container queries and a fallback.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-dom.json",
        "evidence/home-quality-probe.json"
      ]
    },
    {
      "id": "F06",
      "severity": "low",
      "principleId": "provide-guided-navigation",
      "principleCheckId": "anchored-positioning",
      "guidanceId": "position-aware-tooltips",
      "confidence": "high",
      "summary": "Menus/overlays do not use anchor positioning.",
      "evidence": "No anchor-name/position-anchor CSS was found; consent is a fixed high-z div.",
      "suggestedFix": "Use popover plus CSS anchor positioning/position-try for anchored menus where applicable.",
      "effort": "medium",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-controls.json",
        "evidence/home-quality-probe.json"
      ]
    },
    {
      "id": "F07",
      "severity": "high",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "no-intrusive-interruptions",
      "guidanceId": "light-dismiss-a-dialog",
      "confidence": "high",
      "summary": "A full-screen consent wall blocks every primary content path.",
      "evidence": "Fresh desktop/mobile/article screens show only the long consent copy and controls.",
      "suggestedFix": "Use a concise, non-blocking consent surface with equal choices; defer non-essential partners until consent.",
      "effort": "large",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-desktop.png",
        "evidence/home-mobile.png",
        "evidence/article-mobile.png"
      ]
    },
    {
      "id": "F08",
      "severity": "medium",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "semantic-dismissible-primitives",
      "guidanceId": "Overlay UI is built from nested divs rather than native top-layer primitives.",
      "confidence": "high",
      "summary": "role=dialog exists, but there are zero <dialog>, popover, or details elements.",
      "evidence": "Use <dialog> for the modal flow and popover/details for transient/disclosure UI with platform dismissal.",
      "suggestedFix": "medium",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-controls.json"
      ]
    },
    {
      "id": "F09",
      "severity": "medium",
      "principleId": "maximize-content-reduce-noise",
      "principleCheckId": "reduced-chrome",
      "guidanceId": "The homepage is exceptionally dense before users reach a story.",
      "confidence": "high",
      "summary": "475 visible controls and a 41,385px mobile document accompany the blocking consent layer.",
      "evidence": "Reduce duplicated modules/chrome and prioritise a smaller set of top stories and clear section paths.",
      "suggestedFix": "large",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-layout-mobile.json",
        "evidence/home-mobile.png"
      ]
    },
    {
      "id": "F10",
      "severity": "low",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "component-level-responsiveness",
      "guidanceId": "Reusable cards rely on page-level responsiveness only.",
      "confidence": "high",
      "summary": "No @container rule was found in first-party styles.",
      "evidence": "Give reusable card/list modules containment and adapt their internals with container queries.",
      "suggestedFix": "medium",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-quality-probe.json"
      ]
    },
    {
      "id": "F11",
      "severity": "medium",
      "principleId": "adapt-to-the-form-factor",
      "principleCheckId": "input-modality-aware",
      "guidanceId": "Many interactive targets are too small.",
      "confidence": "high",
      "summary": "90 visible controls measured below 24px in width or height.",
      "evidence": "Increase hit areas toward WCAG 2.2 target-size guidance while retaining visible focus.",
      "suggestedFix": "medium",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-quality-probe.json"
      ]
    },
    {
      "id": "F12",
      "severity": "critical",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "good-core-web-vitals",
      "guidanceId": "Largest Contentful Paint is extremely slow.",
      "confidence": "high",
      "summary": "Lighthouse LCP was 15.5s, performance 57, Speed Index 9.3s, and TTI 18.4s.",
      "evidence": "Prioritise the LCP image/content, cut early third-party work, and defer non-critical scripts/styles.",
      "suggestedFix": "large",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json",
        "evidence/home-trace.json"
      ]
    },
    {
      "id": "F13",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-main-thread",
      "guidanceId": "The page becomes interactive slowly.",
      "confidence": "high",
      "summary": "Lighthouse TBT was 290ms and TTI 18.4s; trace found a 72ms long task.",
      "evidence": "Break up long tasks and schedule/defer analytics, players, and below-fold modules by priority.",
      "suggestedFix": "large",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-trace-summary.json"
      ]
    },
    {
      "id": "F14",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "efficient-resource-delivery",
      "guidanceId": "The initial dependency graph is heavy.",
      "confidence": "high",
      "summary": "126 requests/3.34MB, including 54 scripts/1.68MB and parser-blocking styles.",
      "evidence": "Shorten critical chains, remove duplicate tags, defer third parties, and optimise LCP discovery.",
      "suggestedFix": "large",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/home-dom.json"
      ]
    },
    {
      "id": "F15",
      "severity": "high",
      "principleId": "be-fast-and-stable",
      "principleCheckId": "trim-unused-and-duplicate-code",
      "guidanceId": "Large unused JS/CSS payloads ship on first load.",
      "confidence": "high",
      "summary": "Lighthouse estimates 603KiB unused JS and 49KiB unused CSS.",
      "evidence": "Conditionally load players, CMP modules, and analytics destinations; split the site stylesheet by template.",
      "suggestedFix": "large",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-summary.json"
      ]
    },
    {
      "id": "F16",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "names-roles-labels",
      "guidanceId": "Many links and images lack accessible names.",
      "confidence": "high",
      "summary": "Lighthouse found unnamed social/mainLink anchors and missing-alt images; probe counted 174 unnamed controls.",
      "evidence": "Give icon/overlay links accessible names and meaningful images alt text, hiding decorative images correctly.",
      "suggestedFix": "medium",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/lighthouse-home.json",
        "evidence/home-quality-probe.json",
        "evidence/home-images.json"
      ]
    },
    {
      "id": "F17",
      "severity": "high",
      "principleId": "be-inclusive",
      "principleCheckId": "sufficient-contrast",
      "guidanceId": "Secondary text fails WCAG contrast.",
      "confidence": "high",
      "summary": "Lighthouse measured 3.68:1 for navigation, tabs, and timestamps.",
      "evidence": "Darken the muted text token to achieve at least 4.5:1 for normal text.",
      "suggestedFix": "small",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/lighthouse-home.json"
      ]
    },
    {
      "id": "F18",
      "severity": "medium",
      "principleId": "be-inclusive",
      "principleCheckId": "structure-and-focus",
      "guidanceId": "The homepage heading hierarchy is broken.",
      "confidence": "high",
      "summary": "The H1 is empty and Lighthouse found H3/H4 level skips.",
      "evidence": "Add one meaningful H1 and make section/card headings descend sequentially.",
      "suggestedFix": "medium",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-recon.json",
        "evidence/lighthouse-home.json"
      ]
    },
    {
      "id": "F19",
      "severity": "medium",
      "principleId": "be-inclusive",
      "principleCheckId": "zoom-reflow-targets-and-media",
      "guidanceId": "Small targets and uncaptionsed video reduce comparable access.",
      "confidence": "high",
      "summary": "90 targets are under 24px and the detected video has no captions track.",
      "evidence": "Enlarge hit areas and provide captions/transcripts for editorial video.",
      "suggestedFix": "medium",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-layout-mobile.json"
      ]
    },
    {
      "id": "F20",
      "severity": "medium",
      "principleId": "follow-best-practices",
      "principleCheckId": "sound-document-and-assets",
      "guidanceId": "Image markup lacks intrinsic and responsive sizing.",
      "confidence": "high",
      "summary": "95/100 images lack dimensions and 93/100 lack srcset.",
      "evidence": "Emit width/height or aspect-ratio and responsive srcset/sizes for every editorial image.",
      "suggestedFix": "large",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-quality-probe.json",
        "evidence/home-images.json"
      ]
    },
    {
      "id": "F21",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "secure-transport-and-headers",
      "guidanceId": "Security headers and cookie flags are incomplete.",
      "confidence": "high",
      "summary": "No CSP or nosniff; four analytics cookies are not Secure.",
      "evidence": "Deploy a measured CSP, nosniff, and Secure/Lax cookie defaults, then tighten via report-only telemetry.",
      "suggestedFix": "medium",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/headers.json",
        "evidence/cookies.json"
      ]
    },
    {
      "id": "F22",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "data-minimisation-and-third-parties",
      "guidanceId": "Tracking starts with a very large third-party footprint.",
      "confidence": "high",
      "summary": "22 third-party origins, seven known trackers, and 2.37MB third-party bytes were observed before choice.",
      "evidence": "Block non-essential tags until consent and consolidate to a minimal, privacy-preserving measurement plan.",
      "suggestedFix": "large",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/trackers.json",
        "evidence/home-summary.json",
        "evidence/home.har",
        "evidence/home-desktop.png"
      ]
    },
    {
      "id": "F23",
      "severity": "high",
      "principleId": "be-private-and-secure",
      "principleCheckId": "defensive-browser-policies",
      "guidanceId": "Most browser-enforced defensive policies are absent.",
      "confidence": "high",
      "summary": "No CSP/frame-ancestors, X-Frame-Options, Referrer-Policy, Permissions-Policy, or nosniff.",
      "evidence": "Add CSP frame-ancestors, nosniff, strict referrer policy, and a minimal Permissions-Policy.",
      "suggestedFix": "medium",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/headers.json"
      ]
    },
    {
      "id": "F24",
      "severity": "high",
      "principleId": "be-trustworthy",
      "principleCheckId": "no-dark-patterns",
      "guidanceId": "Consent defaults are not trustworthy.",
      "confidence": "high",
      "summary": "The wall names 1,726 partners while trackers/cookies activate before a user choice.",
      "evidence": "Adopt privacy-by-default: no optional tags before consent, concise purposes, and equivalent accept/reject controls.",
      "suggestedFix": "large",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-mobile.png",
        "evidence/trackers.json",
        "evidence/cookies.json",
        "evidence/home-summary.json"
      ]
    },
    {
      "id": "F25",
      "severity": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "optimised-assets",
      "guidanceId": "Editorial images are not consistently responsive or modern.",
      "confidence": "high",
      "summary": "93 images lack srcset, 17 are legacy format, and seven are oversized.",
      "evidence": "Generate AVIF/WebP variants and accurate srcset/sizes with intrinsic dimensions.",
      "suggestedFix": "large",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-images.json",
        "evidence/home-summary.json"
      ]
    },
    {
      "id": "F26",
      "severity": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "no-wasteful-work",
      "guidanceId": "The initial page performs substantial avoidable work.",
      "confidence": "high",
      "summary": "126 requests, 1.68MB scripts, and 603KiB estimated unused JS.",
      "evidence": "Load modules only near use, remove duplicate analytics, and pause/deprioritise background work.",
      "suggestedFix": "large",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/lighthouse-home.json"
      ]
    },
    {
      "id": "F27",
      "severity": "high",
      "principleId": "be-sustainable",
      "principleCheckId": "third-party-and-media-budget",
      "guidanceId": "Third-party cost dominates the first view.",
      "confidence": "high",
      "summary": "Third parties transfer 2.37MB; Google Tag Manager origins alone transfer 1.12MB.",
      "evidence": "Set a third-party byte/request budget and enforce delayed, consent-gated loading.",
      "suggestedFix": "large",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/home-summary.json",
        "evidence/trackers.json"
      ]
    },
    {
      "id": "F28",
      "severity": "medium",
      "principleId": "be-memory-efficient",
      "principleCheckId": "bounded-footprint",
      "guidanceId": "The fresh homepage has a large memory footprint.",
      "confidence": "high",
      "summary": "Heap summary reports 997,826 nodes and 53.60MB self size.",
      "evidence": "Reduce duplicated DOM/modules and only instantiate below-fold widgets when near the viewport.",
      "suggestedFix": "large",
      "pathId": "home",
      "url": "https://www.protothema.gr",
      "artifacts": [
        "evidence/heap-baseline.json",
        "evidence/home-summary.json"
      ]
    }
  ],
  "taskList": [
    {
      "id": "T01",
      "title": "Make privacy consent genuinely opt-in and gate all optional tags",
      "priority": 1,
      "guidanceId": "batch-analytics-events",
      "findingIds": [
        "F07",
        "F22",
        "F24"
      ],
      "status": "open"
    },
    {
      "id": "T02",
      "title": "Cut LCP and first-load JavaScript/third-party cost",
      "priority": 2,
      "guidanceId": "optimize-image-priority",
      "findingIds": [
        "F12",
        "F13",
        "F14",
        "F15",
        "F26",
        "F27"
      ],
      "status": "open"
    },
    {
      "id": "T03",
      "title": "Repair accessible names, heading structure, contrast, targets, and captions",
      "priority": 3,
      "guidanceId": "accessibility",
      "findingIds": [
        "F11",
        "F16",
        "F17",
        "F18",
        "F19"
      ],
      "status": "open"
    },
    {
      "id": "T04",
      "title": "Harden response headers and cookie flags",
      "priority": 4,
      "guidanceId": "security",
      "findingIds": [
        "F21",
        "F23"
      ],
      "status": "open"
    },
    {
      "id": "T05",
      "title": "Build a responsive image pipeline with dimensions and modern formats",
      "priority": 5,
      "guidanceId": "deliver-optimized-decorative-images",
      "findingIds": [
        "F20",
        "F25"
      ],
      "status": "open"
    },
    {
      "id": "T06",
      "title": "Add dark, reduced-motion, and high-contrast preference layers",
      "priority": 6,
      "guidanceId": "dark-mode",
      "findingIds": [
        "F01",
        "F02",
        "F03"
      ],
      "status": "open"
    },
    {
      "id": "T07",
      "title": "Reduce homepage DOM/chrome and instantiate below-fold modules lazily",
      "priority": 7,
      "guidanceId": "defer-rendering-heavy-content",
      "findingIds": [
        "F09",
        "F28"
      ],
      "status": "open"
    },
    {
      "id": "T08",
      "title": "Modernise overlays, sticky state, navigation transitions, and component responsiveness",
      "priority": 8,
      "guidanceId": "declarative-dialog-popover-control",
      "findingIds": [
        "F04",
        "F05",
        "F06",
        "F08",
        "F10"
      ],
      "status": "open"
    }
  ],
  "budget": {
    "pathCount": 5,
    "auditPasses": 1
  },
  "agent": "pi",
  "runId": "2026-07-21T19-34-42-914Z"
}
