/* ============================================================
   MODULE — Design Tokens
   The single source of truth for color, type, space, radii,
   elevation and motion. Import this first on every surface
   (website, invoices, marketing) then layer component styles.
   ============================================================ */

:root {
  /* ---- Brand: Azure (primary) ---- */
  --azure-50:  #EAF4FF;
  --azure-100: #D0E6FF;
  --azure-200: #A6CFFF;
  --azure-300: #74B2FF;
  --azure-400: #4FA8FF;
  --azure-500: #3B9EFF;   /* primary */
  --azure-600: #2E7FE0;
  --azure-700: #2463B4;
  --azure-800: #1E4C8A;
  --azure-900: #173A69;

  /* ---- Brand: Rose (accent — the "dislocated module") ---- */
  --rose-50:  #FFEAF1;
  --rose-100: #FFD0DF;
  --rose-200: #FFA8C2;
  --rose-300: #FF7DA3;
  --rose-400: #FF5C8A;    /* accent */
  --rose-500: #F23D72;
  --rose-600: #D12A5C;

  /* ---- Neutrals: Ink / Slate ---- */
  --ink-0:   #FFFFFF;
  --ink-25:  #F8FAFC;
  --ink-50:  #F4F6FA;
  --ink-100: #E8ECF3;
  --ink-200: #D4DBE6;
  --ink-300: #B3BECF;
  --ink-400: #8C99AE;
  --ink-500: #677488;
  --ink-600: #4B5567;
  --ink-700: #333C4D;
  --ink-800: #1E2533;
  --ink-900: #111729;
  --ink-950: #080B14;

  /* ---- Surfaces ---- */
  --surface-base:    var(--ink-950);   /* primary dark canvas */
  --surface-raised:  var(--ink-900);
  --surface-overlay: #141B2D;
  --surface-light:   var(--ink-0);
  --surface-light-2: var(--ink-50);

  /* ---- Semantic ---- */
  --success: #2FB98A;
  --success-soft: #133b30;
  --warning: #FFB22E;
  --warning-soft: #3d2f12;
  --danger:  #FF5C5C;
  --danger-soft: #3d1717;
  --info:    var(--azure-500);

  /* ---- Foreground (on dark) ---- */
  --fg-1: #EAF4FF;   /* primary text */
  --fg-2: #A9B6CC;   /* secondary */
  --fg-3: #6B788F;   /* tertiary / captions */
  --fg-line: rgba(150,170,200,0.14);  /* hairline borders on dark */

  /* ---- Foreground (on light) ---- */
  --fgl-1: #111729;
  --fgl-2: #4B5567;
  --fgl-3: #8C99AE;
  --fgl-line: rgba(20,30,50,0.10);

  /* ---- Type families ---- */
  --font-display: 'Jost', system-ui, sans-serif;     /* wordmark, display, headings */
  --font-body:    'Hanken Grotesk', system-ui, sans-serif; /* UI + body copy */
  --font-mono:    'IBM Plex Mono', ui-monospace, monospace; /* data, code, invoice figures */

  /* ---- Type scale (fluid-ish, rem) ---- */
  --t-display: 72px;   --t-display-lh: 1.02; --t-display-ls: -0.02em;
  --t-h1: 48px;        --t-h1-lh: 1.06;      --t-h1-ls: -0.015em;
  --t-h2: 34px;        --t-h2-lh: 1.12;      --t-h2-ls: -0.01em;
  --t-h3: 24px;        --t-h3-lh: 1.2;       --t-h3-ls: -0.005em;
  --t-h4: 19px;        --t-h4-lh: 1.3;       --t-h4-ls: 0;
  --t-body: 16px;      --t-body-lh: 1.6;
  --t-small: 14px;     --t-small-lh: 1.55;
  --t-caption: 12px;   --t-caption-lh: 1.4;  --t-caption-ls: 0.06em;
  --t-eyebrow-ls: 0.18em;

  /* ---- Spacing (4px base) ---- */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 48px;
  --space-8: 64px;
  --space-9: 96px;
  --space-10: 128px;

  /* ---- Radii ---- */
  --radius-xs: 4px;
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 24px;
  --radius-pill: 999px;

  /* ---- Elevation (light surfaces) ---- */
  --shadow-1: 0 1px 2px rgba(17,23,41,0.06), 0 1px 3px rgba(17,23,41,0.05);
  --shadow-2: 0 2px 6px rgba(17,23,41,0.06), 0 6px 16px rgba(17,23,41,0.07);
  --shadow-3: 0 8px 24px rgba(17,23,41,0.10), 0 16px 48px rgba(17,23,41,0.10);
  /* Glow — reserved, used sparingly for the mark / focus on dark */
  --glow-azure: 0 0 0 1px rgba(59,158,255,0.4), 0 0 24px rgba(59,158,255,0.25);
  --glow-rose:  0 0 24px rgba(255,92,138,0.30);

  /* ---- Motion ---- */
  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-fast: 120ms;
  --dur-base: 200ms;
  --dur-slow: 360ms;

  /* ---- Layout ---- */
  --container: 1200px;
  --container-narrow: 760px;
}

/* ============================================================
   Base element mapping — semantic defaults on a dark canvas.
   Surfaces that are light should set .on-light (see below).
   ============================================================ */

.ds-eyebrow {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: var(--t-caption);
  letter-spacing: var(--t-eyebrow-ls);
  text-transform: uppercase;
  color: var(--azure-400);
}

.ds-display {
  font-family: var(--font-display);
  font-weight: 300;
  font-size: var(--t-display);
  line-height: var(--t-display-lh);
  letter-spacing: var(--t-display-ls);
}

h1, .ds-h1 { font-family: var(--font-display); font-weight: 400; font-size: var(--t-h1); line-height: var(--t-h1-lh); letter-spacing: var(--t-h1-ls); }
h2, .ds-h2 { font-family: var(--font-display); font-weight: 400; font-size: var(--t-h2); line-height: var(--t-h2-lh); letter-spacing: var(--t-h2-ls); }
h3, .ds-h3 { font-family: var(--font-display); font-weight: 500; font-size: var(--t-h3); line-height: var(--t-h3-lh); letter-spacing: var(--t-h3-ls); }
h4, .ds-h4 { font-family: var(--font-body); font-weight: 600; font-size: var(--t-h4); line-height: var(--t-h4-lh); }

p, .ds-body { font-family: var(--font-body); font-weight: 400; font-size: var(--t-body); line-height: var(--t-body-lh); }
.ds-small { font-family: var(--font-body); font-size: var(--t-small); line-height: var(--t-small-lh); }
.ds-caption { font-family: var(--font-body); font-size: var(--t-caption); line-height: var(--t-caption-lh); letter-spacing: 0.02em; }
.ds-mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
