:root {
  /* Corporate Identity: single source of truth for frontend components. */
  --zmw-color-primary: #FAD81E;
  --zmw-color-primary-soft: #FFF3A6;
  --zmw-color-primary-hover: #FFE96B;
  --zmw-color-primary-border: #C8AB00;
  --zmw-color-ink: #171714;
  --zmw-color-muted: #666357;
  --zmw-color-text-soft: #464640;
  --zmw-color-line: #D1D1CD;
  --zmw-color-background: #FFFFFF;
  --zmw-color-surface: #F2F2F0;
  --zmw-color-surface-strong: #E7E7E4;
  --zmw-color-on-dark: #FFFFFF;
  --zmw-color-on-dark-muted: #D8D7D0;
  --zmw-color-error: #8B0000;
  --zmw-color-ink-translucent: rgba(23, 23, 20, .22);

  --zmw-shadow-soft: 0 4px 18px rgba(0, 0, 0, .18);
  --zmw-shadow-offset: -9px 9px 0 rgba(0, 0, 0, .08);

  --zmw-font-sans: "Roboto", Arial, Helvetica, sans-serif;
  --zmw-font-serif: "Inria Serif", Georgia, "Times New Roman", serif;

  --zmw-container-max: 82.5rem;
  --zmw-page-gutter: clamp(1rem, 2.2vw, 1.75rem);
  --zmw-lead-max: 56rem;
  --zmw-mobile-section-gap: 2rem;
  --zmw-layout-gutter: var(--zmw-page-gutter);
  --zmw-layout-max: var(--zmw-container-max);

  --zmw-space-2xs: .25rem;
  --zmw-space-xs: .5rem;
  --zmw-space-sm: .75rem;
  --zmw-space-md: 1rem;
  --zmw-space-lg: 1.5rem;
  --zmw-space-xl: 2.25rem;
  --zmw-space-2xl: 3rem;
  --zmw-space-3xl: 4.5rem;
  --zmw-space-section: clamp(3rem, 6vw, 6rem);

  --zmw-radius-sm: .25rem;
  --zmw-motion-fast: 180ms;
}

/* Global layout contract. Every ZM Elementor widget is either a full-width
 * composition with one of these inner containers or a standalone
 * .zmw-editorial-shell. The visible content edge is therefore identical across
 * homepage, articles, categories, offer/contact, hubs and landing pages. */
:where(
  .zmw-container,
  .zmw-editorial-shell,
  .zmw-page-widget__container,
  .zmw-hub-page__container,
  .zmw-guide-landing__container
) {
  width: min(
    calc(100% - var(--zmw-layout-gutter) - var(--zmw-layout-gutter)),
    var(--zmw-layout-max)
  );
  margin-inline: auto;
  min-width: 0;
  box-sizing: border-box;
}

/* Horizontal spacing belongs to the ZM design system, not to per-instance
 * Elementor Advanced settings. Neutralise only the horizontal wrapper offsets
 * on the public frontend; vertical spacing controls remain untouched. */
body:not(.elementor-editor-active) .elementor-widget[class*="elementor-widget-zmw-"] {
  margin-inline: 0 !important;
  padding-inline: 0 !important;
}

body:not(.elementor-editor-active) .elementor-widget[class*="elementor-widget-zmw-"] > .elementor-widget-container {
  margin-inline: 0 !important;
  padding-inline: 0 !important;
}

/* Do not create a second gutter when a reusable widget is rendered inside a
 * complete ZM page/template widget. */
:where(
  .zmw-container,
  .zmw-page-widget__container,
  .zmw-hub-page__container,
  .zmw-guide-landing__container
) .zmw-editorial-shell {
  width: 100%;
  margin-inline: 0;
}

.zmw-sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.zmw-kicker {
  font: 800 .72rem/1.25 var(--zmw-font-sans);
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--zmw-color-muted);
}

/* SVG-only arrows: one geometry everywhere, no Unicode/emoji fallback. */
.zmw-arrow {
  display: inline-block;
  flex: 0 0 auto;
  width: .86rem;
  height: .5rem;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.4;
  stroke-linecap: square;
  stroke-linejoin: miter;
  vertical-align: middle;
}

.zmw-arrow--horizontal.zmw-arrow--back { transform: rotate(180deg); }

.zmw-arrow--diagonal {
  width: .72rem;
  height: .72rem;
  stroke-width: 1.35;
}

.zmw-arrow--before { margin-right: .38rem; }
.zmw-arrow--after { margin-left: .38rem; }

.zmw-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.75rem;
  padding: .7rem 1rem;
  border: 1px solid var(--zmw-color-ink);
  background: var(--zmw-color-primary);
  color: var(--zmw-color-ink);
  font: 800 .78rem/1.2 var(--zmw-font-sans);
  text-decoration: none;
  transition: transform var(--zmw-motion-fast) ease, background-color var(--zmw-motion-fast) ease;
}

.zmw-button:hover {
  transform: translateY(-1px);
  background: var(--zmw-color-primary-hover);
}

.zmw-button--dark {
  background: var(--zmw-color-ink);
  color: var(--zmw-color-on-dark);
}

.zmw-button--outline {
  background: transparent;
}

.zmw-empty-state {
  padding: var(--zmw-space-md);
  border: 1px dashed var(--zmw-color-line);
  color: var(--zmw-color-muted);
}

.zmw-richtext > *:first-child { margin-top: 0; }
.zmw-richtext > *:last-child { margin-bottom: 0; }

[class^="zmw-"] a:focus-visible,
[class*=" zmw-"] a:focus-visible,
[class^="zmw-"] button:focus-visible,
[class*=" zmw-"] button:focus-visible,
[class^="zmw-"] input:focus-visible,
[class*=" zmw-"] input:focus-visible,
[class^="zmw-"] select:focus-visible,
[class*=" zmw-"] select:focus-visible,
[class^="zmw-"] textarea:focus-visible,
[class*=" zmw-"] textarea:focus-visible {
  outline: 3px solid var(--zmw-color-ink);
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  [class^="zmw-"] *,
  [class*=" zmw-"] * {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

/* Shared interactive states used by every ZM view. */
.zmw-button:active { transform: translateY(0); }
.zmw-button--dark:hover {
  background: var(--zmw-color-ink);
  color: var(--zmw-color-on-dark);
}
.zmw-button--outline:hover { background: var(--zmw-color-primary-soft); }
.zmw-button[aria-disabled="true"],
.zmw-button:disabled {
  opacity: .45;
  cursor: not-allowed;
  pointer-events: none;
  transform: none;
}

/* Elementor/Hello Theme CI compatibility: keep the accessibility skip link in ZM branding. */
body a.skip-link.screen-reader-text,
body a.skip-link.screen-reader-text:visited {
  color: var(--zmw-color-ink);
  background-color: var(--zmw-color-primary);
  text-decoration: none;
}

body a.skip-link.screen-reader-text:hover,
body a.skip-link.screen-reader-text:focus,
body a.skip-link.screen-reader-text:focus-visible {
  color: var(--zmw-color-ink);
  background-color: var(--zmw-color-primary-hover);
  outline: 3px solid var(--zmw-color-ink);
  outline-offset: 3px;
}

/* Shared vertical rhythm for standalone widgets that visually belong to the
 * single-article editorial flow. This mirrors .zmw-article-template__author,
 * __related and __cta without requiring the widget to live inside the template. */
.zmw-article-parity-section {
  margin-top: clamp(2.5rem, 6vw, 5rem);
}
