/* ============================================================
   SKYLIFE — parallax homepage
   Palette: night sky → dawn → daylight → warm earth
   Type: Archivo (display/UI) + Newsreader italic (emotional)
   ============================================================ */

:root {
  --night:      oklch(0.17 0.035 262);
  --night-2:    oklch(0.23 0.045 258);
  --dawn:       oklch(0.42 0.07 255);
  --day:        oklch(0.78 0.06 235);
  --paper:      oklch(0.965 0.012 80);
  --paper-2:    oklch(0.93 0.018 78);
  --ink:        oklch(0.22 0.02 262);
  --ink-soft:   oklch(0.40 0.02 262);
  --cloud:      oklch(0.92 0.01 250);
  --accent:     oklch(0.68 0.17 45);   /* parachute orange */
  --accent-deep:oklch(0.58 0.16 45);
  --on-dark:    oklch(0.96 0.01 250);
  --on-dark-dim:oklch(0.75 0.02 252);
  --hairline-d: oklch(0.96 0.01 250 / 0.16);
  --hairline-l: oklch(0.22 0.02 262 / 0.14);
  --font-display: "Archivo", "Helvetica Neue", sans-serif;
  --font-serif: "Newsreader", Georgia, serif;
  --font-mono: "Archivo", monospace;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: auto; }
body {
  font-family: var(--font-display);
  background: var(--night);
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }

::selection { background: var(--accent); color: var(--night); }

/* ---------- shared layout ---------- */
.shell { width: min(1180px, calc(100% - 96px)); margin: 0 auto; }
@media (max-width: 720px) { .shell { width: calc(100% - 48px); } }

.kicker {
  font-size: 13px; font-weight: 600; letter-spacing: 0.22em;
  text-transform: uppercase; color: var(--accent);
  display: flex; align-items: center; gap: 14px;
}
.kicker::before { content: ""; width: 34px; height: 2px; background: var(--accent); }

/* ---------- reveal on scroll ---------- */
@media (prefers-reduced-motion: no-preference) {
  .rv { opacity: 0; transform: translateY(34px); transition: opacity 0.9s cubic-bezier(.2,.7,.2,1), transform 0.9s cubic-bezier(.2,.7,.2,1); }
  .rv.in { opacity: 1; transform: none; }
  .rv2 { transition-delay: 0.12s; }
  .rv3 { transition-delay: 0.24s; }
  /* parallax elements get a JS-driven transform every frame — reveal must not transition it */
  [data-parallax].rv { transform: none; transition-property: opacity; }
}

/* ---------- nav ---------- */
.nav {
  position: fixed; inset: 0 0 auto 0; z-index: 50;
  display: flex; align-items: center; justify-content: space-between;
  padding: 22px 44px;
  transition: background 0.4s, padding 0.4s, box-shadow 0.4s;
}
.nav.scrolled {
  background: oklch(0.17 0.035 262 / 0.82);
  backdrop-filter: blur(14px);
  padding: 14px 44px;
  box-shadow: 0 1px 0 var(--hairline-d);
}
.nav-logo { display: flex; align-items: center; gap: 11px; color: var(--on-dark); }
.logo-lockup { height: 46px; width: auto; display: block; filter: invert(1) hue-rotate(180deg) brightness(1.6) saturate(0.85); }
.nav-links { display: flex; gap: 34px; font-size: 14px; font-weight: 500; color: var(--on-dark-dim); letter-spacing: 0.03em; }
.nav-links a { white-space: nowrap; }
.nav-links a { transition: color 0.2s; }
.nav-links a:hover { color: var(--on-dark); }
.nav-cta {
  font-size: 13.5px; font-weight: 700; letter-spacing: 0.06em;
  color: var(--night); background: var(--accent);
  padding: 11px 22px; border-radius: 999px;
  white-space: nowrap;
  transition: background 0.2s, transform 0.2s;
}
.nav-cta:hover { background: var(--accent-deep); transform: translateY(-1px); }
@media (max-width: 860px) { .nav-links { display: none; } }

