/* ==========================================================================
   Hardev Consultants — Design Tokens
   Single source of truth for color, type, space, motion, elevation.
   ========================================================================== */

:root {
  color-scheme: light dark;

  /* ── Core palette (raw) ───────────────────────────────────────────────── */

  /* Primary — Aurora Violet */
  --aurora-50:  #F5F3FF;
  --aurora-100: #EDE9FE;
  --aurora-200: #DDD6FE;
  --aurora-300: #C4B5FD;
  --aurora-400: #A78BFA;
  --aurora-500: #8B5CF6;
  --aurora-600: #7C3AED;
  --aurora-700: #6D28D9;  /* signature */
  --aurora-800: #5B21B6;
  --aurora-900: #4C1D95;
  --aurora-950: #2E1065;

  /* Secondary — Solar Gold (heritage warmth) */
  --solar-50:  #FFFBEB;
  --solar-100: #FEF3C7;
  --solar-200: #FDE68A;
  --solar-300: #FCD34D;
  --solar-400: #FBBF24;
  --solar-500: #F59E0B;  /* signature */
  --solar-600: #D97706;
  --solar-700: #B45309;
  --solar-800: #92400E;
  --solar-900: #78350F;

  /* Accent — Quantum Cyan */
  --quantum-300: #67E8F9;
  --quantum-400: #22D3EE;  /* signature */
  --quantum-500: #06B6D4;
  --quantum-600: #0891B2;

  /* Accent — Ember (used sparingly, only for live signals) */
  --ember-400: #FB7185;
  --ember-500: #F97066;

  /* Bone & Obsidian — neutrals with intent */
  --bone-50:  #FBF9F4;
  --bone-100: #F5F1EA;
  --bone-200: #EAE3D6;
  --obsidian-950: #050509;
  --obsidian-900: #0A0A12;
  --obsidian-800: #12121C;
  --obsidian-700: #1A1A26;
  --obsidian-600: #262635;
  --obsidian-500: #3A3A4D;
  --obsidian-400: #5A5A70;
  --obsidian-300: #8B8B9F;
  --obsidian-200: #B5B5C4;
  --obsidian-100: #DCDCE4;

  /* ── Type ──────────────────────────────────────────────────────────────── */
  --font-display: "Fraunces", "Times New Roman", serif;
  --font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;

  /* Fluid type scale (clamp(min, fluid, max)) */
  --text-xs:   clamp(0.72rem, 0.70rem + 0.10vw, 0.78rem);
  --text-sm:   clamp(0.84rem, 0.81rem + 0.15vw, 0.92rem);
  --text-base: clamp(0.95rem, 0.92rem + 0.20vw, 1.05rem);
  --text-lg:   clamp(1.10rem, 1.05rem + 0.30vw, 1.25rem);
  --text-xl:   clamp(1.30rem, 1.20rem + 0.50vw, 1.55rem);
  --text-2xl:  clamp(1.60rem, 1.40rem + 1.00vw, 2.10rem);
  --text-3xl:  clamp(2.00rem, 1.70rem + 1.50vw, 2.85rem);
  --text-4xl:  clamp(2.60rem, 2.00rem + 3.00vw, 4.20rem);
  --text-5xl:  clamp(3.20rem, 2.30rem + 4.50vw, 5.80rem);
  --text-6xl:  clamp(4.00rem, 2.50rem + 7.50vw, 8.40rem);

  /* Line heights */
  --lh-tight: 1.04;
  --lh-snug: 1.18;
  --lh-normal: 1.5;
  --lh-relaxed: 1.65;

  /* Letter spacing */
  --tracking-tightest: -0.045em;
  --tracking-tighter: -0.025em;
  --tracking-tight: -0.012em;
  --tracking-normal: 0;
  --tracking-wide: 0.04em;
  --tracking-wider: 0.12em;
  --tracking-widest: 0.22em;

  /* Weights */
  --w-light: 300;
  --w-regular: 400;
  --w-medium: 500;
  --w-semibold: 600;

  /* ── Space (rem-based, 4px grid) ───────────────────────────────────────── */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-20: 5rem;
  --space-24: 6rem;
  --space-32: 8rem;
  --space-40: 10rem;

  /* ── Layout ────────────────────────────────────────────────────────────── */
  --container-narrow: 56rem;   /* 896px — long-form */
  --container: 76rem;          /* 1216px — default */
  --container-wide: 88rem;     /* 1408px — feature */
  --gutter: clamp(1.25rem, 4vw, 2.5rem);
  --section-y: clamp(5rem, 10vw, 9rem);

  /* ── Radius ────────────────────────────────────────────────────────────── */
  --radius-xs: 4px;
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 18px;
  --radius-xl: 28px;
  --radius-2xl: 40px;
  --radius-pill: 999px;

  /* ── Motion ────────────────────────────────────────────────────────────── */
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);          /* default UI */
  --ease-out-expo: cubic-bezier(0.16, 1, 0.30, 1);     /* dramatic entrances */
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);       /* paired transitions */
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);    /* magnetic, micro */

  --dur-instant: 80ms;
  --dur-fast: 180ms;
  --dur-base: 320ms;
  --dur-slow: 560ms;
  --dur-slower: 920ms;
  --dur-cinematic: 1400ms;

  /* ── Z-stack ───────────────────────────────────────────────────────────── */
  --z-base: 1;
  --z-overlay: 10;
  --z-nav: 50;
  --z-modal: 80;
  --z-toast: 90;
  --z-cursor: 100;

  /* ── Focus ─────────────────────────────────────────────────────────────── */
  --focus-ring: 2px solid color-mix(in oklch, var(--c-primary) 80%, transparent);
  --focus-offset: 3px;
}

