/* =========================================================================
   DESIGN TOKENS
   Everything visual (color, type, spacing, radius, shadow) lives here.
   Change a value and the whole site follows.
   ========================================================================= */

:root {
  /* ---------- BRAND COLOR (CartographAI) ---------- */
  --navy: #0D1B4B;
  --navy-800: #16225A;
  --navy-600: #2A3775;
  --navy-400: #6B77A8;
  --navy-200: #C4CADD;
  --navy-100: #E4E7F1;

  --cyan: #00D4D4;
  --cyan-600: #00B0B0;
  --cyan-100: #CCF6F6;
  --cyan-50:  #E8FBFB;

  --white: #FFFFFF;
  --off-white: #FBFBFD;
  --light-gray: #F5F6FA;
  --border-gray: #E3E5EE;
  --muted-gray: #6E7391;
  --text-gray: #2F3350;

  --success: #1F9D6B;
  --warn:    #C57A00;
  --danger:  #C0392B;

  /* ---------- SEMANTIC COLORS (use these in components) ---------- */
  --bg-page: var(--white);
  --bg-panel: var(--off-white);
  --bg-panel-alt: var(--light-gray);
  --bg-dark: var(--navy);
  --bg-dark-alt: var(--navy-800);

  --text-primary: var(--navy);
  --text-body: var(--text-gray);
  --text-muted: var(--muted-gray);
  --text-inverse: var(--white);
  --text-accent: var(--cyan-600);

  --border: var(--border-gray);
  --border-strong: var(--navy-200);

  --accent: var(--cyan);
  --accent-hover: var(--cyan-600);

  /* ---------- TYPOGRAPHY ---------- */
  /* System font stack — no external font requests, instant load. Swap the
     value of --font-sans below if you want to switch to a webfont later. */
  --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Inter",
               Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-serif: "Charter", "Iowan Old Style", "Palatino Linotype",
                "Palatino", Georgia, serif;
  --font-mono: "SF Mono", "Menlo", "Consolas", monospace;

  /* Fluid type scale — clamp(min, preferred, max). Grows with viewport. */
  --fs-xs:   clamp(0.75rem, 0.72rem + 0.15vw, 0.85rem);
  --fs-sm:   clamp(0.875rem, 0.85rem + 0.15vw, 0.95rem);
  --fs-base: clamp(1rem, 0.96rem + 0.2vw, 1.125rem);
  --fs-lg:   clamp(1.125rem, 1.08rem + 0.25vw, 1.25rem);
  --fs-xl:   clamp(1.375rem, 1.25rem + 0.6vw, 1.625rem);
  --fs-2xl:  clamp(1.75rem, 1.5rem + 1vw, 2.25rem);
  --fs-3xl:  clamp(2.25rem, 1.8rem + 2vw, 3rem);
  --fs-4xl:  clamp(2.75rem, 2rem + 3vw, 4rem);
  --fs-5xl:  clamp(3.25rem, 2.2rem + 4.5vw, 5.5rem);

  --lh-tight: 1.15;
  --lh-snug:  1.3;
  --lh-body:  1.55;
  --lh-loose: 1.7;

  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;
  --fw-bold: 700;

  /* ---------- SPACING (8-point base) ---------- */
  --space-1: 0.25rem;   /* 4  */
  --space-2: 0.5rem;    /* 8  */
  --space-3: 0.75rem;   /* 12 */
  --space-4: 1rem;      /* 16 */
  --space-5: 1.5rem;    /* 24 */
  --space-6: 2rem;      /* 32 */
  --space-7: 2.5rem;    /* 40 */
  --space-8: 3rem;      /* 48 */
  --space-9: 4rem;      /* 64 */
  --space-10: 5rem;     /* 80 */
  --space-11: 6rem;     /* 96 */
  --space-12: 8rem;     /* 128 */

  /* ---------- LAYOUT ---------- */
  --content-max: 68rem;   /* main content container */
  --prose-max: 44rem;     /* reading measure — narrower for long-form */
  --gutter: clamp(1.25rem, 3vw, 3rem);

  /* ---------- RADIUS ---------- */
  --radius-sm: 4px;
  --radius: 8px;
  --radius-lg: 14px;
  --radius-xl: 24px;
  --radius-pill: 999px;

  /* ---------- SHADOW ---------- */
  --shadow-sm: 0 1px 2px rgba(13, 27, 75, 0.06);
  --shadow: 0 4px 20px rgba(13, 27, 75, 0.08);
  --shadow-lg: 0 12px 40px rgba(13, 27, 75, 0.14);
  --shadow-glow: 0 0 0 4px rgba(0, 212, 212, 0.18);

  /* ---------- MOTION ---------- */
  --ease-smooth: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
  --dur-fast: 180ms;
  --dur: 320ms;
  --dur-slow: 640ms;

  /* ---------- Z-INDEX ---------- */
  --z-base: 1;
  --z-content: 10;
  --z-overlay: 50;
  --z-modal: 100;
  --z-intro: 200;
}

/* Respect reduced-motion preference. */
@media (prefers-reduced-motion: reduce) {
  :root {
    --dur-fast: 0ms;
    --dur: 0ms;
    --dur-slow: 0ms;
  }
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
