/**
 * Vector Process Labs — Design Tokens
 * Drop this file into any VPL web project.
 * Import at the top of your main CSS file: @import url('./design_tokens.css');
 * Never hardcode hex values in component CSS — always reference these tokens.
 *
 * Last updated: 2026-03-27
 */

/* ============================================================
   GOOGLE FONTS
   Place this <link> in <head> BEFORE your stylesheet.
   Using <link> (not @import) for optimal load performance.

   <link rel="preconnect" href="https://fonts.googleapis.com">
   <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
   <link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@700&family=Inter:wght@400;500&family=JetBrains+Mono:wght@400&display=swap" rel="stylesheet">
   ============================================================ */

:root {

  /* ──────────────────────────────────────────
     COLOR — PRIMARY SURFACES
  ────────────────────────────────────────── */

  --color-navy-deep:      #0B1A2E;  /* Primary backgrounds, hero, authority surfaces */
  --color-navy-mid:       #132240;  /* Cards, elevated components, secondary surfaces */

  /* ──────────────────────────────────────────
     COLOR — BRAND BLUES
  ────────────────────────────────────────── */

  --color-electric-blue:  #1A6FFF;  /* Primary brand color — CTAs, headings, links */
  --color-bright-blue:    #4D94FF;  /* Secondary elements, hover states, chart series */
  --color-cyan-signal:    #00D4FF;  /* Accent only — key metrics, data callouts, logo node */

  /* ──────────────────────────────────────────
     COLOR — NEUTRALS
  ────────────────────────────────────────── */

  --color-white:          #FFFFFF;  /* Primary text on dark backgrounds */
  --color-off-white:      #F4F7FF;  /* Light section backgrounds */
  --color-border:         #D1DBF0;  /* Borders, dividers, subtle separators */
  --color-slate:          #8A9AB5;  /* Secondary text, captions, metadata */
  --color-text-mid:       #2C3E5A;  /* Body copy on light backgrounds */

  /* ──────────────────────────────────────────
     COLOR — SEMANTIC / STATUS
     Use sparingly. Reserve for explicit indicators.
  ────────────────────────────────────────── */

  --color-status-positive: #00C48C;  /* Positive outcome, confirmed state */
  --color-status-caution:  #F5A623;  /* Warning, pending state */
  --color-status-critical: #E84040;  /* Error, critical alert only */

  /* ──────────────────────────────────────────
     COLOR — GRADIENTS
  ────────────────────────────────────────── */

  --gradient-brand:
    linear-gradient(135deg, var(--color-electric-blue) 0%, var(--color-cyan-signal) 100%);

  --gradient-surface:
    linear-gradient(180deg, var(--color-navy-deep) 0%, var(--color-navy-mid) 100%);

  --gradient-hero-overlay:
    linear-gradient(135deg, rgba(11,26,46,0.95) 0%, rgba(26,111,255,0.15) 100%);

  /* ──────────────────────────────────────────
     TYPOGRAPHY — FONT FAMILIES
  ────────────────────────────────────────── */

  --font-display:   'Space Grotesk', system-ui, sans-serif;  /* Headings, hero, key stats */
  --font-body:      'Inter', system-ui, sans-serif;           /* Body copy, UI text */
  --font-mono:      'JetBrains Mono', 'Courier New', monospace; /* Data, code, technical values */

  /* ──────────────────────────────────────────
     TYPOGRAPHY — FONT WEIGHTS
  ────────────────────────────────────────── */

  --font-weight-regular:  400;
  --font-weight-medium:   500;
  --font-weight-bold:     700;

  /* ──────────────────────────────────────────
     TYPOGRAPHY — TYPE SCALE (fluid)
     Uses clamp(min, preferred, max) for responsive scaling.
  ────────────────────────────────────────── */

  --text-xs:    clamp(0.65rem,  0.6rem  + 0.25vw, 0.75rem);   /* Labels, metadata */
  --text-sm:    clamp(0.8rem,   0.75rem + 0.25vw, 0.9rem);    /* Captions, secondary */
  --text-base:  clamp(0.9rem,   0.85rem + 0.25vw, 1rem);      /* Body copy */
  --text-md:    clamp(1rem,     0.95rem + 0.3vw,  1.125rem);  /* Lead text, large body */
  --text-lg:    clamp(1.125rem, 1rem    + 0.5vw,  1.375rem);  /* Section intros */
  --text-xl:    clamp(1.375rem, 1.2rem  + 0.75vw, 1.875rem);  /* H3, card titles */
  --text-2xl:   clamp(1.75rem,  1.5rem  + 1vw,    2.5rem);    /* H2, section headings */
  --text-3xl:   clamp(2.25rem,  1.75rem + 2vw,    3.5rem);    /* H1, page titles */
  --text-hero:  clamp(2.75rem,  2rem    + 3vw,    5rem);      /* Hero headlines */

  /* ──────────────────────────────────────────
     TYPOGRAPHY — LINE HEIGHT
  ────────────────────────────────────────── */

  --leading-tight:   1.15;   /* Display headings */
  --leading-snug:    1.3;    /* Subheadings */
  --leading-normal:  1.55;   /* Body copy */
  --leading-relaxed: 1.75;   /* Long-form reading */

  /* ──────────────────────────────────────────
     TYPOGRAPHY — LETTER SPACING
  ────────────────────────────────────────── */

  --tracking-tight:  -0.025em;  /* Large display text */
  --tracking-normal:  0;
  --tracking-wide:    0.05em;   /* Labels, uppercase metadata */
  --tracking-wider:   0.1em;    /* All-caps tags */

  /* ──────────────────────────────────────────
     SPACING — 4pt base grid
  ────────────────────────────────────────── */

  --space-1:   0.25rem;   /*  4px */
  --space-2:   0.5rem;    /*  8px */
  --space-3:   0.75rem;   /* 12px */
  --space-4:   1rem;      /* 16px */
  --space-5:   1.25rem;   /* 20px */
  --space-6:   1.5rem;    /* 24px */
  --space-8:   2rem;      /* 32px */
  --space-10:  2.5rem;    /* 40px */
  --space-12:  3rem;      /* 48px */
  --space-16:  4rem;      /* 64px */
  --space-20:  5rem;      /* 80px */
  --space-24:  6rem;      /* 96px */
  --space-32:  8rem;      /* 128px */
  --space-40: 10rem;      /* 160px */

  /* ──────────────────────────────────────────
     LAYOUT
  ────────────────────────────────────────── */

  --container-max:    1280px;
  --container-prose:  720px;    /* Long-form content max-width */
  --container-narrow: 560px;    /* Forms, CTAs */

  --grid-gutter:      clamp(var(--space-4), 4vw, var(--space-8));

  /* ──────────────────────────────────────────
     BORDERS
  ────────────────────────────────────────── */

  --radius-sm:   2px;
  --radius-md:   4px;   /* Standard — cards, buttons */
  --radius-lg:   8px;   /* Modals, large containers */
  --radius-full: 9999px; /* Pills, badges */

  --border-default:   1px solid var(--color-border);
  --border-emphasis:  1px solid var(--color-electric-blue);
  --border-accent:    3px solid var(--color-electric-blue);  /* Left-border card treatment */

  /* ──────────────────────────────────────────
     SHADOWS
     VPL uses borders over shadows for most depth cues.
     Shadows reserved for overlapping elements (dropdowns, modals).
  ────────────────────────────────────────── */

  --shadow-sm:  0 1px 3px rgba(0, 0, 0, 0.3);
  --shadow-md:  0 4px 16px rgba(0, 0, 0, 0.4);
  --shadow-lg:  0 8px 32px rgba(0, 0, 0, 0.5);

  --glow-blue:  0 0 24px rgba(26, 111, 255, 0.35);   /* Electric blue glow for CTAs */
  --glow-cyan:  0 0 16px rgba(0, 212, 255, 0.4);     /* Cyan glow for accent elements */

  /* ──────────────────────────────────────────
     TRANSITIONS
  ────────────────────────────────────────── */

  --transition-fast:    150ms ease;
  --transition-default: 250ms ease;
  --transition-slow:    400ms ease;

  /* ──────────────────────────────────────────
     Z-INDEX SCALE
  ────────────────────────────────────────── */

  --z-below:    -1;
  --z-base:      0;
  --z-raised:   10;
  --z-sticky:   100;
  --z-overlay:  200;
  --z-modal:    300;
  --z-toast:    400;

}