/* ============================================================
   HERO — night sky
   ============================================================ */
.hero {
  position: relative; min-height: 100vh;
  display: grid; place-items: center;
  overflow: hidden;
  background: linear-gradient(to bottom, var(--night) 0%, var(--night-2) 78%, var(--dawn) 130%);
}
.stars { position: absolute; inset: -10% 0; pointer-events: none; }
.stars i {
  position: absolute; width: 2px; height: 2px; border-radius: 50%;
  background: oklch(0.96 0.01 250 / 0.7);
}
.hero-clouds { position: absolute; inset: 0; pointer-events: none; }
.cloud {
  position: absolute; border-radius: 50%;
  filter: blur(46px);
  background: oklch(0.55 0.05 255 / 0.34);
}
.cloud.c1 { width: 620px; height: 200px; left: -14%; top: 62%; }
.cloud.c2 { width: 760px; height: 240px; right: -18%; top: 74%; background: oklch(0.45 0.05 258 / 0.4); }
.cloud.c3 { width: 480px; height: 160px; left: 28%; top: 86%; background: oklch(0.6 0.04 252 / 0.26); }

.hero-inner { position: relative; z-index: 2; text-align: center; padding: 120px 24px 140px; }
.hero-kicker {
  font-size: 13px; font-weight: 600; letter-spacing: 0.3em; text-transform: uppercase;
  color: var(--on-dark-dim); margin-bottom: 30px;
}
.hero h1 {
  font-size: clamp(46px, 7.4vw, 104px);
  line-height: 1.02; font-weight: 800; letter-spacing: -0.025em;
  color: var(--on-dark);
  text-wrap: balance;
}
.hero h1 .serif {
  font-family: var(--font-serif); font-style: italic; font-weight: 400;
  letter-spacing: -0.01em; color: var(--accent);
}
.hero-sub {
  margin: 34px auto 0; max-width: 560px;
  font-size: 18px; line-height: 1.65; color: var(--on-dark-dim);
  text-wrap: pretty;
}
.hero-ctas { margin-top: 44px; display: flex; gap: 16px; justify-content: center; }
.btn {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 15px 30px; border-radius: 999px;
  font-size: 15px; font-weight: 700; letter-spacing: 0.03em;
  transition: transform 0.2s, background 0.2s, border-color 0.2s;
}
.btn-solid { background: var(--accent); color: var(--night); }
.btn-solid:hover { background: var(--accent-deep); transform: translateY(-2px); }
.btn-ghost { border: 1px solid var(--hairline-d); color: var(--on-dark); }
.btn-ghost:hover { border-color: var(--on-dark-dim); transform: translateY(-2px); }

.scroll-cue {
  position: absolute; bottom: 34px; left: 50%; transform: translateX(-50%);
  z-index: 3; display: flex; flex-direction: column; align-items: center; gap: 12px;
  color: var(--on-dark-dim); font-size: 11.5px; letter-spacing: 0.28em; text-transform: uppercase;
}
.scroll-cue i { width: 1px; height: 52px; background: linear-gradient(var(--on-dark-dim), transparent); display: block; }
@media (prefers-reduced-motion: no-preference) {
  .scroll-cue i { animation: cue 2.2s ease-in-out infinite; transform-origin: top; }
  @keyframes cue { 0%, 100% { transform: scaleY(0.4); opacity: 0.4; } 50% { transform: scaleY(1); opacity: 1; } }
}

/* ============================================================
   DESCENT — sticky scroll-driven scene
   ============================================================ */
.descent { position: relative; height: 380vh; background: linear-gradient(to bottom, var(--night-2), var(--dawn) 55%, var(--day) 100%); }
.descent-stage { position: sticky; top: 0; height: 100vh; overflow: hidden; }

