:root {
  color-scheme: light;
  --color-ink: #142b3b;
  --color-heading: #102a3a;
  --color-muted: #526675;
  --color-paper: #ffffff;
  --color-canvas: #f3f7f8;
  --color-border: #dce6e9;
  --color-accent: #087e83;
  --color-accent-strong: #075e65;
  --color-accent-soft: #e7f4f2;
  --color-focus: #8a4b00;
  --color-focus-ring: #f2c078;
  --color-danger: #a32d2d;
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.5rem;
  --space-6: 2rem;
  --space-7: 3rem;
  --space-8: 4rem;
  --space-9: 5rem;
  --content-width: 70rem;
  --reading-width: 48rem;
  --page-gutter: 1.5rem;
  --radius-control: 0.25rem;
  --radius-card: 0.25rem;
  --radius-image: 0.5rem;
  --shadow-image: 0 12px 32px #19374614;
  --focus-outline: 3px solid var(--color-focus);
  --focus-offset: 3px;
  --breakpoint-narrow: 30rem;
  --breakpoint-tablet: 47.5rem;
  font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
  font-synthesis: none;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--color-ink);
  background: var(--color-paper);
  font-size: 1rem;
  line-height: 1.7;
}
a { color: var(--color-accent-strong); text-underline-offset: .18em; }
a:hover { color: #03484d; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: var(--focus-outline);
  outline-offset: var(--focus-offset);
}
.skip-link {
  position: absolute;
  z-index: 10;
  top: .75rem;
  left: .75rem;
  padding: .7rem 1rem;
  transform: translateY(-180%);
  color: var(--color-paper);
  background: var(--color-heading);
}
.skip-link:focus { transform: translateY(0); }
.site-header { border-bottom: 1px solid var(--color-border); background: var(--color-paper); }
.header-inner, .footer-inner {
  width: min(var(--content-width), calc(100% - 2 * var(--page-gutter)));
  margin-inline: auto;
}
.header-inner {
  display: flex;
  min-height: 82px;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4) var(--space-6);
}
.brand {
  display: inline-flex;
  align-items: center;
  gap: var(--space-3);
  color: var(--color-ink);
  text-decoration: none;
  font-weight: 700;
  line-height: 1.2;
}
.brand-mark {
  display: grid;
  width: 42px;
  aspect-ratio: 1;
  place-items: center;
  border-radius: var(--radius-control);
  color: var(--color-paper);
  background: var(--color-accent-strong);
  font-size: .88rem;
  letter-spacing: .04em;
}
.brand-name { display: grid; gap: var(--space-1); }
.brand-credentials { color: var(--color-muted); font-size: .75rem; font-weight: 500; letter-spacing: .07em; }
.brand-credentials-alt { font-size: .72rem; letter-spacing: .09em; }
.site-nav { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-2); }
.site-nav a, .site-footer nav a {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-control);
  color: var(--color-muted);
  font-size: .9rem;
  font-weight: 600;
  text-decoration: none;
}
.site-nav a:hover, .site-nav a[aria-current="page"] { color: var(--color-accent-strong); background: var(--color-accent-soft); }
.site-nav .nav-cv { margin-left: var(--space-1); border: 1px solid var(--color-border); color: var(--color-ink); }
.hero { overflow: hidden; background: var(--color-canvas); }
.hero-inner {
  display: grid;
  width: min(var(--content-width), calc(100% - 2 * var(--page-gutter)));
  min-height: 500px;
  margin-inline: auto;
  align-items: center;
  grid-template-columns: minmax(0, 1.25fr) minmax(220px, .75fr);
  gap: var(--space-7);
  padding-block: var(--space-9);
}
.eyebrow {
  margin: 0 0 .8rem;
  color: var(--color-accent-strong);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .13em;
  text-transform: uppercase;
}
h1, h2, h3 { color: var(--color-heading); line-height: 1.2; }
h4 { margin: 0; color: var(--color-heading); font-size: 1rem; line-height: 1.35; }
h1 { max-width: 760px; margin: 0; font-size: clamp(2.5rem, 6vw, 4rem); line-height: 1.12; letter-spacing: -.04em; }
h2 { margin: 0 0 var(--space-3); font-size: clamp(1.75rem, 3vw, 2.25rem); letter-spacing: -.025em; }
h3 { margin: 0 0 var(--space-2); font-size: 1.2rem; line-height: 1.3; }
.hero-copy { max-width: 680px; margin: var(--space-5) 0 0; color: var(--color-muted); font-size: 1.125rem; }
.hero-role { margin: var(--space-2) 0 0; color: var(--color-accent-strong); font-size: clamp(1.2rem, 2.6vw, 1.55rem); font-weight: 600; }
.hero-location { margin: var(--space-2) 0 0; color: var(--color-muted); font-size: .9rem; }
.hero-actions { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-5); }
.button {
  display: inline-flex;
  min-height: 46px;
  align-items: center;
  justify-content: center;
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--color-accent-strong);
  border-radius: var(--radius-control);
  color: var(--color-paper);
  background: var(--color-accent-strong);
  font-weight: 650;
  text-decoration: none;
}
.button:hover { color: var(--color-paper); background: #03484d; }
.button.secondary { color: var(--color-accent-strong); background: transparent; }
.button.secondary:hover { background: var(--color-accent-soft); }
.button-outline { color: var(--color-accent-strong); background: transparent; border-color: var(--color-accent-strong); }
.button-outline:hover { color: var(--color-paper); background: var(--color-accent-strong); }
.portrait-wrap { justify-self: center; width: min(100%, 310px); }
.portrait-link { display: block; }
.portrait {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 5;
  border: 8px solid var(--color-paper);
  border-radius: var(--radius-image);
  object-fit: cover;
  object-position: center 25%;
  box-shadow: var(--shadow-image);
}
.trust-strip { border-bottom: 1px solid var(--color-border); background: var(--color-paper); }
.trust-inner {
  display: grid;
  width: min(var(--content-width), calc(100% - 2 * var(--page-gutter)));
  margin-inline: auto;
  grid-template-columns: repeat(4, 1fr);
}
.trust-item { padding: var(--space-4); border-right: 1px solid var(--color-border); text-align: center; }
.trust-item:last-child { border-right: 0; }
.trust-item strong { display: block; color: var(--color-heading); font-size: .95rem; }
.trust-item span { color: var(--color-muted); font-size: .875rem; }
.section { padding: var(--space-8) 0; }
.section.alt { background: var(--color-canvas); }
.section-inner, .page-hero-inner, .content-wrap {
  width: min(var(--content-width), calc(100% - 2 * var(--page-gutter)));
  margin-inline: auto;
}
.about-content { max-width: var(--reading-width); }
.about-content > p:not(.eyebrow) { color: var(--color-muted); }
.about-content h3 { margin-top: var(--space-6); }
.about-links { display: grid; gap: var(--space-2); margin: 0; padding-left: 1.25rem; }
/* Professional Profiles: icon cards. Grid collapses to one column at 47.5rem;
   list styling is removed in favour of cards, so the markup keeps role="list".
   The bottom margin is the section break before the "Personal interests" heading. */
.profile-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); margin: var(--space-4) 0 var(--space-7); padding: 0; list-style: none; }
.profile-card { margin: 0; }
.profile-link {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--space-3);
  align-items: start;
  height: 100%;
  padding: var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: var(--color-paper);
  text-decoration: none;
}
.profile-link:hover, .profile-link:focus-visible { border-color: var(--color-accent); background: var(--color-accent-soft); }
.profile-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.9rem;
  height: 1.9rem;
  border-radius: .375rem;
  color: var(--profile-ink, var(--color-paper));
  background: var(--profile-color, var(--color-accent-strong));
  font-size: 1.05rem;
}
.profile-name { display: block; color: var(--color-heading); font-weight: 700; line-height: 1.3; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; }
.profile-meta { display: block; margin-top: var(--space-1); color: var(--color-muted); font-size: .875rem; line-height: 1.4; }
.profile-id { font-variant-numeric: tabular-nums; white-space: nowrap; }
.section-lead { max-width: var(--reading-width); margin: 0 0 var(--space-6); color: var(--color-muted); }
.section-heading { max-width: var(--reading-width); margin-bottom: var(--space-6); }
.section-heading .section-lead { margin-bottom: 0; }
.section-heading-row { display: flex; max-width: none; align-items: end; justify-content: space-between; gap: var(--space-4); }
.section-heading-row > div { max-width: var(--reading-width); }
.text-link { flex: 0 0 auto; margin-bottom: var(--space-2); font-weight: 650; }
.two-column { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-7); }
.card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-4); }
.focus-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.card {
  padding: var(--space-5);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: var(--color-paper);
}
.card p { margin: var(--space-1) 0 0; color: var(--color-muted); }
.timeline { display: grid; gap: var(--space-4); margin: var(--space-5) 0 0; padding: 0; list-style: none; }
.timeline li { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: var(--space-4); }
.timeline time { color: var(--color-accent-strong); font-size: .875rem; font-weight: 700; }
.timeline p { margin: var(--space-1) 0 0; color: var(--color-muted); }
.timeline h4 { font-size: 1rem; }
.credential-note { margin-top: var(--space-5); color: var(--color-muted); font-size: .9rem; }
.credibility-list { border-top: 1px solid var(--color-border); }
.credibility-item { display: grid; grid-template-columns: minmax(130px, .3fr) 1fr; gap: var(--space-4); padding: var(--space-5) 0; border-bottom: 1px solid var(--color-border); }
.credibility-item h3 { margin-bottom: var(--space-1); font-size: 1.08rem; }
.credibility-item p { margin: 0; color: var(--color-muted); }
.credibility-date { color: var(--color-accent-strong) !important; font-size: .875rem; font-weight: 700; }
.recognition-list { display: grid; gap: var(--space-2); margin: var(--space-3) 0 0; padding-left: 1.25rem; }
.recognition-list li { padding-left: var(--space-1); }
.credential-list { display: flex; flex-wrap: wrap; gap: var(--space-2); margin: var(--space-4) 0 0; padding: 0; list-style: none; }
.credential-list li { padding: var(--space-2) var(--space-3); border: 1px solid var(--color-border); border-radius: var(--radius-control); color: var(--color-muted); font-size: .875rem; }
.page-hero { padding: var(--space-8) 0 var(--space-6); background: var(--color-canvas); }
.page-hero h1 { font-size: clamp(2.4rem, 5vw, 3.5rem); }
.page-hero p { max-width: var(--reading-width); margin: var(--space-3) 0 0; color: var(--color-muted); font-size: 1.0625rem; }
.eucyber-hero-head { display: flex; align-items: center; gap: var(--space-4); flex-wrap: wrap; }
.eucyber-hero-mark { display: block; width: 112px; height: 112px; border-radius: var(--radius-image); box-shadow: var(--shadow-image); }
@media (max-width: 30rem) { .eucyber-hero-mark { width: 84px; height: 84px; } }
.entry-list { display: grid; gap: var(--space-3); padding: 0; list-style: none; }
.entry {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--space-1) var(--space-4);
  padding: var(--space-4) var(--space-5);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  background: var(--color-paper);
}
.entry h2, .entry h3 { margin: 0; font-size: 1.08rem; letter-spacing: 0; }
.entry p { grid-column: 1; margin: 0; color: var(--color-muted); font-size: .9rem; }
.entry time { grid-column: 2; grid-row: 1; color: var(--color-muted); font-size: .875rem; white-space: nowrap; }
.entry-links { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-2); font-size: .875rem; }
.entry-links a {
  display: inline-flex;
  min-height: 36px;
  align-items: center;
  padding: .3rem .65rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  background: var(--color-canvas);
  font-weight: 600;
  text-decoration: none;
}
.entry-links a:hover { border-color: var(--color-accent); background: var(--color-accent-soft); }
.entry-links-compact { gap: var(--space-1); margin-top: var(--space-1); font-size: .8rem; }
.entry-links-compact a { min-height: 30px; padding: .2rem .5rem; }
.tag { display: inline-block; margin-top: var(--space-1); color: var(--color-accent-strong); font-size: .75rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.contact-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); margin-top: var(--space-6); }
.contact-card { padding: var(--space-5); border: 1px solid var(--color-border); border-radius: var(--radius-card); }
.contact-card p { margin: var(--space-1) 0 0; color: var(--color-muted); }
.site-footer { padding: var(--space-5) 0; border-top: 1px solid var(--color-border); background: var(--color-paper); }
.footer-inner { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--space-2) var(--space-4); }
.footer-inner p { margin: 0; color: var(--color-muted); font-size: .875rem; }
.footer-inner nav { display: flex; flex-wrap: wrap; gap: var(--space-1); }
.footer-inner nav a { font-size: .875rem; }
.notice { padding: var(--space-4) var(--space-5); border-left: 4px solid var(--color-accent); background: var(--color-accent-soft); }
.notice p { margin-bottom: 0; }

