/* ==========================================================================
   enhance.css — visual refinement layer, loaded AFTER styles.css
   Does not redefine any design token. Everything here is additive.
   ========================================================================== */
:root {
  --ze-ease: cubic-bezier(.22, .61, .36, 1);
  --ze-ease-soft: cubic-bezier(.4, 0, .2, 1);
  --ze-hero-shade: linear-gradient(105deg, rgba(5, 23, 15, .96) 0%, rgba(11, 36, 24, .90) 42%, rgba(18, 53, 40, .55) 74%, rgba(18, 53, 40, .30) 100%);
  --ze-accent-line: linear-gradient(90deg, var(--ze-color-primary-500) 0%, var(--ze-color-steel-300) 55%, transparent 100%);
  --ze-shadow-lift: 0 18px 44px -22px rgba(11, 36, 24, .38), 0 4px 14px -8px rgba(11, 36, 24, .22);
}

html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body { text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; }
h1, h2, h3 { text-wrap: balance; }
p { text-wrap: pretty; }

/* Layout fix: UA default <figure> margin -----------------------------------
   Browsers ship `figure { margin: 1em 40px }` and styles.css never resets it.
   That pushed all 197 `<figure class="u-ph">` (and the article heroes) 40px
   to the right, clipped the right edge inside `.c-card__media`'s overflow,
   and left a 1em gap under every image. Every figure on this site is a custom
   component meant to fill its parent, so reset the UA margin once here.
   Component-level longhands (e.g. .ze-article__hero margin-block-end) still
   apply because a class selector outranks the element selector below.
   -------------------------------------------------------------------------- */
figure { margin: 0; }

/* Card media already owns the 4:3 box. Its figure has both an inline
   `height:100%` and `.u-ph__ratio-4x3` (aspect-ratio:4/3), which makes the
   browser derive the width from the height. Pin it to the parent instead so
   the photo fills edge-to-edge, with no second border radius inside the card. */
.c-card__media > figure.u-ph {
  inline-size: 100%;
  block-size: 100%;
  aspect-ratio: auto;
  border-radius: 0;
}

/* Grade pages use the figure's own aspect-ratio for height; only the inline
   size needs to be explicit when the parent is a grid/flex item. */
.p-grade__intro-media > figure.u-ph,
.p-grade__pack-media > figure.u-ph { inline-size: 100%; }

/* Utility bar ------------------------------------------------------------ */
.ze-utility { display: flex; align-items: center; gap: var(--ze-space-5); flex-wrap: wrap; }
.ze-utility .c-utility__item a { color: inherit; text-decoration: none; border-block-end: 1px solid transparent; }
.ze-utility .c-utility__item a:hover { border-block-end-color: currentColor; }

/* Reading progress ------------------------------------------------------- */
.ze-progress {
  position: fixed; inset-block-start: 0; inset-inline-start: 0;
  block-size: 3px; inline-size: 0; z-index: 90;
  background: var(--ze-accent-line);
  transition: inline-size .12s linear;
  pointer-events: none;
}

/* Scroll reveal (JS-gated: content stays visible if JS fails) ------------- */
.ze-ready .ze-reveal { opacity: 0; transform: translateY(18px); transition: opacity .7s var(--ze-ease), transform .7s var(--ze-ease); }
.ze-ready .ze-reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .ze-ready .ze-reveal { opacity: 1 !important; transform: none !important; transition: none; }
}

/* Section headers -------------------------------------------------------- */
.ze-secheader { position: relative; }
.c-secheader__rule { inline-size: 76px; block-size: 3px; border-radius: 2px; background: var(--ze-accent-line); }
.c-secheader--dark .c-secheader__rule { background: linear-gradient(90deg, var(--ze-color-primary-200), transparent); }
.ze-eyebrow {
  font-size: var(--ze-fs-eyebrow); font-weight: var(--ze-fw-semibold);
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--ze-color-primary-500); margin-block-end: var(--ze-space-3);
}
.u-on-dark .ze-eyebrow, .c-secheader--dark .ze-eyebrow { color: var(--ze-color-primary-200); }