.alt-rail {
  position: absolute; right: 48px; top: 0; bottom: 0; width: 1px;
  background: var(--hairline-d);
}
.alt-marks { position: absolute; right: 32px; top: 0; height: 100%; }
.alt-mark {
  position: absolute; right: 0; transform: translateY(-50%);
  display: flex; align-items: center; gap: 10px;
  font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.14em;
  color: var(--on-dark-dim); white-space: nowrap;
}
.alt-mark::after { content: ""; width: 18px; height: 1px; background: var(--on-dark-dim); }
@media (max-width: 720px) { .alt-rail, .alt-marks { display: none; } }

/* parachute rig — pure CSS geometry */
.chute {
  position: absolute; left: 50%; top: 0;
  width: 150px; margin-left: -75px;
  will-change: transform;
  z-index: 2;
}
.canopy {
  width: 150px; height: 75px;
  border-radius: 150px 150px 0 0;
  background:
    repeating-linear-gradient(90deg,
      oklch(0.64 0.19 38) 0 30px,
      oklch(0.72 0.18 48) 30px 60px);
  box-shadow: inset 0 -10px 22px oklch(0 0 0 / 0.18);
}
.lines { position: relative; height: 64px; }
.lines i {
  position: absolute; top: 0; width: 1px;
  background: var(--on-dark-dim); transform-origin: top center; display: block;
}
/* lines run from canopy edge down to the box corners (box is 44px wide, centred) */
.lines i:nth-child(1) { left: 2px;   height: 83px;   transform: rotate(-39.6deg); }
.lines i:nth-child(2) { left: 50px;  height: 66.5px; transform: rotate(-15.7deg); }
.lines i:nth-child(3) { left: 100px; height: 66.5px; transform: rotate(15.7deg); }
.lines i:nth-child(4) { left: 148px; height: 83px;   transform: rotate(39.6deg); }
.payload {
  width: 44px; height: 38px; margin: -4px auto 0;
  background:
    linear-gradient(90deg, transparent 26%, oklch(0.55 0.22 25) 26% 31%, transparent 31% 69%, oklch(0.55 0.22 25) 69% 74%, transparent 74%),
    linear-gradient(0deg, transparent 26%, oklch(0.55 0.22 25) 26% 31%, transparent 31% 69%, oklch(0.55 0.22 25) 69% 74%, transparent 74%),
    oklch(0.62 0.16 245);
  border: 1px solid oklch(0.5 0.15 248);
  box-shadow: inset 0 -8px 14px oklch(0 0 0 / 0.16);
  position: relative;
}

/* flood aerial — fades in behind the first story beat */
.descent-photo {
  position: absolute; inset: 0; z-index: 0; opacity: 0;
  transition: opacity 0.8s ease;
}
.descent-photo.on { opacity: 1; }
.descent-photo img { width: 100%; height: 100%; object-fit: cover; }
.descent-photo::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(to bottom, oklch(0.2 0.04 260 / 0.75), oklch(0.25 0.05 258 / 0.55) 50%, oklch(0.3 0.05 256 / 0.8));
}

/* background mini chutes — depth + volume */
.chute.mini { z-index: 1; opacity: 0.72; }
.chute.mini .canopy { box-shadow: inset 0 -8px 16px oklch(0 0 0 / 0.14); }

.descent-clouds { position: absolute; inset: 0; pointer-events: none; z-index: 1; }
.descent-clouds .cloud { filter: blur(38px); background: oklch(0.85 0.02 250 / 0.22); }
.descent-clouds .d1 { width: 540px; height: 170px; left: -10%; top: 18%; }
.descent-clouds .d2 { width: 700px; height: 220px; right: -16%; top: 44%; background: oklch(0.88 0.02 248 / 0.18); }
.descent-clouds .d3 { width: 460px; height: 150px; left: 14%; top: 72%; background: oklch(0.9 0.015 245 / 0.2); }