label { display: block; margin-bottom: var(--space-1); font-weight: 600; }
input, select, textarea {
  width: 100%;
  min-height: 44px;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-control);
  color: var(--color-ink);
  background: var(--color-paper);
  font: inherit;
}
textarea { min-height: 8rem; resize: vertical; }
input[aria-invalid="true"], select[aria-invalid="true"], textarea[aria-invalid="true"] {
  border-color: var(--color-danger);
}
.field-error { color: var(--color-danger); font-size: .875rem; }
::placeholder { color: var(--color-muted); opacity: 1; }

@media (max-width: 47.5rem) {
  .header-inner { align-items: flex-start; flex-direction: column; padding-block: var(--space-3); }
  .site-nav { width: 100%; gap: var(--space-1); }
  .site-nav a { padding: var(--space-2); font-size: .86rem; }
  .site-nav .nav-cv { margin-left: 0; }
  .hero-inner { min-height: 0; grid-template-columns: 1fr; gap: var(--space-6); padding-block: var(--space-7); }
  .portrait-wrap { justify-self: start; width: min(43%, 190px); }
  .portrait { border-width: 5px; border-radius: var(--radius-image); }
  .trust-inner { grid-template-columns: repeat(2, 1fr); }
  .trust-item:nth-child(2) { border-right: 0; }
  .trust-item:nth-child(-n+2) { border-bottom: 1px solid var(--color-border); }
  .two-column, .card-grid { grid-template-columns: 1fr; gap: var(--space-5); }
  .profile-grid { grid-template-columns: 1fr; }
  .focus-grid { grid-template-columns: 1fr; }
  .card, .contact-card { padding: var(--space-4); }
  .section-heading-row { align-items: flex-start; flex-direction: column; }
  .credibility-item { grid-template-columns: 1fr; gap: var(--space-1); }
  .section { padding: var(--space-7) 0; }
  .page-hero { padding-block: var(--space-7) var(--space-5); }
}
@media (max-width: 30rem) {
  :root { --page-gutter: .75rem; }
  .header-inner, .footer-inner, .hero-inner, .section-inner, .page-hero-inner, .content-wrap, .trust-inner {
    width: min(100% - 2 * var(--page-gutter), var(--content-width));
  }
  .site-nav { gap: 0; }
  .site-nav a { padding-inline: var(--space-2); font-size: .8rem; }
  .timeline li { grid-template-columns: 1fr; gap: .15rem; }
  .entry { grid-template-columns: 1fr; }
  .entry time { grid-column: 1; grid-row: auto; }
  .entry p { grid-column: 1; }
  .contact-grid { grid-template-columns: 1fr; }
  .footer-inner { align-items: flex-start; flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

/* ── Executive impact grid ──────────────────────────────────────────── */
.impact-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-6);
  margin-top: var(--space-2);
}
.impact-group { }
.impact-group h3 { margin-bottom: var(--space-3); font-size: 1.1rem; }
.impact-list { margin: 0; padding-left: 1.25rem; display: grid; gap: var(--space-2); }
.impact-list li { color: var(--color-muted); font-size: .95rem; }
.impact-list strong { color: var(--color-heading); }
.impact-role-tag { display: inline-block; margin-left: .5rem; color: var(--color-muted); font-size: .72rem; font-weight: 500; letter-spacing: .04em; text-transform: uppercase; }