/* Home hero -------------------------------------------------------------- */
.p-home__hero { isolation: isolate; overflow: hidden; }
.p-home__hero::before {
  content: ''; position: absolute; inset: 0; z-index: -2;
  background: var(--ze-hero-shade);
}
.p-home__hero::after {
  content: ''; position: absolute; inset: 0; z-index: -3;
  background-image: url('img/hero-hq.webp');
  background-size: cover; background-position: center 42%;
  transform: scale(1.04);
}
@media (min-width: 900px) {
  /* Give the trust panel a little more room than the original 1.15/0.85 split. */
  .p-home__hero-inner { grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); align-items: center; gap: var(--ze-space-16); }
}
.p-home__hero-copy { gap: var(--ze-space-6); }
.p-home__hero h1 { font-size: clamp(2.25rem, 1.5rem + 3.3vw, 4rem); line-height: 1.08; letter-spacing: -.025em; max-inline-size: 16ch; }
.p-home__hero-sub { max-inline-size: 58ch; }
.p-home__hero-actions { margin-block-start: var(--ze-space-2); }
.p-home__trust {
  display: grid; gap: var(--ze-space-5);
  padding: var(--ze-space-6); border-radius: var(--ze-radius-sm, 8px);
  background: rgba(255, 255, 255, .07);
  border: 1px solid rgba(168, 207, 192, .28);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  box-shadow: 0 20px 60px -30px rgba(0, 0, 0, .6);
}

/* The trust panel sits in the hero's narrow side column. styles.css puts
   metrics in 3 columns (>=900px) and credentials in 4, which squeezed
   "10,000+" into "20,000+" and wrapped card titles into five lines.
   Two balanced columns fit the panel at every viewport width. */