/* ──────────────────────────────────────────────────────────────────────────
   Theme: DARK (default)
   The site is dark-mode-first; light mode is the inversion.
   ────────────────────────────────────────────────────────────────────────── */
:root,
[data-theme="dark"] {
  /* Surfaces */
  --c-bg:           var(--obsidian-950);
  --c-bg-raised:    var(--obsidian-900);
  --c-bg-elevated:  var(--obsidian-800);
  --c-bg-inverse:   var(--bone-50);

  /* Lines & strokes */
  --c-border:       color-mix(in oklch, var(--bone-50) 8%, transparent);
  --c-border-strong:color-mix(in oklch, var(--bone-50) 16%, transparent);
  --c-border-faint: color-mix(in oklch, var(--bone-50) 4%, transparent);

  /* Text */
  --c-text:         var(--bone-50);
  --c-text-muted:   color-mix(in oklch, var(--bone-50) 62%, transparent);
  --c-text-faint:   color-mix(in oklch, var(--bone-50) 40%, transparent);
  --c-text-inverse: var(--obsidian-900);

  /* Brand */
  --c-primary:      var(--aurora-500);
  --c-primary-hover:var(--aurora-400);
  --c-primary-soft: color-mix(in oklch, var(--aurora-500) 14%, transparent);
  --c-secondary:    var(--solar-400);
  --c-accent:       var(--quantum-400);
  --c-signal:       var(--ember-500);

  /* Hero gradient stops */
  --grad-1: var(--aurora-700);
  --grad-2: var(--quantum-500);
  --grad-3: var(--solar-500);
  --grad-bg: var(--obsidian-950);

  /* Glass */
  --glass-bg: color-mix(in oklch, var(--obsidian-800) 70%, transparent);
  --glass-border: color-mix(in oklch, var(--bone-50) 10%, transparent);
  --glass-blur: 20px;

  /* Shadows (depth in dark mode lives in glow + inner contrast) */
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.4);
  --shadow-md: 0 8px 24px rgba(0,0,0,0.45), 0 1px 2px rgba(0,0,0,0.3);
  --shadow-lg: 0 24px 48px -12px rgba(0,0,0,0.55), 0 4px 12px rgba(0,0,0,0.3);
  --shadow-glow: 0 0 60px color-mix(in oklch, var(--aurora-500) 30%, transparent);

  /* Noise overlay opacity */
  --noise-opacity: 0.045;
}

/* ──────────────────────────────────────────────────────────────────────────
   Theme: LIGHT
   ────────────────────────────────────────────────────────────────────────── */