/* ── Publication / talk topic clusters ──────────────────────────────── */
.pub-cluster { margin-top: var(--space-9); }
.pub-cluster:first-child { margin-top: 0; }
.pub-cluster h2 { margin-bottom: var(--space-2); }
.topic-summary { max-width: var(--reading-width); margin: 0 0 var(--space-4); color: var(--color-muted); font-size: .95rem; }

/* ── Section footer contextual link ────────────────────────────────── */
.section-footer-link { margin-top: var(--space-6); color: var(--color-muted); font-size: .95rem; }

@media (max-width: 47.5rem) {
  .impact-grid { grid-template-columns: 1fr; gap: var(--space-5); }
}

/* ── PDF viewer ─────────────────────────────────────────────────────── */
.pdf-viewer {
  width: 100%;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-card);
  overflow: hidden;
  margin-block: var(--space-4);
}

.pdf-viewer iframe {
  display: block;
  width: 100%;
  height: min(85vh, 1000px);
}

@media (max-width: 600px) {
  .pdf-viewer iframe {
    height: min(70vh, 520px);
  }
}

/* ── Executive profile infographic ─────────────────────────────────── */
.exec-infographic { margin: 0 auto; max-width: 37.5rem; }
.exec-infographic img { display: block; width: 100%; height: auto; border: 1px solid var(--color-border); border-radius: var(--radius-image); box-shadow: var(--shadow-image); }
.exec-infographic figcaption { margin-top: var(--space-3); color: var(--color-muted); font-size: .9rem; }