.beat {
  position: absolute; left: 0; right: 0; top: 50%;
  transform: translateY(-50%);
  text-align: center; padding: 0 24px;
  opacity: 0; transition: opacity 0.5s;
  pointer-events: none; z-index: 3;
}
.beat.on { opacity: 1; }
.beat h2 {
  font-size: clamp(34px, 5vw, 64px); font-weight: 800; letter-spacing: -0.02em;
  color: var(--on-dark); line-height: 1.08; text-wrap: balance;
  text-shadow: 0 2px 30px oklch(0.2 0.04 260 / 0.5);
}
.beat p {
  margin: 20px auto 0; max-width: 480px; font-size: 17px; line-height: 1.6;
  color: var(--on-dark); opacity: 0.85;
  text-shadow: 0 1px 20px oklch(0.2 0.04 260 / 0.5);
}
.beat .serif { font-family: var(--font-serif); font-style: italic; font-weight: 400; color: var(--accent); }

/* ============================================================
   GROUND — the landing, warm light
   ============================================================ */
.ground {
  position: relative; background: var(--paper); color: var(--ink);
  padding: 130px 0 110px;
  overflow: hidden;
}
.ground::before {
  /* sun wash */
  content: ""; position: absolute; top: -340px; left: 50%; transform: translateX(-50%);
  width: 1100px; height: 700px; border-radius: 50%;
  background: radial-gradient(closest-side, oklch(0.88 0.07 70 / 0.55), transparent 70%);
  pointer-events: none;
}
.ground-head { position: relative; text-align: center; max-width: 880px; margin: 0 auto 84px; }
.ground-head .kicker { justify-content: center; }
.ground-head .kicker::after { content: ""; width: 34px; height: 2px; background: var(--accent); }
.ground-head h2 {
  margin-top: 26px;
  font-size: clamp(38px, 5.4vw, 72px); font-weight: 800; letter-spacing: -0.025em; line-height: 1.04;
  text-wrap: balance;
}
.ground-head h2 .serif { font-family: var(--font-serif); font-style: italic; font-weight: 400; color: var(--accent-deep); }
.ground-head p { margin: 26px auto 0; max-width: 600px; font-size: 18px; line-height: 1.7; color: var(--ink-soft); text-wrap: pretty; }

/* photo collage w/ parallax depth */
.collage { position: relative; height: 720px; }
.ph {
  position: absolute; overflow: hidden; border-radius: 6px;
  box-shadow: 0 24px 60px oklch(0.2 0.03 70 / 0.18);
  will-change: transform;
}
.ph img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
}
.ph .ph-fill {
  position: absolute; inset: 0;
  background:
    repeating-linear-gradient(-45deg,
      oklch(0.9 0.02 75) 0 14px,
      oklch(0.86 0.025 72) 14px 28px);
}
.ph .ph-tag {
  position: absolute; left: 14px; bottom: 12px; z-index: 2;
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  font-size: 11px; letter-spacing: 0.06em;
  background: oklch(0.22 0.02 262 / 0.85); color: var(--paper);
  padding: 6px 10px; border-radius: 3px;
  max-width: calc(100% - 28px);
}
.ph-a { left: 4%;  top: 6%;  width: 38%; height: 56%; }
.ph-b { left: 46%; top: 0;   width: 30%; height: 38%; }
.ph-c { right: 0;  top: 26%; width: 20%; height: 44%; }
.ph-d { left: 24%; bottom: 0; width: 34%; height: 34%; }
.ph-e { right: 8%; bottom: 4%; width: 28%; height: 26%; }
@media (max-width: 860px) {
  .collage { height: auto; display: grid; gap: 18px; }
  .ph { position: relative; inset: auto; width: 100% !important; height: 240px !important; }
}

.pull {
  position: relative; max-width: 760px; margin: 110px auto 0; text-align: center; padding: 0 24px;
}
.pull blockquote {
  font-family: var(--font-serif); font-style: italic; font-weight: 400;
  font-size: clamp(26px, 3.4vw, 40px); line-height: 1.35; letter-spacing: -0.01em;
  color: var(--ink); text-wrap: balance;
}
.pull cite {
  display: block; margin-top: 24px; font-family: var(--font-display); font-style: normal;
  font-size: 13px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ink-soft);
}