[data-theme="light"] {
  --c-bg:           var(--bone-50);
  --c-bg-raised:    #FFFFFF;
  --c-bg-elevated:  #FFFFFF;
  --c-bg-inverse:   var(--obsidian-900);

  --c-border:       color-mix(in oklch, var(--obsidian-900) 10%, transparent);
  --c-border-strong:color-mix(in oklch, var(--obsidian-900) 18%, transparent);
  --c-border-faint: color-mix(in oklch, var(--obsidian-900) 5%, transparent);

  --c-text:         var(--obsidian-900);
  --c-text-muted:   color-mix(in oklch, var(--obsidian-900) 70%, transparent);
  --c-text-faint:   color-mix(in oklch, var(--obsidian-900) 50%, transparent);
  --c-text-inverse: var(--bone-50);

  --c-primary:      var(--aurora-700);
  --c-primary-hover:var(--aurora-800);
  --c-primary-soft: color-mix(in oklch, var(--aurora-700) 10%, transparent);
  --c-secondary:    var(--solar-600);
  --c-accent:       var(--quantum-600);
  --c-signal:       var(--ember-500);

  --grad-1: var(--aurora-300);
  --grad-2: var(--quantum-300);
  --grad-3: var(--solar-300);
  --grad-bg: var(--bone-50);

  --glass-bg: color-mix(in oklch, #FFFFFF 75%, transparent);
  --glass-border: color-mix(in oklch, var(--obsidian-900) 8%, transparent);

  --shadow-sm: 0 1px 2px rgba(15, 15, 25, 0.06);
  --shadow-md: 0 6px 20px -6px rgba(15, 15, 25, 0.10), 0 1px 2px rgba(15,15,25,0.05);
  --shadow-lg: 0 24px 48px -16px rgba(15, 15, 25, 0.18), 0 4px 12px rgba(15,15,25,0.06);
  --shadow-glow: 0 0 60px color-mix(in oklch, var(--aurora-700) 18%, transparent);

  --noise-opacity: 0.035;
}

/* Honour system preference when no explicit choice has been made */
@media (prefers-color-scheme: light) {
  :root:not([data-theme]) {
    color-scheme: light;
    --c-bg:           var(--bone-50);
    --c-bg-raised:    #FFFFFF;
    --c-bg-elevated:  #FFFFFF;
    --c-bg-inverse:   var(--obsidian-900);
    --c-border:       color-mix(in oklch, var(--obsidian-900) 10%, transparent);
    --c-border-strong:color-mix(in oklch, var(--obsidian-900) 18%, transparent);
    --c-border-faint: color-mix(in oklch, var(--obsidian-900) 5%, transparent);
    --c-text:         var(--obsidian-900);
    --c-text-muted:   color-mix(in oklch, var(--obsidian-900) 70%, transparent);
    --c-text-faint:   color-mix(in oklch, var(--obsidian-900) 50%, transparent);
    --c-text-inverse: var(--bone-50);
    --c-primary:      var(--aurora-700);
    --c-primary-hover:var(--aurora-800);
    --c-primary-soft: color-mix(in oklch, var(--aurora-700) 10%, transparent);
    --c-secondary:    var(--solar-600);
    --c-accent:       var(--quantum-600);
    --grad-1: var(--aurora-300);
    --grad-2: var(--quantum-300);
    --grad-3: var(--solar-300);
    --grad-bg: var(--bone-50);
    --glass-bg: color-mix(in oklch, #FFFFFF 75%, transparent);
    --glass-border: color-mix(in oklch, var(--obsidian-900) 8%, transparent);
    --shadow-sm: 0 1px 2px rgba(15, 15, 25, 0.06);
    --shadow-md: 0 6px 20px -6px rgba(15, 15, 25, 0.10), 0 1px 2px rgba(15,15,25,0.05);
    --shadow-lg: 0 24px 48px -16px rgba(15, 15, 25, 0.18), 0 4px 12px rgba(15,15,25,0.06);
    --shadow-glow: 0 0 60px color-mix(in oklch, var(--aurora-700) 18%, transparent);
    --noise-opacity: 0.035;
  }
}
