/* ═══════════════════════════════════════════════════════════
   LUMINA — Design System (VL-0)
   Tokens, Reset, Typography, Base Utilities
   ═══════════════════════════════════════════════════════════ */

:root {
  /* ─── Color Palette ─── */
  --bg-base: #060A10;
  --bg-mid: #0B1120;
  --bg-card: rgba(255,255,255,0.03);
  --bg-card-hover: rgba(255,255,255,0.06);

  --blue: #C498FF;
  --cyan: #A5F3E7;
  --green: #34D399;
  --purple: #A78BFA;

  --blue-glow: rgba(196, 152, 255, 0.25);
  --cyan-glow: rgba(165, 243, 231, 0.2);

  --text-1: #F0F4FF;
  --text-2: #94A3C0;
  --text-3: #4A5568;

  --border: rgba(255,255,255,0.07);
  --border-hover: rgba(196, 152, 255, 0.3);

  /* ─── Typography ─── */
  --font: 'Sora', sans-serif;
  --mono: 'JetBrains Mono', monospace;

  /* ─── Spacing Scale ─── */
  --space-2xs: 4px;
  --space-xs: 8px;
  --space-sm: 12px;
  --space-md: 16px;
  --space-lg: 24px;
  --space-xl: 32px;
  --space-2xl: 48px;
  --space-3xl: 64px;
  --space-4xl: 80px;
  --space-5xl: 120px;

  /* ─── Layout ─── */
  --nav-height: 80px;
  --max-width: 1280px;
  --section-padding: var(--space-4xl) var(--space-2xl);

  /* ─── Radius ─── */
  --radius-sm: 8px;
  --radius-md: 16px;
  --radius-lg: 24px;
  --radius-xl: 32px;
  --radius-full: 100px;

  /* ─── Transitions ─── */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-bounce: cubic-bezier(0.175, 0.885, 0.32, 1.275);
  --duration-fast: 0.2s;
  --duration-normal: 0.4s;
  --duration-slow: 0.8s;
}

/* ─── Reset ─── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: auto; /* Lenis handles smooth scroll */ }

html, body {
  font-family: var(--font);
  background: var(--bg-base);
  color: var(--text-1);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: clip;
  max-width: 100vw;
}

/* Hide scrollbar globally (Lenis provides its own) */
html { scrollbar-width: none !important; }
html::-webkit-scrollbar { display: none !important; }

a { color: inherit; text-decoration: none; }
img, video { display: block; max-width: 100%; }
button { font-family: inherit; cursor: pointer; border: none; background: none; }
ul, ol { list-style: none; }
h1, h2, h3, h4, h5, h6, p { word-break: keep-all; overflow-wrap: break-word; }

/* Hide native video controls */
video::-webkit-media-controls,
video::-webkit-media-controls-enclosure,
video::-webkit-media-controls-panel,
video::-webkit-media-overlay-play-button,
video::-webkit-media-controls-play-button,
video::-webkit-media-controls-start-playback-button { display: none !important; }

/* ─── Typography Classes ─── */
.text-display {
  font-size: clamp(2.5rem, 5vw, 4.5rem);
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1.1;
}

.text-heading {
  font-size: clamp(2rem, 4vw, 3.2rem);
  font-weight: 800;
  letter-spacing: -0.035em;
  line-height: 1.15;
}

.text-subheading {
  font-size: clamp(1.4rem, 2.5vw, 1.8rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.3;
}

.text-body {
  font-size: 1.05rem;
  color: var(--text-2);
  line-height: 1.7;
}

.text-small {
  font-size: 0.875rem;
  color: var(--text-2);
  line-height: 1.6;
}

.text-caption {
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.text-mono {
  font-family: var(--mono);
}

.text-gradient {
  background: linear-gradient(135deg, var(--blue), var(--cyan));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

.text-gradient-white {
  background: linear-gradient(150deg, #fff 30%, var(--text-2) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* ─── Layout Utilities ─── */
.container {
  max-width: var(--max-width);
  margin: 0 auto;
  padding: 0 var(--space-2xl);
}

.flex { display: flex; }
.flex-col { flex-direction: column; }
.items-center { align-items: center; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }
.gap-xs { gap: var(--space-xs); }
.gap-sm { gap: var(--space-sm); }
.gap-md { gap: var(--space-md); }
.gap-lg { gap: var(--space-lg); }
.gap-xl { gap: var(--space-xl); }
.gap-2xl { gap: var(--space-2xl); }
.text-center { text-align: center; }
.shrink-0 { flex-shrink: 0; }
.relative { position: relative; }
.z-1 { z-index: 1; }
.z-2 { z-index: 2; }

/* ─── Animation Base ─── */
.reveal { opacity: 0; }
.reveal.is-visible { opacity: 1; }
