@font-face{font-family:Geist;src:url('/assets/geist.woff2') format('woff2');font-style:normal;font-weight:100 900;font-display:swap}
:root{color-scheme:dark;--bg:#111213;--fg:#f3f2ee;--muted:#a4a6a4;--rule:#343638;--accent:#b7d5b9;--field-border:#747874}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:36px;scrollbar-color:#525653 var(--bg)}body{margin:0;background:var(--bg);color:var(--fg);font-family:Geist,Arial,sans-serif;-webkit-font-smoothing:antialiased}::selection{background:var(--accent);color:var(--bg)}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button,a,input,textarea{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:6px}button{cursor:pointer}svg{display:block}header,main,footer{width:min(90%,1600px);margin:auto}.header{height:120px;display:flex;justify-content:space-between;align-items:center}.wordmark{font-size:34px;letter-spacing:-.05em;display:flex;align-items:center;gap:11px}.wordmark svg{width:30px;height:32px}.contact-link{display:flex;align-items:center;gap:48px;border:1px solid var(--rule);padding:19px 22px;font-size:14px;transition:background .25s,color .25s}.contact-link:hover{background:var(--fg);color:var(--bg)}.contact-link svg,.scroll-cue svg,.send svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.2}.hero{position:relative;min-height:570px;height:calc(100svh - 120px);max-height:760px;border-bottom:1px solid var(--rule);padding-top:70px;isolation:isolate}.hero-copy{position:relative;z-index:2;max-width:760px;pointer-events:none}h1,h2,h3,p{margin:0}h1{font-size:clamp(54px,5.6vw,88px);font-weight:400;line-height:1.075;letter-spacing:-.04em;max-width:780px;text-wrap:balance}.hero-copy p{font-size:clamp(17px,1.5vw,20px);line-height:1.6;max-width:510px;color:var(--muted);margin-top:32px}.hero-scene{position:absolute;z-index:-1;right:-3vw;bottom:8%;width:65%;height:80%;margin:0}canvas{display:block;width:100%;height:100%}figcaption{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:10px;letter-spacing:.08em;color:var(--muted);position:absolute;right:5%;bottom:3%}.scroll-cue{position:absolute;bottom:34px;left:0;display:flex;gap:36px;align-items:center;font-size:13px;color:var(--muted)}.scroll-cue:hover{color:var(--fg)}.network{padding:118px 0 112px;border-bottom:1px solid var(--rule)}h2{font-size:clamp(42px,4.8vw,68px);line-height:1.08;font-weight:400;letter-spacing:-.035em}.network-layout{display:grid;grid-template-columns:1.55fr 1fr;gap:7%;align-items:center;margin-top:20px}.network-scene{position:relative;height:460px;margin:0 -3% 0 -4%}.network-parts>div{padding:25px 0 27px;border-top:1px solid var(--rule)}.network-parts>div:last-child{border-bottom:1px solid var(--rule)}h3{font-size:20px;font-weight:400;line-height:1.3}h3 span{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;color:var(--muted);margin-right:16px;vertical-align:2px}.network-parts p{font-size:16px;line-height:1.6;color:var(--muted);margin:13px 0 0 48px;max-width:280px}.contact{display:grid;grid-template-columns:1fr 1fr;gap:10%;padding:128px 0 100px}.contact-copy p{font-size:18px;line-height:1.6;color:var(--muted);margin-top:25px;max-width:340px}.contact h2{font-size:clamp(44px,4.8vw,68px)}form{display:flex;flex-direction:column;gap:25px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:24px}label{display:block;font-size:13px;color:var(--muted)}.optional{font-size:11px;color:var(--muted)}input,textarea{margin-top:10px;padding:14px 15px;width:100%;border:1px solid var(--field-border);background:#151617;color:var(--fg);border-radius:0;caret-color:var(--accent);transition:border-color .2s;min-height:50px}input:hover,textarea:hover{border-color:#626661}input:focus,textarea:focus{border-color:var(--accent);outline-offset:3px}textarea{resize:vertical;min-height:160px}.send{display:flex;align-items:center;justify-content:space-between;gap:32px;background:var(--accent);border:1px solid var(--accent);color:var(--bg);padding:17px 21px;min-height:54px;align-self:flex-start;min-width:190px;transition:background .2s}.send:hover{background:#d1e6d2}.send:disabled{cursor:wait;opacity:.65}#form-status{font-size:14px;color:var(--accent);line-height:1.5;max-width:440px}#form-status:empty{display:none}#form-status[data-error=true]{color:#edb3a6}.honeypot{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}footer{border-top:1px solid var(--rule);display:flex;align-items:center;justify-content:space-between;padding:28px 0 36px;font-size:12px;color:var(--muted)}.footer-brand{font-size:24px;letter-spacing:-.04em;color:var(--fg)}footer a:last-child{display:flex;gap:18px}.skip{position:absolute;top:10px;left:10px;padding:12px;background:var(--fg);color:var(--bg);z-index:10;transform:translateY(-150%)}.skip:focus{transform:none}
@media(min-width:1600px){.hero-copy{max-width:850px}.hero{padding-top:100px}}
@media(max-width:1000px){.hero{min-height:760px;padding-top:50px;height:auto}.hero-copy{max-width:650px}h1{font-size:64px;max-width:640px}.hero-scene{width:78%;height:50%;bottom:5%;right:-5%}.hero-copy p{max-width:460px}.network-layout{gap:3%;grid-template-columns:1.25fr 1fr}.network-scene{height:350px}.network-parts p{margin-left:0}.contact{gap:7%}.form-row{grid-template-columns:1fr;gap:25px}}
@media(max-width:640px){header,main,footer{width:88%}.header{height:96px}.wordmark{font-size:29px;gap:8px}.wordmark svg{width:25px}.contact-link{padding:14px 15px;gap:22px;font-size:12px}.contact-link svg{width:14px}.hero{padding-top:37px;min-height:0;height:auto;padding-bottom:55px}.hero-copy{pointer-events:auto}h1{font-size:clamp(39px,10.5vw,60px);line-height:1.1;letter-spacing:-.04em;text-wrap:initial}.hero-copy p{font-size:16px;line-height:1.65;margin-top:26px;max-width:360px}.hero-scene{position:relative;right:auto;bottom:auto;width:116%;height:300px;margin:12px -8% 0;z-index:0}.hero-scene figcaption{font-size:8px;right:8%;bottom:2%}.scroll-cue{bottom:22px;font-size:11px;gap:24px}.network{padding:67px 0 64px}h2,.contact h2{font-size:43px}.network-layout{display:flex;flex-direction:column;gap:20px;margin-top:20px}.network-scene{width:114%;height:300px;margin:0 -7%}.network-scene figcaption{font-size:8px;right:9%}.network-parts{width:100%;margin-top:20px}.network-parts>div{padding:23px 0}.network-parts p{margin-left:47px;max-width:270px;font-size:15px}h3{font-size:18px}.contact{grid-template-columns:1fr;padding:68px 0 65px;gap:40px}.contact-copy p{font-size:16px;margin-top:20px}.form-row{grid-template-columns:1fr;gap:23px}form{gap:23px}footer{gap:25px;flex-wrap:wrap;font-size:10px;padding:24px 0}.footer-brand{font-size:22px}footer a:last-child{gap:8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
/* Keep the intentionally wide terrain within the page at narrow widths. */
html,body{overflow-x:clip}

.form-hint{font-size:13px;color:var(--muted);margin-top:-14px}

@font-face {
  font-family: "Geist Mono";
  src: url("/assets/geist-mono.woff2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

.header,
.static-hero,
.mapping-story,
.workflow {
  font-family: "Geist Mono", ui-monospace, SFMono-Regular, Consolas, monospace;
}
.header {
  height: 88px;
  position: relative;
  z-index: 3;
}
.header .wordmark {
  font-size: 20px;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.header .wordmark svg { width: 23px; }
.header .contact-link {
  gap: 26px;
  min-height: 44px;
  padding: 12px 15px;
  background: var(--bg);
  font-size: 13px;
}
.header .contact-link:hover {
  background: var(--fg);
  color: var(--bg);
}

.static-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(24px, 4vw, 64px);
  min-height: 420px;
  height: 64svh;
  max-height: 740px;
  padding: 55px 0;
}
.static-hero .hero-copy { max-width: 840px; pointer-events: auto; }
.hero-flight {
  display: grid;
  place-items: center;
  position: relative;
  isolation: isolate;
  min-width: 0;
  aspect-ratio: 640 / 294;
  overflow: hidden;
}
.hero-vtol { display: block; width: 100%; height: auto; }
.flight-streaks {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: -1;
  color: var(--accent);
  pointer-events: none;
  mask-image: linear-gradient(90deg, transparent, #000 14%, #000 88%, transparent);
}
.flight-streaks path {
  animation: forward-flight var(--duration) linear var(--delay) infinite;
}
@keyframes forward-flight {
  0% { transform: translate(92px, -46px); opacity: 0; }
  35% { opacity: .48; }
  75% { opacity: .33; }
  100% { transform: translate(-132px, 66px); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .flight-streaks { display: none; }
}
.static-hero h1 {
  font-size: clamp(36px, 4.15vw, 70px);
  line-height: 1.06;
  letter-spacing: -.037em;
  text-wrap: initial;
}
.static-hero h1 span { color: var(--accent); }
.static-hero .hero-copy p {
  max-width: 53ch;
  margin-top: 23px;
  font-size: clamp(14px, 1.25vw, 17px);
  color: var(--fg);
}
.static-hero .scroll-cue {
  position: relative;
  inset: auto;
  display: inline-flex;
  margin-top: 29px;
  gap: clamp(16px, 3vw, 44px);
  min-height: 48px;
  padding: 12px 17px;
  background: var(--accent);
  color: var(--bg);
  font-size: 13px;
}
.static-hero .scroll-cue:hover {
  background: #d1e6d2;
  color: var(--bg);
}

.mapping-story,
.workflow {
  padding: clamp(68px, 8vw, 114px) 0;
  border-bottom: 1px solid var(--rule);
}

.mapping-story h2,
.workflow h2 {
  font-size: clamp(36px, 5vw, 68px);
  font-weight: 400;
  line-height: 1.04;
  letter-spacing: -.038em;
}
.specs-heading {
  grid-column: 1 / -1;
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: 24px;
  margin: 0 0 34px;
  padding-bottom: 28px;
  border-bottom: 1px solid var(--rule);
}
.mapping-story .network {
  padding: 0;
  border: 0;
}
.mapping-story .network-parts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(18px, 4vw, 56px);
  margin: 0;
}
.mapping-story .network-parts > div {
  padding: 22px 0 23px;
  border-top: 0;
  border-bottom: 1px solid var(--rule);
}

.mapping-story h3,
.workflow h3 {
  font-size: clamp(19px, 2vw, 26px);
  font-weight: 400;
  letter-spacing: -.026em;
}
.mapping-story .network-parts p,
.workflow p {
  max-width: 40ch;
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.65;
}


.mission { margin-top: 36px; }
.mission-index {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
}
.mission-index button {
  display: flex;
  align-items: center;
  gap: clamp(9px, 1.6vw, 24px);
  min-height: 56px;
  padding: 12px 16px;
  border: 0;
  border-right: 1px solid var(--rule);
  background: transparent;
  color: var(--muted);
  text-align: left;
  font-size: 13px;
}
.mission-index button:last-child { border-right: 0; }
.mission-index button:hover { color: var(--fg); }
.mission-index button[aria-selected="true"] {
  background: var(--accent);
  color: var(--bg);
}
.mission-index button span { font-size: 11px; }
.mission-panel {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(0, 7fr);
  align-items: center;
  gap: clamp(26px, 5vw, 80px);
  padding-top: 25px;
}
.mission-panel[hidden] { display: none; }
.mission-diagram {
  margin: 0;
  background: #151617;
  color: var(--accent);
  border: 1px solid var(--rule);
  overflow: hidden;
}
.mission-diagram svg { width: 100%; height: auto; }
.mission-diagram text {
  fill: var(--accent);
  font-size: 11px;
  letter-spacing: .1em;
}
.mission-contours,
.mission-ticks,
.mission-detail {
  fill: none;
  stroke: currentColor;
  stroke-width: 1;
}
.mission-contours { opacity: .24; }
.mission-ticks { opacity: .34; }
.mission-area {
  fill: #b7d5b929;
  stroke: currentColor;
  stroke-width: 1.5;
}
.mission-dash { stroke-dasharray: 4 5; }
.mission-aircraft { fill: currentColor; }
.mission-point-layer { fill: url("#mission-points"); }
.mission-symbols { position: absolute; pointer-events: none; }

@media (max-width: 760px) {
  .static-hero {
    grid-template-columns: minmax(0, 1fr);
    gap: 30px;
    min-height: 0;
    height: auto;
    padding: 64px 0 52px;
  }
  .mapping-story .network-parts { grid-template-columns: 1fr; gap: 0; }
  .static-hero .hero-copy { max-width: 100%; }
  .hero-flight { width: min(100%, 540px); justify-self: center; }
  .static-hero h1 { font-size: clamp(30px, 6.9vw, 49px); }
  .static-hero .hero-copy p { margin-top: 15px; }
  .static-hero .scroll-cue { position: relative; bottom: auto; }
  .mission-panel { grid-template-columns: minmax(0, 1fr); }
  .specs-heading { margin: 0; }
}

@media (max-width: 460px) {
  .header .wordmark { font-size: 16px; letter-spacing: .1em; }
  .header .contact-link { gap: 12px; font-size: 12px; }
  .specs-heading { align-items: flex-start; flex-direction: column; gap: 17px; }
  .mission-index button {
    align-items: flex-start;
    flex-direction: column;
    gap: 3px;
    padding: 9px;
    font-size: 11px;
  }
}

.mapping-story .network-parts > .sensor-row { padding-top: 0; }
.sensor-preview {
  display: block;
  width: min(100%, 280px);
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  margin-top: 19px;
  border: 1px solid var(--rule);
}
@media (max-width: 760px) {
  .mapping-story .network-parts { gap: 27px; }
}

.workflow-track::after {
  content: "";
  display: block;
  height: var(--mission-travel, 150svh);
}
.workflow-frame {
  position: sticky;
  top: var(--mission-top, 16px);
}
.workflow-frame .mission { margin-top: clamp(16px, 4vh, 36px); }
@media (max-height: 650px) {
  .workflow-frame .mission-diagram svg { max-height: 38svh; }
}

.mission-body {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(0, 7fr);
  align-items: center;
  gap: clamp(26px, 5vw, 80px);
  padding-top: 25px;
}
.mission-body .mission-panel { display: block; padding: 0; }
.mission-body .mission-panel[hidden] { display: none; }
#mission-globe { aspect-ratio: 16 / 9; height: auto; }
@media (max-width: 760px) {
  .mission-body { grid-template-columns: minmax(0, 1fr); gap: 18px; }
}
@media (max-height: 650px) {
  #mission-globe { max-height: 38svh; }
}

.send { position: relative; justify-content: center; }
.send svg { position: absolute; right: 21px; }