/* ============================================================
   DARK SURFACE UTILITY (default for most VPL pages)
   Apply .surface-dark to any section that uses Navy Deep.
   ============================================================ */

.surface-dark {
  background-color: var(--color-navy-deep);
  color: var(--color-white);
}

.surface-mid {
  background-color: var(--color-navy-mid);
  color: var(--color-white);
}

.surface-light {
  background-color: var(--color-off-white);
  color: var(--color-text-mid);
}


/* ============================================================
   TYPOGRAPHY UTILITIES
   ============================================================ */

.font-display { font-family: var(--font-display); font-weight: var(--font-weight-bold); }
.font-body    { font-family: var(--font-body);    font-weight: var(--font-weight-regular); }
.font-mono    { font-family: var(--font-mono);    font-weight: var(--font-weight-regular); }

.text-electric { color: var(--color-electric-blue); }
.text-cyan     { color: var(--color-cyan-signal); }
.text-slate    { color: var(--color-slate); }
.text-white    { color: var(--color-white); }


/* ============================================================
   BUTTON — PRIMARY CTA
   ============================================================ */

.btn-primary {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-6);
  background-color: var(--color-electric-blue);
  color: var(--color-white);
  font-family: var(--font-body);
  font-weight: var(--font-weight-medium);
  font-size: var(--text-base);
  border: none;
  border-radius: var(--radius-md);
  cursor: pointer;
  text-decoration: none;
  transition: background-color var(--transition-fast), box-shadow var(--transition-fast);
}

