/* ============================================
   DESIGN TOKENS - Aleksander's Dating Resume
   All layout sizes use relative units (rem, %, clamp)
   ============================================ */

:root {
  /* ── Backgrounds ── */
  --bg-primary: #0a0a0f;
  --bg-secondary: #111118;
  --bg-tertiary: #16161f;
  --bg-glass: rgba(255, 255, 255, 0.03);
  --bg-glass-hover: rgba(255, 255, 255, 0.06);
  --bg-glass-border: rgba(255, 255, 255, 0.06);

  /* ── Accent Colors ── */
  --accent-primary: #6366f1;
  --accent-secondary: #8b5cf6;
  --accent-glow: #818cf8;
  --accent-cyan: #06b6d4;
  --accent-warm: #f59e0b;
  --accent-emerald: #10b981;
  --accent-rose: #f43f5e;

  /* ── Text ── */
  --text-primary: #f1f5f9;
  --text-secondary: #94a3b8;
  --text-muted: #475569;
  --text-accent: var(--accent-glow);

  /* ── Gradients ── */
  --gradient-hero: linear-gradient(135deg, #6366f1, #8b5cf6, #06b6d4);
  --gradient-warm: linear-gradient(135deg, #f59e0b, #f43f5e);
  --gradient-subtle: linear-gradient(135deg, rgba(99, 102, 241, 0.15), rgba(6, 182, 212, 0.08));
  --gradient-card: linear-gradient(135deg, rgba(99, 102, 241, 0.08), rgba(139, 92, 246, 0.04));
  --gradient-mesh-1: radial-gradient(ellipse at 20% 50%, rgba(99, 102, 241, 0.12) 0%, transparent 50%);
  --gradient-mesh-2: radial-gradient(ellipse at 80% 20%, rgba(6, 182, 212, 0.08) 0%, transparent 50%);
  --gradient-mesh-3: radial-gradient(ellipse at 50% 80%, rgba(139, 92, 246, 0.06) 0%, transparent 50%);

  /* ── Borders & Shadows ── */
  --border-subtle: rgba(255, 255, 255, 0.06);
  --border-accent: rgba(99, 102, 241, 0.3);
  --border-width: 0.0625rem;
  --border-width-md: 0.125rem;
  --border-width-lg: 0.1875rem;
  --shadow-glow: 0 0 3.75rem rgba(99, 102, 241, 0.15);
  --shadow-glow-sm: 0 0 1.875rem rgba(99, 102, 241, 0.1);
  --shadow-card: 0 0.25rem 1.5rem rgba(0, 0, 0, 0.3);
  --shadow-elevated: 0 0.5rem 2.5rem rgba(0, 0, 0, 0.4);

  /* ── Typography ── */
  --font-display: 'Space Grotesk', system-ui, -apple-system, sans-serif;
  --font-body: 'Inter', system-ui, -apple-system, sans-serif;

  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.25rem;
  --text-2xl: 1.5rem;
  --text-3xl: clamp(1.5rem, 5vw, 1.875rem);
  --text-4xl: clamp(1.75rem, 6vw, 2.25rem);
  --text-5xl: clamp(2rem, 8vw, 3rem);
  --text-6xl: clamp(2.5rem, 10vw, 3.75rem);

  /* ── Line Heights ── */
  --leading-tight: 1.15;
  --leading-snug: 1.3;
  --leading-normal: 1.6;
  --leading-relaxed: 1.75;

  /* ── Spacing ── */
  --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;

  /* ── Layout (fluid, never wider than viewport) ── */
  /* Elements use box-sizing: border-box, so padding stays inside these widths. */
  --container-padding: clamp(var(--space-4), 4vw, var(--space-6));
  --container-max: 26.25rem;
  --page-max: min(var(--container-max), 100%);
  --modal-max: min(27.5rem, 100%);
  --section-gap: clamp(var(--space-12), 10vh, var(--space-20));

  /* ── Radii ── */
  --radius-sm: 0.375rem;
  --radius-md: 0.625rem;
  --radius-lg: 0.75rem;
  --radius-xl: 1rem;
  --radius-pill: 62.5rem;
  --card-radius: var(--radius-xl);
  --card-radius-lg: 1.5rem;
  --card-padding: var(--space-6);

  /* ── Component sizes (fluid) ── */
  --touch-target: 2.75rem;
  --touch-target-sm: 2rem;
  --avatar-size: clamp(5rem, 28vw, 7.5rem);
  --blob-sm: clamp(8rem, 45vw, 12.5rem);
  --blob-md: clamp(10rem, 55vw, 15.625rem);
  --blob-lg: clamp(12rem, 65vw, 18.75rem);
  --blob-xl: clamp(14rem, 75vw, 21.875rem);
  --funfact-card-width: clamp(14rem, 78vw, 17.5rem);
  --gallery-row-min: clamp(7rem, 42vw, 11.25rem);
  --stat-min-width: clamp(4.5rem, 22vw, 5rem);
  --emoji-display: clamp(2.5rem, 12vw, 4rem);
  --emoji-hero: clamp(3rem, 14vw, 4rem);
  --icon-sm: 1.25rem;
  --icon-md: 1.5rem;
  --dot-size: 0.375rem;
  --dot-active-width: 1.25rem;
  --scrollbar-size: 0.25rem;

  /* ── Transitions ── */
  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  --duration-fast: 200ms;
  --duration-normal: 400ms;
  --duration-slow: 700ms;
  --duration-slower: 1000ms;

  /* ── Blur ── */
  --blur-glass: 1.25rem;
  --blur-bg: 3.75rem;
  --blur-sm: 0.5rem;

  /* ── Breakpoints (rem) ── */
  --bp-sm: 25rem;
  --bp-md: 37.5rem;
  --bp-lg: 48rem;
  --bp-xl: 64rem;
}

@media (min-width: 48rem) {
  :root {
    --container-max: 30rem;
    --modal-max: min(30rem, 100%);
  }
}

@media (min-width: 64rem) {
  :root {
    --container-max: 32.5rem;
  }
}