/* ── EUCyberIncident — executive incident & SLA engine ─────────────── */
:root {
  --eucyber-critical-bg: #fef2f2; --eucyber-critical-border: #fca5a5; --eucyber-critical-text: #991b1b;
  --eucyber-warning-bg: #fffbeb; --eucyber-warning-border: #fde68a; --eucyber-warning-text: #92400e;
  --eucyber-ok-bg: #f0fdf4; --eucyber-ok-border: #86efac; --eucyber-ok-text: #166534;

  /* EUCyber palette (spec §2.1) — slate / navy / white, light mode only */
  --eucyber-bg-card: #ffffff;
  --eucyber-bg-subtle: #f8fafc;
  --eucyber-bg-muted: #f1f5f9;
  --eucyber-text-main: #0f172a;
  --eucyber-text-muted: #475569;
  --eucyber-text-light: #64748b;
  --eucyber-border: #e2e8f0;
  --eucyber-navy: #1e293b;
  --eucyber-blue: #2563eb;
  --eucyber-blue-bg: #eff6ff;
  --eucyber-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);
  --eucyber-shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);
  --eucyber-radius-sm: 4px;
  --eucyber-radius-md: 8px;
}

/* ── Form ─────────────────────────────────────────────────────────── */
.eucyber-form { display: grid; gap: var(--space-5); }
.eucyber-fieldset { border: 1px solid var(--eucyber-border); border-radius: var(--eucyber-radius-md); padding: var(--space-4); background: var(--eucyber-bg-card); }
.eucyber-fieldset legend { padding: 0 var(--space-2); font-weight: 700; color: var(--eucyber-text-main); font-size: .95rem; }
.eucyber-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: var(--space-4); }
.eucyber-field { display: grid; gap: var(--space-1); }
.eucyber-label { font-size: .8rem; color: var(--eucyber-text-muted); font-weight: 600; letter-spacing: .03em; }
.eucyber-field select, .eucyber-field input { font: inherit; color: var(--eucyber-text-main); background: var(--eucyber-bg-card); border: 1px solid var(--eucyber-border); border-radius: var(--eucyber-radius-sm); padding: .5rem .75rem; min-height: 44px; }
.eucyber-field select:focus-visible, .eucyber-field input:focus-visible { outline: var(--focus-outline); outline-offset: var(--focus-offset); }