/* ============================================================
   STATS
   ============================================================ */
.stats { background: var(--paper-2); padding: 96px 0; border-top: 1px solid var(--hairline-l); }
.stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 40px; }
.stat .num {
  font-size: clamp(44px, 4.6vw, 68px); font-weight: 800; letter-spacing: -0.03em; line-height: 1;
  color: var(--ink);
}
.stat .num em { font-style: normal; color: var(--accent-deep); }
.stat .lbl { margin-top: 12px; font-size: 14px; line-height: 1.5; color: var(--ink-soft); }
@media (max-width: 860px) { .stats-grid { grid-template-columns: repeat(2, 1fr); } }

/* ============================================================
   TECHNOLOGY
   ============================================================ */
.tech { background: var(--night); color: var(--on-dark); padding: 130px 0; position: relative; overflow: hidden; }
.tech-top { display: grid; grid-template-columns: 1.25fr 1fr; gap: 60px; align-items: center; margin-bottom: 76px; }
.tech-head { max-width: 720px; }
.tech-photo { position: relative; border-radius: 10px; overflow: hidden; border: 1px solid var(--hairline-d); }
.tech-photo img { width: 100%; height: 320px; object-fit: cover; }
.tech-photo figcaption {
  position: absolute; left: 14px; bottom: 12px;
  font-family: ui-monospace, Menlo, monospace; font-size: 11px; letter-spacing: 0.06em;
  background: oklch(0.17 0.035 262 / 0.85); color: var(--on-dark);
  padding: 6px 10px; border-radius: 3px; max-width: calc(100% - 28px);
}
@media (max-width: 860px) { .tech-top { grid-template-columns: 1fr; gap: 36px; } }
.tech-head h2 { margin-top: 26px; font-size: clamp(34px, 4.6vw, 60px); font-weight: 800; letter-spacing: -0.02em; line-height: 1.06; text-wrap: balance; }
.tech-head p { margin-top: 22px; font-size: 17px; line-height: 1.7; color: var(--on-dark-dim); max-width: 560px; text-wrap: pretty; }

.tech-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.tcard {
  border: 1px solid var(--hairline-d); border-radius: 10px;
  padding: 34px 30px 38px; background: oklch(0.21 0.04 260 / 0.6);
  transition: transform 0.3s, border-color 0.3s;
}
.tcard:hover { transform: translateY(-6px); border-color: oklch(0.96 0.01 250 / 0.34); }
.tcard .glyph { height: 64px; display: flex; align-items: flex-end; margin-bottom: 26px; }
.tcard h3 { font-size: 21px; font-weight: 700; letter-spacing: -0.01em; }
.tcard .spec { margin-top: 6px; font-family: ui-monospace, Menlo, monospace; font-size: 11.5px; letter-spacing: 0.1em; color: var(--accent); text-transform: uppercase; }
.tcard p { margin-top: 16px; font-size: 15px; line-height: 1.65; color: var(--on-dark-dim); text-wrap: pretty; }
@media (max-width: 860px) { .tech-grid { grid-template-columns: 1fr; } }

/* glyphs — simple geometry only */
.g-canopy {
  width: 56px; height: 28px; border-radius: 56px 56px 0 0; position: relative;
  background:
    repeating-linear-gradient(90deg,
      oklch(0.64 0.19 38) 0 11px,
      oklch(0.72 0.18 48) 11px 22px);
  box-shadow: inset 0 -5px 11px oklch(0 0 0 / 0.18);
}
.g-rig { display: flex; flex-direction: column; align-items: center; }
.g-canopy::after { content: none; }
.g-lines { position: relative; width: 56px; height: 20px; }
.g-lines i { position: absolute; top: 0; width: 1px; background: var(--on-dark-dim); transform-origin: top center; display: block; }
.g-lines i:nth-child(1) { left: 6px;  height: 26px; transform: rotate(-34deg); }
.g-lines i:nth-child(2) { left: 28px; height: 20px; }
.g-lines i:nth-child(3) { left: 50px; height: 26px; transform: rotate(34deg); }
.g-box { width: 40px; height: 36px; position: relative;
  background:
    linear-gradient(90deg, transparent 26%, oklch(0.55 0.22 25) 26% 31%, transparent 31% 69%, oklch(0.55 0.22 25) 69% 74%, transparent 74%),
    linear-gradient(0deg, transparent 26%, oklch(0.55 0.22 25) 26% 31%, transparent 31% 69%, oklch(0.55 0.22 25) 69% 74%, transparent 74%),
    oklch(0.62 0.16 245);
}
.g-grid { display: grid; grid-template-columns: repeat(3, 12px); gap: 5px; }
.g-grid i { width: 12px; height: 12px; background: var(--accent); display: block; }
.g-grid i:nth-child(2n) { background: oklch(0.96 0.01 250 / 0.35); }

