:root {
  /* Colour */
  --ne-color-ink: #05070B;
  --ne-color-charcoal: #111827;
  --ne-color-text: #101828;
  --ne-color-muted: #667085;
  --ne-color-line: #D0D5DD;
  --ne-color-canvas: #FFFFFF;
  --ne-color-soft: #F7F9FC;
  --ne-color-reading: #FCFCFD;
  --ne-color-editorial-ink: #0B1220;
  --ne-color-editorial-blue-soft: #EAF0FF;
  --ne-color-accent: #1B4DFF;
  --ne-color-accent-hover: #123ACC;
  --ne-color-focus: #84ADFF;
  --ne-color-success: #087443;
  --ne-color-warning: #B54708;
  --ne-color-danger: #B42318;
  --ne-color-on-dark: #F7F9FC;
  --ne-color-muted-on-dark: #C5CCD8;
  --ne-color-subtle-on-dark: #AAB4C3;

  /* Typography */
  /* "Manrope Local" remains the Elementor family name; the plugin adapter
     rewrites its source to the version-controlled binaries. It must lead every
     stack: a bare "Manrope" matches no @font-face and no system font. */
  --ne-font-display: "Manrope Local", Manrope, Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --ne-font-body: "Manrope Local", Manrope, Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --ne-font-editorial: "Manrope Local", Manrope, Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --ne-font-utility: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;

  --ne-text-meta: clamp(0.8125rem, 0.78rem + 0.16vw, 0.9375rem);
  --ne-text-body: clamp(1rem, 0.96rem + 0.2vw, 1.125rem);
  --ne-text-lead: clamp(1.125rem, 1.02rem + 0.48vw, 1.5rem);
  --ne-text-h3: clamp(1.375rem, 1.15rem + 1vw, 2.125rem);
  --ne-text-h2: clamp(1.75rem, 1.3rem + 2vw, 3.25rem);
  --ne-text-h1: clamp(2.25rem, 1.55rem + 3.1vw, 4.5rem);
  --ne-text-display: clamp(2.75rem, 1.9rem + 4vw, 5.5rem);
  --ne-text-article: clamp(1.0625rem, 1.02rem + 0.2vw, 1.1875rem);
  --ne-text-article-small: clamp(0.9375rem, 0.91rem + 0.12vw, 1rem);
  --ne-text-editorial-display: clamp(2.75rem, 1.72rem + 4.35vw, 5.75rem);

  --ne-leading-heading: 1.1;
  --ne-leading-body: 1.6;
  --ne-leading-article: 1.78;

  /* Only 400/500/600 static faces are hosted. Any declared weight above 600
     resolves to the 600 face, so the scale below is the honest palette. */
  --ne-weight-regular: 400;
  --ne-weight-medium: 500;
  --ne-weight-strong: 600;

  /* Rule weights: hairline divides, emphasis separates, marker opens a module. */
  --ne-rule-hairline: 1px;
  --ne-rule-emphasis: 2px;
  --ne-rule-marker: 4px;

  /* Spacing */
  --ne-space-1: 0.25rem;
  --ne-space-2: 0.5rem;
  --ne-space-3: 0.75rem;
  --ne-space-4: 1rem;
  --ne-space-6: 1.5rem;
  --ne-space-8: 2rem;
  --ne-space-12: 3rem;
  --ne-space-16: 4rem;
  --ne-space-24: 6rem;

  /* Containers */
  --ne-content-reading: 48.75rem;
  --ne-content-reading-copy: 46rem;
  --ne-content-default: 75rem;
  --ne-content-editorial: 90rem;

  /* Shape */
  --ne-radius-sm: 0.25rem;
  --ne-radius-md: 0.5rem;
  --ne-radius-lg: 1rem;

  /* Motion */
  --ne-motion-fast: 160ms;
  --ne-motion-base: 240ms;
  --ne-ease-standard: cubic-bezier(.23,1,.32,1);
  --ne-ease-in-out: cubic-bezier(.77,0,.175,1);

  /* Responsive side padding */
  --ne-page-pad: 1.25rem;
}

@media (min-width: 48rem) {
  :root { --ne-page-pad: 2rem; }
}

@media (min-width: 64rem) {
  :root { --ne-page-pad: clamp(2.5rem, 4vw, 4rem); }
}

.ne-container {
  width: min(calc(100% - (2 * var(--ne-page-pad))), var(--ne-content-default));
  margin-inline: auto;
}

.ne-container--editorial {
  width: min(calc(100% - (2 * var(--ne-page-pad))), var(--ne-content-editorial));
  margin-inline: auto;
}

.ne-reading-column {
  width: min(100%, var(--ne-content-reading));
}

.ne-focus-ring:focus-visible {
  outline: 2px solid var(--ne-color-ink);
  box-shadow: 0 0 0 4px var(--ne-color-focus);
  outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