/* Checkbox rows — deterministic box-model alignment with the first text line */
.eucyber-check { display: grid; grid-template-columns: 1.25rem 1fr; column-gap: var(--space-3); align-items: center; min-height: 44px; margin: 0; padding: .25rem 0; font-weight: 500; color: var(--eucyber-text-main); font-size: .95rem; cursor: pointer; }
.eucyber-check input[type="checkbox"] { appearance: none; -webkit-appearance: none; width: 1.25rem; height: 1.25rem; min-height: 0; margin: 0; padding: 0; border: 1.5px solid var(--eucyber-border); border-radius: 4px; background: var(--eucyber-bg-card); }
.eucyber-check input[type="checkbox"]:checked { background: var(--eucyber-blue); border-color: var(--eucyber-blue); background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%3E%3Cpath%20d='M4%204L12%2012M12%204L4%2012'%20stroke='%23fff'%20stroke-width='2.4'%20stroke-linecap='round'%20fill='none'/%3E%3C/svg%3E"); background-size: 0.8rem 0.8rem; background-position: center; background-repeat: no-repeat; }
.eucyber-check input[type="checkbox"]:focus-visible { outline: var(--focus-outline); outline-offset: 2px; }
.eucyber-check span { line-height: 1.3; color: var(--eucyber-text-main); }

/* ── Results dashboard shell ──────────────────────────────────────── */
.eucyber-dash { display: grid; gap: var(--space-5); }

/* Executive Verdict panel (spec §1.2) — LAYER 1: DECISION */
.eucyber-verdict-panel { background: var(--eucyber-bg-card); border: 1px solid var(--eucyber-border); border-left: 4px solid var(--eucyber-border); border-radius: var(--eucyber-radius-md); box-shadow: var(--eucyber-shadow-sm); padding: var(--space-5); }
.eucyber-verdict-panel.is-critical { border-left-color: var(--eucyber-critical-border); }
.eucyber-verdict-panel.is-clear { border-left-color: var(--eucyber-ok-border); }
.eucyber-eyebrow { margin: 0; font-size: .7rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--eucyber-text-light); }
.eucyber-verdict-head { display: flex; flex-wrap: wrap; align-items: center; margin: 0 0 var(--space-4); }
.eucyber-verdict-score { display: flex; align-items: baseline; gap: .35rem; flex-wrap: wrap; }
.eucyber-verdict-num { font-size: 3.25rem; font-weight: 800; line-height: 1; color: var(--eucyber-text-main); font-variant-numeric: tabular-nums; }
.eucyber-verdict-num.is-critical { color: var(--eucyber-critical-text); }
.eucyber-verdict-num.is-clear { color: #16a34a; }
.eucyber-verdict-denom { font-size: 1.5rem; font-weight: 600; color: var(--eucyber-text-light); }
.eucyber-verdict-cap { font-size: 1rem; font-weight: 600; color: var(--eucyber-text-muted); }
.eucyber-regime-grid { list-style: none; margin: var(--space-4) 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(172px, 1fr)); gap: var(--space-3); }
.eucyber-regime-chip { display: grid; grid-template-columns: .65rem 1fr; column-gap: .5rem; align-items: start; padding: .5rem .75rem; border-radius: var(--eucyber-radius-md); background: var(--eucyber-bg-muted); border: 1px solid var(--eucyber-border); }
.eucyber-regime-chip.is-on { background: var(--eucyber-critical-bg); border-color: var(--eucyber-critical-border); }
.eucyber-dot { width: .65rem; height: .65rem; border-radius: 50%; background: var(--eucyber-border); flex: none; }
.eucyber-regime-chip .eucyber-dot { grid-row: 1 / span 2; }
.eucyber-regime-chip.is-on .eucyber-dot { background: #dc2626; box-shadow: 0 0 0 3px rgb(220 38 38 / .16); }
.eucyber-chip-name { grid-column: 2; font-weight: 700; font-size: .9rem; color: var(--eucyber-text-main); }
.eucyber-regime-chip.is-on .eucyber-chip-name { color: var(--eucyber-critical-text); }
.eucyber-chip-state { grid-column: 2; font-size: .68rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--eucyber-text-light); }
.eucyber-regime-chip.is-on .eucyber-chip-state { color: var(--eucyber-critical-text); }

