:root {
  /* palette — raw scale */
  --c-forest-900: #0f1f16;
  --c-forest-800: #14261a;
  --c-forest-700: #1f3d28;
  --c-forest-600: #28492f;
  --c-ink: #15201c;
  --c-olive-700: #63791f;
  --c-olive-500: #8ba33e;
  --c-olive-400: #9cb655;
  --c-olive-100: #dbe6ae;
  --c-bone-100: #f5f2e6;
  --c-bone-200: #ece6d3;
  --c-sage-200: #dee3ca;
  --c-white: #ffffff;

  /* palette — semantic roles */
  --color-bg: var(--c-bone-100);
  --color-bg-alt: var(--c-bone-200);
  --color-bg-sage: var(--c-sage-200);
  --color-bg-dark: var(--c-forest-800);
  --color-bg-dark-deep: var(--c-forest-900);
  --color-surface-dark: var(--c-forest-600);
  --color-surface-dark-2: var(--c-forest-700);

  --color-text: var(--c-ink);
  --color-text-muted: #5c6455;
  --color-text-on-dark: var(--c-white);
  --color-text-muted-on-dark: rgba(245, 242, 230, 0.72);

  --color-heading: var(--c-forest-700);
  --color-heading-on-dark: var(--c-white);

  --color-accent: var(--c-olive-500);
  --color-accent-hover: var(--c-olive-400);
  --color-accent-strong: var(--c-olive-700);
  --color-accent-tint: var(--c-olive-100);

  --color-border: rgba(21, 32, 24, 0.14);
  --color-border-dark: rgba(255, 255, 255, 0.18);

  /* type */
  --font-serif: "Newsreader", Georgia, serif;
  --font-sans: "Manrope", sans-serif;
  --font-mono: "DM Mono", monospace;

  /* layout */
  --wrap: min(1280px, calc(100% - 48px));
  --gutter: clamp(20px, 3vw, 32px);
  --radius-sm: 14px;
  --radius-md: 20px;
  --radius-lg: 28px;
  --radius-pill: 999px;

  /* motion */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);

  /* elevation */
  --shadow-md: 0 24px 48px -24px rgba(15, 31, 22, 0.35);
  --shadow-lg: 0 40px 80px -32px rgba(15, 31, 22, 0.42);

  /* stacking */
  --z-grain: 60;
  --z-cursor: 80;
  --z-progress: 70;
  --z-nav: 40;
  --z-nav-mobile: 39;
  --z-whatsapp: 30;
}

@media (max-width: 760px) {
  :root {
    --wrap: min(100% - 32px, 1280px);
  }
}