.btn-primary:hover {
  background-color: var(--color-bright-blue);
  box-shadow: var(--glow-blue);
}

.btn-ghost {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-6);
  background-color: transparent;
  color: var(--color-white);
  font-family: var(--font-body);
  font-weight: var(--font-weight-medium);
  font-size: var(--text-base);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  cursor: pointer;
  text-decoration: none;
  transition: border-color var(--transition-fast), color var(--transition-fast);
}

.btn-ghost:hover {
  border-color: var(--color-electric-blue);
  color: var(--color-electric-blue);
}


/* ============================================================
   CARD — SERVICE / FEATURE
   ============================================================ */

.card-service {
  background-color: var(--color-navy-mid);
  border: var(--border-default);
  border-left: var(--border-accent);
  border-radius: var(--radius-md);
  padding: var(--space-8);
}

.card-service__title {
  font-family: var(--font-display);
  font-weight: var(--font-weight-bold);
  font-size: var(--text-xl);
  color: var(--color-white);
  margin-bottom: var(--space-3);
}

.card-service__body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-slate);
  line-height: var(--leading-normal);
}


/* ============================================================
   METRIC CALLOUT
   ============================================================ */

.metric {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

.metric__value {
  font-family: var(--font-display);
  font-weight: var(--font-weight-bold);
  font-size: var(--text-3xl);
  color: var(--color-cyan-signal);
  line-height: var(--leading-tight);
  letter-spacing: var(--tracking-tight);
}

.metric__label {
  font-family: var(--font-mono);
  font-size: var(--text-xs);
  color: var(--color-slate);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wider);
}