/* Section blocks */
.eucyber-block { display: grid; gap: var(--space-4); }
.eucyber-block-head { display: flex; align-items: baseline; gap: var(--space-3); flex-wrap: wrap; border-bottom: 1px solid var(--eucyber-border); padding-bottom: var(--space-2); margin-top: var(--space-6); }
.eucyber-block-head h2 { margin: 0; font-size: 1.375rem; color: var(--eucyber-text-main); }
.eucyber-block-head p { margin: 0; color: var(--eucyber-text-light); font-size: .85rem; }

/* Triggered regime cards */
.eucyber-verdicts, .eucyber-clock-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--space-4); }
.eucyber-regime, .eucyber-clock, .eucyber-action, .eucyber-srp-wrap { background: var(--eucyber-bg-card); border: 1px solid var(--eucyber-border); border-radius: var(--eucyber-radius-md); padding: var(--space-4); box-shadow: var(--eucyber-shadow-sm); }
.eucyber-regime { border-top: 3px solid var(--eucyber-critical-border); }
.eucyber-regime header { display: flex; justify-content: space-between; align-items: center; gap: var(--space-2); flex-wrap: wrap; }
.eucyber-regime h3 { margin: 0; font-size: 1.12rem; color: var(--eucyber-text-main); }
.eucyber-pill { display: inline-flex; align-items: center; gap: .35rem; padding: .2rem .6rem; border-radius: 999px; font-size: .7rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
.eucyber-pill.is-on { background: var(--eucyber-critical-bg); color: var(--eucyber-critical-text); border: 1px solid var(--eucyber-critical-border); }
.eucyber-pill.is-on .eucyber-dot { background: #dc2626; }
.eucyber-regime-class { margin: var(--space-3) 0 var(--space-1); font-weight: 700; color: var(--eucyber-text-main); font-size: 1rem; }
.eucyber-why { margin: 0 0 var(--space-2); padding-left: 1.1rem; color: var(--eucyber-text-main); font-size: .9rem; }
.eucyber-ref { display: inline-block; margin: var(--space-2) 0 0; font-size: .78rem; font-weight: 600; letter-spacing: .02em; color: var(--eucyber-text-light); background: var(--eucyber-bg-muted); border: 1px solid var(--eucyber-border); padding: .12rem .5rem; border-radius: 999px; }

/* SLA deadline clocks (spec §1.3) — countdown first, urgency colours */
.eucyber-clock { border-left: 5px solid var(--eucyber-border); }
.eucyber-clock.is-critical { border-left-color: #dc2626; background: var(--eucyber-critical-bg); }
.eucyber-clock.is-warning { border-left-color: #d97706; background: var(--eucyber-warning-bg); }
.eucyber-clock.is-ok { border-left-color: #16a34a; }
.eucyber-clock-count { display: flex; align-items: center; gap: var(--space-2); font-size: 1.45rem; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--eucyber-text-main); }
.eucyber-clock-count .eucyber-dot { width: .7rem; height: .7rem; }
.eucyber-clock.is-critical .eucyber-dot { background: #dc2626; }
.eucyber-clock.is-warning .eucyber-dot { background: #d97706; }
.eucyber-clock.is-ok .eucyber-dot { background: #16a34a; }
.eucyber-clock.is-critical .eucyber-clock-count { color: var(--eucyber-critical-text); }
.eucyber-clock.is-warning .eucyber-clock-count { color: var(--eucyber-warning-text); }
.eucyber-clock-kicker { margin: var(--space-2) 0 0; font-size: .72rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--eucyber-text-light); }
.eucyber-clock-to { margin: var(--space-1) 0 var(--space-3); font-weight: 600; color: var(--eucyber-text-main); font-size: .95rem; }
.eucyber-bar { height: 5px; border-radius: 3px; background: var(--eucyber-bg-muted); overflow: hidden; }
.eucyber-bar span { display: block; height: 100%; width: 0; background: var(--eucyber-blue); }
.eucyber-clock.is-critical .eucyber-bar span { background: #dc2626; }
.eucyber-clock.is-warning .eucyber-bar span { background: #d97706; }
.eucyber-clock-meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-1) var(--space-3); margin: var(--space-2) 0 0; font-size: .82rem; color: var(--eucyber-text-muted); }
.eucyber-clock-meta strong { color: var(--eucyber-text-main); }

/* ENISA SRP process flow (spec §1.6) */
.eucyber-srp-wrap { margin-top: var(--space-4); }
.eucyber-srp-head h3 { margin: 0; font-size: 1.05rem; color: var(--eucyber-text-main); }
.eucyber-srp-head p { margin: .15rem 0 var(--space-3); font-size: .85rem; color: var(--eucyber-text-light); }
.eucyber-srp { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-4); }
.eucyber-srp-step { position: relative; }
.eucyber-srp-step::before { content: ""; position: absolute; top: .95rem; left: var(--space-4); width: calc(100% + var(--space-4)); height: 2px; background: var(--eucyber-border); }
.eucyber-srp-step:last-child::before { display: none; }
.eucyber-srp-marker { display: grid; place-items: center; width: 1.9rem; height: 1.9rem; margin: 0 auto; border-radius: 50%; font-size: .82rem; font-weight: 700; background: var(--eucyber-bg-card); border: 2px solid var(--eucyber-border); color: var(--eucyber-text-light); }
.eucyber-srp-step.is-current .eucyber-srp-marker { background: #dc2626; border-color: #dc2626; color: #fff; box-shadow: 0 0 0 3px rgb(220 38 38 / .16); }
.eucyber-srp-step.is-current::before { background: #fca5a5; }
.eucyber-srp-body { display: grid; justify-items: center; gap: .2rem; }
.eucyber-srp-title { font-size: .88rem; font-weight: 700; color: var(--eucyber-text-main); }
.eucyber-srp-count { font-variant-numeric: tabular-nums; font-weight: 700; font-size: 1rem; color: var(--eucyber-text-main); }
.eucyber-srp-step.is-current .eucyber-srp-count { color: var(--eucyber-critical-text); }
.eucyber-srp-due { font-size: .78rem; color: var(--eucyber-text-muted); }

/* Board playbook (spec §1.4) — LAYER 2: ACTION */
.eucyber-actions { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: var(--space-4); }
.eucyber-action { display: grid; grid-template-columns: auto 1fr; gap: var(--space-3); }
.eucyber-action-no { width: 2rem; height: 2rem; display: grid; place-items: center; border-radius: 50%; font-size: .95rem; font-weight: 800; color: var(--eucyber-bg-card); background: var(--eucyber-navy); line-height: 1; font-variant-numeric: tabular-nums; }
.eucyber-action-main { min-width: 0; display: grid; gap: var(--space-2); }
.eucyber-action h3 { margin: 0; font-size: 1.02rem; color: var(--eucyber-text-main); }
.eucyber-action-meta { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-3); align-items: center; margin: 0; font-size: .82rem; color: var(--eucyber-text-muted); }
.eucyber-tag { padding: .1rem .6rem; border-radius: 999px; background: var(--eucyber-blue-bg); color: var(--eucyber-blue); font-weight: 700; font-size: .72rem; }
.eucyber-tag.is-urgent { background: var(--eucyber-critical-bg); color: var(--eucyber-critical-text); border: 1px solid var(--eucyber-critical-border); }
.eucyber-action-desc { margin: 0; font-size: .9rem; line-height: 1.5; color: var(--eucyber-text-main); }

/* LAYER 3: EVIDENCE */
.eucyber-citation { border-top: 1px solid var(--eucyber-border); padding: var(--space-2) 0; }
.eucyber-citation summary { cursor: pointer; font-weight: 600; color: var(--eucyber-text-main); font-size: .88rem; }
.eucyber-citation summary::marker { color: var(--eucyber-blue); }
.eucyber-citation-body { padding: var(--space-2) 0 var(--space-3) var(--space-3); border-left: 2px solid var(--eucyber-blue-bg); margin-top: var(--space-1); }
.eucyber-citation-title { margin: 0 0 var(--space-2); font-weight: 700; font-size: .9rem; color: var(--eucyber-text-main); }
.eucyber-citation-ref { font-size: .8rem; color: var(--eucyber-text-muted); font-weight: 600; margin: 0 0 var(--space-2); }
.eucyber-quote { margin: 0 0 var(--space-2); padding: var(--space-3) var(--space-4); background: var(--eucyber-blue-bg); border-left: 4px solid var(--eucyber-blue); border-radius: 0 var(--eucyber-radius-sm) var(--eucyber-radius-sm) 0; font-size: .92rem; line-height: 1.6; color: var(--eucyber-text-main); }
.eucyber-citation-summary { font-size: .9rem; color: var(--eucyber-text-muted); margin: 0 0 var(--space-2); }
.eucyber-citation-link { margin: 0; font-size: .85rem; }
.eucyber-empty { color: var(--eucyber-text-muted); font-style: italic; }

/* Disclaimer — footer link banner + full text (spec §5 & §6.5) */
.eucyber-legal-banner { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3) var(--space-4); background: var(--eucyber-bg-subtle); border: 1px solid var(--eucyber-border); border-radius: var(--eucyber-radius-md); font-size: .85rem; color: var(--eucyber-text-muted); }
.eucyber-legal-banner strong { font-size: .68rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; background: var(--eucyber-bg-muted); border: 1px solid var(--eucyber-border); padding: .15rem .45rem; border-radius: 4px; color: var(--eucyber-text-light); }
.eucyber-legal-banner p { margin: 0; }
.eucyber-legal-banner a { color: var(--eucyber-blue); font-weight: 600; }

.eucyber-disclaimer-section { background: var(--eucyber-bg-subtle); }
.eucyber-disclaimer { max-width: var(--reading-width); margin: 0 auto; padding: var(--space-5); background: var(--eucyber-bg-card); border: 1px solid var(--eucyber-border); border-left: 4px solid var(--eucyber-navy); border-radius: var(--eucyber-radius-md); }
.eucyber-disclaimer h2 { margin: 0 0 var(--space-1); font-size: 1.25rem; color: var(--eucyber-text-main); }
.eucyber-disclaimer-important { margin: 0 0 var(--space-4); font-size: .78rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--eucyber-text-muted); }
.eucyber-disclaimer h3 { margin: var(--space-4) 0 var(--space-2); font-size: .95rem; color: var(--eucyber-text-main); }
.eucyber-disclaimer p, .eucyber-disclaimer li { margin: 0 0 var(--space-2); font-size: .86rem; line-height: 1.55; color: var(--eucyber-text-muted); }
.eucyber-disclaimer ul { margin: 0 0 var(--space-3); padding-left: 1.3rem; }

/* First-run disclaimer modal (spec §6.5) */
.eucyber-modal-backdrop { position: fixed; inset: 0; z-index: 1000; background: rgb(15 23 42 / .55); display: grid; place-items: center; padding: var(--space-4); }
.eucyber-modal-backdrop[hidden] { display: none; }
.eucyber-modal { width: min(46rem, 100%); max-height: 88vh; overflow: auto; background: var(--eucyber-bg-card); border: 1px solid var(--eucyber-border); border-radius: var(--eucyber-radius-md); box-shadow: var(--eucyber-shadow-md); padding: var(--space-5); }
.eucyber-modal-head { border-bottom: 1px solid var(--eucyber-border); padding-bottom: var(--space-3); }
.eucyber-modal h2 { margin: 0 0 var(--space-1); font-size: 1.15rem; color: var(--eucyber-text-main); }
.eucyber-modal-important { margin: 0; font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--eucyber-text-muted); }
.eucyber-modal-lead { margin: var(--space-3) 0 0; font-size: .9rem; color: var(--eucyber-text-muted); }
.eucyber-modal-points { margin: var(--space-2) 0; padding-left: 1.2rem; color: var(--eucyber-text-muted); font-size: .88rem; }
.eucyber-modal-points li { margin: 0 0 var(--space-2); line-height: 1.5; }
.eucyber-modal-points strong { color: var(--eucyber-text-main); }
.eucyber-modal-action { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: center; padding: var(--space-3); background: var(--eucyber-bg-subtle); border: 1px solid var(--eucyber-border); border-radius: var(--eucyber-radius-md); }
.eucyber-modal-anchor { margin: var(--space-2) 0 0; font-size: .8rem; color: var(--eucyber-text-light); }
.eucyber-modal-anchor a { color: var(--eucyber-blue); }
button.eucyber-btn { min-height: 46px; padding: var(--space-2) var(--space-4); border: 1px solid var(--eucyber-blue); border-radius: var(--eucyber-radius-sm); background: var(--eucyber-blue); color: var(--eucyber-bg-card); font-weight: 700; font: inherit; cursor: pointer; }
button.eucyber-btn:hover:not(:disabled) { background: var(--eucyber-navy); }
button.eucyber-btn:disabled { opacity: .45; cursor: not-allowed; }

/* Responsive (spec §1.6, §2) */
@media (max-width: 980px) {
  .eucyber-regime-grid { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
  .eucyber-srp { grid-template-columns: repeat(2, 1fr); }
  .eucyber-srp-step::before { display: none; }
}
@media (max-width: 640px) {
  .eucyber-verdict-num { font-size: 2.6rem; }
  .eucyber-actions { grid-template-columns: 1fr; }
  .eucyber-verdicts, .eucyber-clock-grid { grid-template-columns: 1fr; }
  .eucyber-srp { grid-template-columns: 1fr; }
}

@media print {
  .site-header, .site-footer, .skip-link, .eucyber-form, .eucyber-citations-section, .eucyber-legal-banner, .eucyber-modal-backdrop { display: none !important; }
  .eucyber-disclaimer-section { display: block !important; }
}