.p-home__trust .c-metric-grid,
.p-home__trust .c-cert-grid--compact {
  grid-template-columns: minmax(0, 1fr);
  gap: var(--ze-space-3);
}
@media (min-width: 560px) {
  .p-home__trust .c-metric-grid,
  .p-home__trust .c-cert-grid--compact {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.p-home__trust-label {
  font-size: var(--ze-fs-xs); letter-spacing: .02em; text-transform: none;
  font-weight: var(--ze-fw-semibold); line-height: 1.5;
  color: var(--ze-color-primary-100); margin: 0; max-inline-size: 46ch;
}

/* Metrics ---------------------------------------------------------------- */
.c-metric--dark { border-radius: 6px; padding: var(--ze-space-3) var(--ze-space-4); background: rgba(255, 255, 255, .035); }
.c-metric__value { letter-spacing: -.03em; }
.c-metric--dark .c-metric__value { color: var(--ze-color-text-invert); }
.c-metric--dark .c-metric__label { color: var(--ze-color-primary-100); }
.p-home__trust .c-metric {
  min-block-size: 0; min-inline-size: 0;
  padding: var(--ze-space-4); gap: var(--ze-space-2);
  align-items: flex-start; justify-content: flex-start;
}
.p-home__trust .c-metric__value {
  display: block; font-size: clamp(1.55rem, 1.1rem + 1vw, 2.05rem);
  line-height: 1.05; letter-spacing: -.04em; white-space: nowrap;
}
.p-home__trust .c-metric__label {
  display: block; font-size: var(--ze-fs-xs); line-height: 1.45;
  text-wrap: pretty; overflow-wrap: anywhere;
}

/* Product family cards --------------------------------------------------- */
.c-card--series { overflow: hidden; transition: transform .4s var(--ze-ease), box-shadow .4s var(--ze-ease), border-color .4s var(--ze-ease); }
.c-card--series .c-card__media { overflow: hidden; }
.c-card--series .u-ph__img { transition: transform .7s var(--ze-ease); }
.c-card--series:hover .u-ph__img { transform: scale(1.06); }
.c-card--series .c-card__desc { min-block-size: 4.5em; color: var(--ze-color-text-secondary); line-height: 1.6; }
.c-card--series .c-card__foot { color: var(--ze-color-link); font-weight: var(--ze-fw-semibold); display: inline-flex; align-items: center; gap: var(--ze-space-2); }
.c-card__meta { font-size: var(--ze-fs-xs); letter-spacing: .02em; }

/* Capability items ------------------------------------------------------- */
.p-home__capitem {
  padding: var(--ze-space-8); border-radius: 8px;
  background: var(--ze-color-surface); border: 1px solid var(--ze-color-border-subtle);
  display: grid; gap: var(--ze-space-3); align-content: start;
  transition: transform .35s var(--ze-ease), box-shadow .35s var(--ze-ease);
}
.p-home__capitem:hover { transform: translateY(-4px); box-shadow: var(--ze-shadow-lift); }
.p-home__capitem > .u-icon { color: var(--ze-color-primary-600); inline-size: 30px; block-size: 30px; padding: var(--ze-space-2); box-sizing: content-box; border-radius: 8px; background: var(--ze-color-primary-50); }
.p-home__capitem .u-muted { color: var(--ze-color-text-secondary); line-height: 1.7; }

/* Application chips ------------------------------------------------------ */
.p-home__apps { gap: var(--ze-space-3); }
.p-home__apps a {
  padding: var(--ze-space-3) var(--ze-space-5); border: 1px solid var(--ze-color-border);
  border-radius: 999px; background: var(--ze-color-surface); text-decoration: none;
  font-weight: var(--ze-fw-medium); gap: var(--ze-space-3);
  transition: border-color .3s var(--ze-ease), background .3s var(--ze-ease), transform .3s var(--ze-ease);
}
.p-home__apps a:hover { border-color: var(--ze-color-primary-500); background: var(--ze-color-primary-50); color: var(--ze-color-link-hover); transform: translateY(-2px); text-decoration: none; }
.p-home__apps svg { color: var(--ze-color-primary-600); }

/* Verified credential cards ---------------------------------------------- */
.c-cert-grid { align-items: stretch; }
.c-cert { border-radius: 8px; transition: border-color .3s var(--ze-ease), transform .3s var(--ze-ease); }
.c-cert--badge:hover { border-color: var(--ze-color-primary-400); transform: translateY(-2px); }
.c-cert--compact { display: flex; align-items: center; }
.c-cert--compact .u-icon { inline-size: 16px; block-size: 16px; color: var(--ze-color-primary-200); }
.c-cert__scope { line-height: 1.6; }
/* Keep the shield and the title on one row; the old flex-wrap pushed the icon
   onto its own line and let long names break into four or five short lines. */
.p-home__trust .c-cert--compact {
  min-block-size: 0; padding: var(--ze-space-4);
  display: flex; align-items: center;
}
.p-home__trust .c-cert__row {
  flex-wrap: nowrap; align-items: flex-start;
  gap: var(--ze-space-3); inline-size: 100%;
}
.p-home__trust .c-cert__row .u-icon {
  flex: 0 0 auto; inline-size: 18px; block-size: 18px;
  margin-block-start: 1px; color: var(--ze-color-primary-200);
}
.p-home__trust .c-cert__name {
  font-size: 13.5px; line-height: 1.4; min-inline-size: 0;
  overflow-wrap: break-word;
}

/* CTA band --------------------------------------------------------------- */
.ze-cta { position: relative; isolation: isolate; overflow: hidden; }
.ze-cta::before {
  content: ''; position: absolute; inset: 0; z-index: -1;
  background: radial-gradient(ellipse at 85% 20%, rgba(63, 133, 103, .45), transparent 55%),
              radial-gradient(ellipse at 10% 90%, rgba(36, 90, 104, .35), transparent 50%);
}
.ze-cta .c-secheader h2 { max-inline-size: 22ch; }

/* Stat band -------------------------------------------------------------- */
.ze-stat-band {
  display: grid; gap: var(--ze-space-6) var(--ze-space-5);
  grid-template-columns: repeat(2, minmax(0, 1fr));
  padding: var(--ze-space-10) 0;
}
.ze-stat-band--dark {
  padding: var(--ze-space-12); border-radius: 10px;
  background: var(--ze-gradient-plate); color: var(--ze-color-text-invert);
  border: 1px solid var(--ze-color-border-dark);
}
.ze-stat { display: grid; gap: var(--ze-space-2); align-content: start; min-inline-size: 0; }
.ze-stat__value { font-size: clamp(1.7rem, 1.3rem + 1.1vw, 2.4rem); font-weight: var(--ze-fw-bold); line-height: 1.05; letter-spacing: -.04em; font-variant-numeric: tabular-nums; white-space: nowrap; color: var(--ze-color-primary-600); }
.ze-stat-band--dark .ze-stat__value { color: var(--ze-color-primary-200); }
.ze-stat__label { font-size: var(--ze-fs-sm); line-height: 1.55; color: var(--ze-color-text-secondary); text-wrap: pretty; }
.ze-stat-band--dark .ze-stat__label { color: var(--ze-color-text-invert-secondary); }
/* Six figures in six columns left 10,000+ / 20,000+ touching on ~1100px
   viewports. Three columns give every number its own comfortable cell. */
@media (min-width: 640px) { .ze-stat-band { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .ze-stat-band { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* Split feature / editorial --------------------------------------------- */
.ze-split { display: grid; gap: var(--ze-space-10); align-items: center; }
@media (min-width: 900px) { .ze-split { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--ze-space-16); } }
.ze-split__media { border-radius: 10px; overflow: hidden; box-shadow: var(--ze-shadow-lift); }
.ze-split__media img { display: block; inline-size: 100%; block-size: auto; }
.ze-split__body { max-inline-size: 62ch; }
.ze-split__body h2 { margin-block-end: var(--ze-space-5); }

/* Page hero (sub-pages) -------------------------------------------------- */
.ze-pagehero { position: relative; isolation: isolate; overflow: hidden; background: var(--ze-color-surface-dark); color: var(--ze-color-text-invert); }
.ze-pagehero::before { content: ''; position: absolute; inset: 0; z-index: -2; background: var(--ze-hero-shade); }
.ze-pagehero::after { content: ''; position: absolute; inset: 0; z-index: -3; background-image: var(--ze-pagehero-img, none); background-size: cover; background-position: center; opacity: .5; }
.ze-pagehero h1 { color: var(--ze-color-text-invert); max-inline-size: 24ch; letter-spacing: -.02em; }
.ze-pagehero .c-secheader__sub, .ze-pagehero .ze-lead { color: var(--ze-color-text-invert-secondary); max-inline-size: 68ch; }
.ze-pagehero .ze-crumbs a { color: var(--ze-color-primary-100); }
.ze-pagehero .ze-crumbs { color: var(--ze-color-primary-200); }
.ze-lead { font-size: var(--ze-fs-lead); line-height: 1.75; }
.ze-pagehero--plain { background: var(--ze-color-surface-page); color: var(--ze-color-text); }
.ze-pagehero--plain::before, .ze-pagehero--plain::after { display: none; }
.ze-pagehero--plain h1 { color: var(--ze-color-text); }

/* Breadcrumbs ------------------------------------------------------------ */
.ze-crumbs { display: flex; flex-wrap: wrap; gap: var(--ze-space-2); align-items: center; font-size: var(--ze-fs-xs); margin-block-end: var(--ze-space-6); color: var(--ze-color-text-muted); }
.ze-crumbs a { color: var(--ze-color-link); text-decoration: none; }
.ze-crumbs a:hover { text-decoration: underline; }
.c-crumbs__sep { opacity: .5; }

/* Gallery ---------------------------------------------------------------- */
.ze-gallery { display: grid; gap: var(--ze-space-5); grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ze-gallery[data-ze-cols="3"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ze-gallery[data-ze-cols="4"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 700px) { .ze-gallery[data-ze-cols="3"] { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 900px) { .ze-gallery[data-ze-cols="4"] { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.ze-gallery__item {
  display: block; text-decoration: none; color: inherit;
  border: 1px solid var(--ze-color-border-subtle); border-radius: 8px; overflow: hidden;
  background: var(--ze-color-surface);
  transition: transform .35s var(--ze-ease), box-shadow .35s var(--ze-ease), border-color .35s var(--ze-ease);
}
.ze-gallery__item:hover { transform: translateY(-4px); box-shadow: var(--ze-shadow-lift); border-color: var(--ze-color-primary-300); }
.ze-gallery__frame { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--ze-color-surface-sunken); }
.ze-gallery__frame img { inline-size: 100%; block-size: 100%; object-fit: cover; display: block; transition: transform .6s var(--ze-ease); }
.ze-gallery__item:hover .ze-gallery__frame img { transform: scale(1.07); }
.ze-gallery__cap { display: grid; gap: var(--ze-space-1); padding: var(--ze-space-4); font-size: var(--ze-fs-sm); line-height: 1.5; }
.ze-gallery__cap strong { font-weight: var(--ze-fw-semibold); color: var(--ze-color-text); }
.ze-gallery__cap span { color: var(--ze-color-text-secondary); }
.ze-gallery__cap svg { color: var(--ze-color-primary-500); margin-block-start: var(--ze-space-2); }

/* Lightbox --------------------------------------------------------------- */
.ze-lightbox {
  position: fixed; inset: 0; z-index: 200; display: grid; place-items: center;
  background: rgba(5, 23, 15, .94); padding: var(--ze-space-6);
  opacity: 0; transition: opacity .25s var(--ze-ease-soft);
}
.ze-lightbox.is-open { opacity: 1; }
.ze-lightbox__figure { max-inline-size: min(1100px, 94vw); margin: 0; display: grid; gap: var(--ze-space-4); }
.ze-lightbox__img { max-inline-size: 100%; max-block-size: 76vh; object-fit: contain; border-radius: 6px; background: #fff; }
.ze-lightbox__cap { color: var(--ze-color-text-invert); font-size: var(--ze-fs-sm); text-align: center; }
.ze-lightbox__close, .ze-lightbox__nav {
  position: absolute; border: 0; cursor: pointer; color: #fff;
  background: rgba(255, 255, 255, .12); border-radius: 999px;
  inline-size: 44px; block-size: 44px; display: grid; place-items: center;
  font-size: 22px; line-height: 1;
}
.ze-lightbox__close { inset-block-start: var(--ze-space-6); inset-inline-end: var(--ze-space-6); }
.ze-lightbox__nav--prev { inset-inline-start: var(--ze-space-6); inset-block-start: 50%; transform: translateY(-50%); }
.ze-lightbox__nav--next { inset-inline-end: var(--ze-space-6); inset-block-start: 50%; transform: translateY(-50%); }
.ze-lightbox__close:hover, .ze-lightbox__nav:hover { background: rgba(255, 255, 255, .26); }
body.ze-lightbox-open { overflow: hidden; }

/* Timeline --------------------------------------------------------------- */
.ze-timeline { position: relative; display: grid; gap: var(--ze-space-10); padding-inline-start: var(--ze-space-10); }
.ze-timeline::before {
  content: ''; position: absolute; inset-block: var(--ze-space-2) var(--ze-space-2);
  inset-inline-start: 11px; inline-size: 2px; background: var(--ze-accent-line);
}
.ze-timeline__item { position: relative; display: grid; gap: var(--ze-space-2); }
.ze-timeline__item::before {
  content: ''; position: absolute; inset-inline-start: calc(-1 * var(--ze-space-10) + 5px);
  inset-block-start: 6px; inline-size: 14px; block-size: 14px; border-radius: 50%;
  background: var(--ze-color-surface); border: 3px solid var(--ze-color-primary-500);
}
.ze-timeline__when { font-size: var(--ze-fs-xs); letter-spacing: .1em; text-transform: uppercase; font-weight: var(--ze-fw-semibold); color: var(--ze-color-primary-600); }
.ze-timeline__what { font-size: var(--ze-fs-h4); font-weight: var(--ze-fw-semibold); }
.ze-timeline__body { color: var(--ze-color-text-secondary); line-height: 1.7; max-inline-size: 70ch; }

/* Values grid ------------------------------------------------------------ */
.ze-values { display: grid; gap: var(--ze-space-5); grid-template-columns: minmax(0, 1fr); }
@media (min-width: 640px) { .ze-values { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .ze-values { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.ze-value {
  padding: var(--ze-space-8); border-radius: 8px;
  background: var(--ze-color-surface); border: 1px solid var(--ze-color-border-subtle);
  border-block-start: 3px solid var(--ze-color-primary-500);
  display: grid; gap: var(--ze-space-3); align-content: start;
}
.ze-value h3 { font-size: var(--ze-fs-h4); font-weight: var(--ze-fw-semibold); }
.ze-value p { color: var(--ze-color-text-secondary); line-height: 1.7; }

/* News cards ------------------------------------------------------------- */
.ze-news-grid { display: grid; gap: var(--ze-space-6); grid-template-columns: minmax(0, 1fr); }
@media (min-width: 640px) { .ze-news-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .ze-news-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.ze-news-card {
  display: flex; flex-direction: column; overflow: hidden;
  border: 1px solid var(--ze-color-border); border-radius: 8px; background: var(--ze-color-surface);
  text-decoration: none; color: inherit;
  transition: transform .35s var(--ze-ease), box-shadow .35s var(--ze-ease), border-color .35s var(--ze-ease);
}
.ze-news-card:hover { transform: translateY(-4px); box-shadow: var(--ze-shadow-lift); border-color: var(--ze-color-primary-300); }
.ze-news-card__media { aspect-ratio: 16 / 10; overflow: hidden; background: var(--ze-color-surface-sunken); }
.ze-news-card__media img { inline-size: 100%; block-size: 100%; object-fit: cover; display: block; transition: transform .6s var(--ze-ease); }
.ze-news-card:hover .ze-news-card__media img { transform: scale(1.06); }
.ze-news-card__body { padding: var(--ze-space-6); display: grid; gap: var(--ze-space-3); flex: 1; }
.ze-news-card__meta { font-family: var(--ze-font-mono); font-size: var(--ze-fs-xs); color: var(--ze-color-text-muted); display: flex; gap: var(--ze-space-3); flex-wrap: wrap; }
.ze-news-card__title { font-size: var(--ze-fs-h4); font-weight: var(--ze-fw-semibold); line-height: 1.4; }
.ze-news-card__excerpt { color: var(--ze-color-text-secondary); line-height: 1.65; font-size: var(--ze-fs-sm); }
.ze-news-card__more { color: var(--ze-color-link); font-size: var(--ze-fs-sm); font-weight: var(--ze-fw-semibold); display: inline-flex; align-items: center; gap: var(--ze-space-2); margin-block-start: auto; }

/* Article prose ---------------------------------------------------------- */
.ze-article { display: grid; gap: var(--ze-space-10); grid-template-columns: minmax(0, 1fr); }
@media (min-width: 1000px) { .ze-article { grid-template-columns: minmax(0, 1fr) 240px; gap: var(--ze-space-16); } }
.ze-prose { max-inline-size: 74ch; font-size: var(--ze-fs-body); line-height: var(--ze-lh-relaxed); }
.ze-prose > p { margin-block: 0 var(--ze-space-6); color: var(--ze-color-text-secondary); }
.ze-prose h2 { font-size: var(--ze-fs-h3); margin-block: var(--ze-space-12) var(--ze-space-4); padding-inline-start: var(--ze-space-4); border-inline-start: 3px solid var(--ze-color-primary-500); }
.ze-prose ul { margin-block: 0 var(--ze-space-8); padding-inline-start: var(--ze-space-6); display: grid; gap: var(--ze-space-3); color: var(--ze-color-text-secondary); }
.ze-prose li { padding-inline-start: var(--ze-space-2); }
.ze-prose li::marker { color: var(--ze-color-primary-500); }
.ze-prose strong, .ze-prose b { color: var(--ze-color-text); }
.ze-prose em { color: var(--ze-color-text); }
.ze-prose bdi { font-family: var(--ze-font-mono); font-size: .95em; }
.ze-aside { align-self: start; position: sticky; inset-block-start: var(--ze-space-8); display: grid; gap: var(--ze-space-5); }
.ze-aside__card { padding: var(--ze-space-6); border-radius: 8px; background: var(--ze-color-surface-alt); border: 1px solid var(--ze-color-border-subtle); display: grid; gap: var(--ze-space-3); }
.ze-aside__card h3 { font-size: var(--ze-fs-h5); font-weight: var(--ze-fw-semibold); }
.ze-aside__card p, .ze-aside__card a { font-size: var(--ze-fs-sm); line-height: 1.6; color: var(--ze-color-text-secondary); }
.ze-article__hero { border-radius: 10px; overflow: hidden; box-shadow: var(--ze-shadow-lift); margin-block-end: var(--ze-space-10); }
.ze-article__hero img { display: block; inline-size: 100%; block-size: auto; }

/* Resource list ---------------------------------------------------------- */
.ze-resources { display: grid; gap: var(--ze-space-4); }
.ze-resource {
  display: grid; gap: var(--ze-space-2) var(--ze-space-8); align-items: center;
  grid-template-columns: minmax(0, 1fr) auto;
  padding: var(--ze-space-6); border: 1px solid var(--ze-color-border); border-radius: 8px;
  background: var(--ze-color-surface); text-decoration: none; color: inherit;
  transition: border-color .3s var(--ze-ease), transform .3s var(--ze-ease), box-shadow .3s var(--ze-ease);
}
.ze-resource:hover { border-color: var(--ze-color-primary-400); transform: translateY(-2px); box-shadow: var(--ze-shadow-lift); }
.ze-resource__kicker { font-size: var(--ze-fs-xs); letter-spacing: .1em; text-transform: uppercase; color: var(--ze-color-primary-600); font-weight: var(--ze-fw-semibold); }
.ze-resource__title { font-size: var(--ze-fs-h4); font-weight: var(--ze-fw-semibold); }
.ze-resource__desc { color: var(--ze-color-text-secondary); font-size: var(--ze-fs-sm); line-height: 1.6; }
.ze-resource__go { color: var(--ze-color-link); display: inline-flex; align-items: center; gap: var(--ze-space-2); font-weight: var(--ze-fw-semibold); font-size: var(--ze-fs-sm); white-space: nowrap; }
@media (max-width: 560px) { .ze-resource { grid-template-columns: minmax(0, 1fr); } }

/* Legal ------------------------------------------------------------------ */
.p-legal__body { max-inline-size: 78ch; }
.p-legal__block { padding-block-end: var(--ze-space-8); border-block-end: 1px solid var(--ze-color-border-subtle); }
.p-legal__block:last-child { border-block-end: 0; }
.p-legal__block h2 { font-size: var(--ze-fs-h4); margin-block-end: var(--ze-space-3); }
.p-legal__block p { line-height: var(--ze-lh-relaxed); color: var(--ze-color-text-secondary); }

/* Back to top ------------------------------------------------------------ */
.ze-totop {
  position: fixed; inset-block-end: calc(var(--ze-space-6) + 56px); inset-inline-end: var(--ze-space-6);
  z-index: 80; inline-size: 44px; block-size: 44px; border-radius: 999px; border: 1px solid var(--ze-color-border);
  background: var(--ze-color-surface); color: var(--ze-color-primary-700); cursor: pointer;
  display: grid; place-items: center; box-shadow: var(--ze-shadow-lift);
  opacity: 0; visibility: hidden; transform: translateY(10px);
  transition: opacity .3s var(--ze-ease), transform .3s var(--ze-ease), visibility .3s;
}
.ze-totop.is-visible { opacity: 1; visibility: visible; transform: none; }
.ze-totop:hover { background: var(--ze-color-primary-50); }

/* Sticky bar ------------------------------------------------------------- */
.c-stickybar__item { transition: background .25s var(--ze-ease); }

/* RTL -------------------------------------------------------------------- */
[dir="rtl"] .ze-timeline { padding-inline-start: 0; padding-inline-end: var(--ze-space-10); }
[dir="rtl"] .ze-timeline::before { inset-inline-start: auto; inset-inline-end: 11px; }
[dir="rtl"] .ze-timeline__item::before { inset-inline-start: auto; inset-inline-end: calc(-1 * var(--ze-space-10) + 5px); }
[dir="rtl"] .ze-prose h2 { padding-inline-start: 0; padding-inline-end: var(--ze-space-4); border-inline-start: 0; border-inline-end: 3px solid var(--ze-color-primary-500); }
[dir="rtl"] .ze-lightbox__nav--prev { inset-inline-start: var(--ze-space-6); inset-inline-end: auto; }
[dir="rtl"] .ze-lightbox__nav--next { inset-inline-end: var(--ze-space-6); inset-inline-start: auto; }
[dir="rtl"] .ze-totop { inset-inline-end: auto; inset-inline-start: var(--ze-space-6); }

/* Focus ------------------------------------------------------------------ */
.ze-gallery__item:focus-visible, .ze-news-card:focus-visible, .ze-resource:focus-visible,
.ze-totop:focus-visible { outline: 3px solid var(--ze-color-focus); outline-offset: 3px; }

/* Print ------------------------------------------------------------------ */
@media print {
  .ze-progress, .ze-totop, .ze-lightbox, .c-stickybar, .c-nav__cta { display: none !important; }
  .ze-ready .ze-reveal { opacity: 1 !important; transform: none !important; }
}