/* ============================================================
   MISSIONS (use cases)
   ============================================================ */
.missions { background: var(--paper); padding: 130px 0; }
.missions-head { text-align: center; max-width: 760px; margin: 0 auto 70px; }
.missions-head .kicker { justify-content: center; }
.missions-head .kicker::after { content: ""; width: 34px; height: 2px; background: var(--accent); }
.missions-head h2 { margin-top: 26px; font-size: clamp(34px, 4.6vw, 60px); font-weight: 800; letter-spacing: -0.02em; line-height: 1.06; }
.mission-rows { display: grid; gap: 18px; }
.mrow {
  display: grid; grid-template-columns: 64px 1fr auto; align-items: center; gap: 30px;
  padding: 34px 36px; border: 1px solid var(--hairline-l); border-radius: 10px;
  background: oklch(1 0 0 / 0.5);
  transition: transform 0.25s, box-shadow 0.25s;
}
.mrow:hover { transform: translateX(6px); box-shadow: 0 14px 40px oklch(0.2 0.03 70 / 0.1); }
.mrow .idx { font-family: ui-monospace, Menlo, monospace; font-size: 13px; letter-spacing: 0.1em; color: var(--accent-deep); }
.mrow h3 { font-size: 22px; font-weight: 700; letter-spacing: -0.01em; }
.mrow p { margin-top: 8px; font-size: 15px; line-height: 1.6; color: var(--ink-soft); max-width: 620px; text-wrap: pretty; }
.mrow .arrow { font-size: 22px; color: var(--ink-soft); }
@media (max-width: 720px) { .mrow { grid-template-columns: 1fr; gap: 12px; } .mrow .arrow { display: none; } }

/* ============================================================
   CTA
   ============================================================ */
.cta {
  position: relative; overflow: hidden;
  background: linear-gradient(to bottom, var(--night), var(--night-2));
  color: var(--on-dark); text-align: center; padding: 150px 0 160px;
}
.cta .cloud { filter: blur(50px); background: oklch(0.5 0.05 255 / 0.3); }
.cta .k1 { width: 600px; height: 190px; left: -12%; top: 60%; }
.cta .k2 { width: 700px; height: 220px; right: -14%; top: 24%; }
.cta h2 { position: relative; font-size: clamp(38px, 5.6vw, 76px); font-weight: 800; letter-spacing: -0.025em; line-height: 1.04; text-wrap: balance; }
.cta h2 .serif { font-family: var(--font-serif); font-style: italic; font-weight: 400; color: var(--accent); }
.cta p { position: relative; margin: 26px auto 0; max-width: 520px; font-size: 17px; line-height: 1.7; color: var(--on-dark-dim); }
.cta .hero-ctas { position: relative; }

/* ---------- footer ---------- */
.footer { background: var(--night); color: var(--on-dark-dim); border-top: 1px solid var(--hairline-d); padding: 44px 0; }
.footer-inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; font-size: 13.5px; }
.footer .nav-logo .logo-lockup { height: 38px; }
.footer-links { display: flex; gap: 26px; }
.footer-links a:hover { color: var(--on-dark); }
