:root {
  /* Brand */
  --fs-color-primary: #0D9488;
  --fs-color-primary-light: #14B8A6;
  --fs-color-primary-dark: #0F766E;
  --fs-color-primary-surface: #F0FDFA;

  /* Accent */
  --fs-color-accent: #D4A017;
  --fs-color-accent-light: #E8C547;

  /* Semantic */
  --fs-color-success: #16A34A;
  --fs-color-success-surface: #F0FDF4;
  --fs-color-warning: #D97706;
  --fs-color-warning-surface: #FFFBEB;
  --fs-color-error: #DC2626;
  --fs-color-error-surface: #FEF2F2;

  /* Neutral */
  --fs-color-text: #1A1A2E;
  --fs-color-text-muted: #6B7280;
  --fs-color-text-inverse: #FFFFFF;
  --fs-color-surface: #FFFFFF;
  --fs-color-surface-raised: #F9FAFB;
  --fs-color-surface-sunken: #F3F4F6;
  --fs-color-border: #E5E7EB;
  --fs-color-border-strong: #D1D5DB;

  /* Overlay */
  --fs-color-backdrop: rgba(0, 0, 0, 0.5);

  /* Font families */
  --fs-font-body: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --fs-font-heading: var(--fs-font-body);
  --fs-font-mono: 'SF Mono', 'Cascadia Code', 'Consolas', monospace;

  /* Font sizes — modular scale 1.2 */
  --fs-text-xs: 0.694rem;    /* 11px */
  --fs-text-sm: 0.833rem;    /* 13px */
  --fs-text-base: 1rem;      /* 16px */
  --fs-text-md: 1.2rem;      /* 19px */
  --fs-text-lg: 1.44rem;     /* 23px */
  --fs-text-xl: 1.728rem;    /* 28px */
  --fs-text-2xl: 2.074rem;   /* 33px */
  --fs-text-3xl: 2.488rem;   /* 40px */

  /* Line heights */
  --fs-leading-tight: 1.2;
  --fs-leading-normal: 1.5;
  --fs-leading-relaxed: 1.75;

  /* Font weights */
  --fs-weight-normal: 400;
  --fs-weight-medium: 500;
  --fs-weight-bold: 700;

  /* Spacing scale — based on 0.25rem (4px) */
  --fs-space-2xs: 0.25rem;   /* 4px */
  --fs-space-xs: 0.5rem;     /* 8px */
  --fs-space-sm: 0.75rem;    /* 12px */
  --fs-space-md: 1rem;       /* 16px */
  --fs-space-lg: 1.5rem;     /* 24px */
  --fs-space-xl: 2rem;       /* 32px */
  --fs-space-2xl: 3rem;      /* 48px */
  --fs-space-3xl: 4rem;      /* 64px */

  /* Border radius */
  --fs-radius-sm: 0.375rem;  /* 6px */
  --fs-radius-md: 0.5rem;    /* 8px */
  --fs-radius-lg: 0.75rem;   /* 12px */
  --fs-radius-xl: 1rem;      /* 16px */
  --fs-radius-full: 9999px;

  /* Shadows */
  --fs-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
  --fs-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.07), 0 2px 4px -2px rgba(0, 0, 0, 0.05);
  --fs-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.05);
  --fs-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.05);

  --fs-duration-fast: 150ms;
  --fs-duration-normal: 250ms;
  --fs-duration-slow: 400ms;
  --fs-easing-default: cubic-bezier(0.4, 0, 0.2, 1);
  --fs-easing-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
}

@media (prefers-color-scheme: dark) {
  :root {
    --fs-color-text: #F3F4F6;
    --fs-color-text-muted: #9CA3AF;
    --fs-color-text-inverse: #1A1A2E;
    --fs-color-surface: #111827;
    --fs-color-surface-raised: #1F2937;
    --fs-color-surface-sunken: #0D1117;
    --fs-color-border: #374151;
    --fs-color-border-strong: #4B5563;
    --fs-color-primary-surface: #042F2E;
    --fs-color-success-surface: #052E16;
    --fs-color-warning-surface: #451A03;
    --fs-color-error-surface: #450A0A;
  }
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --fs-duration-fast: 0ms;
    --fs-duration-normal: 0ms;
    --fs-duration-slow: 0ms;
  }
}
