/* FastGIS Mobile — launch page
   ------------------------------------------------------------------ */
:root {
  --navy-0: #060d18;
  --navy-1: #0a1422;
  --navy-2: #0e1c30;
  --panel: rgba(12, 22, 38, 0.72);
  --panel-solid: #0c1626;
  --mint: #3fe0a8;
  --mint-dim: #2bb588;
  --orange: #ff8a3d;
  --ink: #eaf2ff;
  --muted: #9fb2c9;
  --line: rgba(120, 150, 190, 0.18);
  --radius: 20px;
  --shadow: 0 30px 80px rgba(0, 0, 0, 0.55);
  --font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

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

/* ---- Cesium stage: fixed behind everything ---- */
#cesium {
  position: fixed; inset: 0; z-index: 0;
  background: radial-gradient(120% 90% at 50% 0%, #12233d 0%, #060d18 70%);
}
#cesium canvas { outline: none; }
#cesiumCredits { display: none; }
/* darkening + vignette so text always reads over the globe */
#scrim {
  position: fixed; inset: 0; z-index: 1; pointer-events: none;
  background:
    linear-gradient(90deg, rgba(6,13,24,0.55) 0%, rgba(6,13,24,0) 35%, rgba(6,13,24,0) 65%, rgba(6,13,24,0.55) 100%),
    radial-gradient(120% 70% at 50% 50%, rgba(6,13,24,0) 40%, rgba(6,13,24,0.5) 100%);
}

/* ---- content scroll layer ---- */
main { position: relative; z-index: 2; }
.wrap { width: min(1180px, 92vw); margin: 0 auto; }

/* ---- top brand bar ---- */
.topbar {
  position: fixed; top: 0; left: 0; right: 0; z-index: 10;
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px clamp(18px, 4vw, 44px);
  background: linear-gradient(180deg, rgba(6,13,24,0.65), rgba(6,13,24,0));
  backdrop-filter: blur(2px);
}
.brand { display: flex; align-items: center; gap: 11px; font-weight: 800; letter-spacing: -0.02em; font-size: 19px; }
.brand .dot { width: 13px; height: 13px; border-radius: 50%; background: var(--mint); box-shadow: 0 0 16px var(--mint); }
.brand b { color: var(--mint); }
.topbar .pill {
  font-size: 12px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--navy-0); background: var(--mint); padding: 7px 14px; border-radius: 999px;
}

/* ---- HERO ---- */
.hero { min-height: 100svh; display: flex; align-items: center; }
.hero .wrap { padding-top: 64px; }
.eyebrow {
  display: inline-flex; align-items: center; gap: 9px;
  font-size: 13px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
  color: var(--mint); border: 1px solid var(--line); background: rgba(63,224,168,0.08);
  padding: 8px 15px; border-radius: 999px; margin-bottom: 26px;
}
.eyebrow .blink { width: 8px; height: 8px; border-radius: 50%; background: var(--orange); box-shadow: 0 0 12px var(--orange); animation: blink 1.6s ease-in-out infinite; }
@keyframes blink { 0%,100%{opacity:1} 50%{opacity:.25} }
.hero h1 {
  font-size: clamp(40px, 7.2vw, 92px); line-height: 0.98; letter-spacing: -0.035em; font-weight: 850;
  max-width: 14ch; text-wrap: balance;
}
.hero h1 .g { background: linear-gradient(100deg, var(--mint), #7ef0c8 60%, var(--orange)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.hero h1 { text-shadow: 0 3px 40px rgba(0, 0, 0, 0.5); }
.hero p.lead { margin-top: 24px; font-size: clamp(17px, 2.1vw, 22px); color: var(--muted); max-width: 52ch; text-shadow: 0 2px 22px rgba(0, 0, 0, 0.6); }
.hero .cta-row { margin-top: 36px; display: flex; gap: 14px; flex-wrap: wrap; align-items: center; }
.btn {
  display: inline-flex; align-items: center; gap: 9px; font-weight: 750; font-size: 16px;
  padding: 14px 26px; border-radius: 999px; border: 1px solid transparent; cursor: pointer; transition: transform .15s ease, box-shadow .2s ease;
}
.btn-primary { background: var(--mint); color: var(--navy-0); box-shadow: 0 12px 34px rgba(63,224,168,0.35); }
.btn-ghost { background: rgba(255,255,255,0.04); border-color: var(--line); color: var(--ink); }
.btn:hover { transform: translateY(-2px); }
.platforms { margin-top: 26px; display: flex; gap: 18px; color: var(--muted); font-size: 14px; font-weight: 600; align-items: center; }
.platforms span { display: inline-flex; align-items: center; gap: 7px; }

.scrollcue { position: absolute; bottom: 26px; left: 50%; transform: translateX(-50%); color: var(--muted); font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; display: flex; flex-direction: column; align-items: center; gap: 9px; }
.scrollcue .mouse { width: 24px; height: 38px; border: 2px solid var(--line); border-radius: 14px; position: relative; }
.scrollcue .mouse::after { content:""; position: absolute; top: 7px; left: 50%; width: 4px; height: 7px; background: var(--mint); border-radius: 3px; transform: translateX(-50%); animation: scrolldot 1.7s ease-in-out infinite; }
@keyframes scrolldot { 0%{opacity:0; transform: translate(-50%,0)} 30%{opacity:1} 70%{opacity:1} 100%{opacity:0; transform: translate(-50%,12px)} }

/* ---- chapters ---- */
.chapter { min-height: 100svh; display: flex; align-items: center; padding: 90px 0; }
.chapter .wrap { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 76px); align-items: center; }
.chapter.right .wrap { direction: rtl; }
.chapter.right .wrap > * { direction: ltr; }

/* HUD readability card behind chapter copy (FastGIS HUD scheme) */
.chapter .copy {
  position: relative;
  background: linear-gradient(180deg, rgba(10, 20, 34, 0.74), rgba(7, 14, 26, 0.66));
  border: 1px solid rgba(63, 224, 168, 0.18);
  border-left: 3px solid var(--mint);
  border-radius: 18px;
  padding: clamp(22px, 2.8vw, 38px);
  backdrop-filter: blur(13px) saturate(1.05);
  -webkit-backdrop-filter: blur(13px) saturate(1.05);
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.04);
}
/* tiny HUD corner ticks */
.chapter .copy::before, .chapter .copy::after {
  content: ""; position: absolute; width: 14px; height: 14px; border: 2px solid rgba(63, 224, 168, 0.5);
}
.chapter .copy::before { top: 10px; right: 10px; border-left: 0; border-bottom: 0; }
.chapter .copy::after { bottom: 10px; left: 10px; border-right: 0; border-top: 0; }

.copy .kicker { font-size: 13px; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; color: var(--orange); margin-bottom: 16px; display: flex; align-items: center; gap: 10px; }
.copy .kicker .num { font-variant-numeric: tabular-nums; color: var(--mint); }
.copy h2 { font-size: clamp(30px, 4.4vw, 54px); line-height: 1.02; letter-spacing: -0.03em; font-weight: 820; max-width: 16ch; }
.copy p { margin-top: 20px; color: var(--muted); font-size: clamp(16px, 1.6vw, 19px); max-width: 46ch; }
.copy .feats, .wb-copy .feats { margin-top: 26px; display: flex; flex-direction: column; gap: 13px; padding: 0; }
.copy .feats li, .wb-copy .feats li { list-style: none; display: flex; gap: 13px; align-items: flex-start; color: var(--ink); font-size: 15.5px; }
.copy .feats .tick, .wb-copy .feats .tick { flex: none; width: 24px; height: 24px; border-radius: 50%; background: rgba(63,224,168,0.14); color: var(--mint); display: grid; place-items: center; font-size: 13px; font-weight: 800; margin-top: 1px; }

/* ---- phone mockup ---- */
.shot { display: flex; justify-content: center; }
.phone {
  position: relative; width: clamp(230px, 26vw, 310px); aspect-ratio: 9 / 19.5;
  border-radius: 42px; padding: 11px;
  background: linear-gradient(160deg, #1b2840, #070d18);
  box-shadow: var(--shadow), 0 0 0 2px rgba(255,255,255,0.04) inset;
  border: 1px solid rgba(255,255,255,0.06);
}
.phone::before { content:""; position: absolute; top: 16px; left: 50%; transform: translateX(-50%); width: 34%; height: 22px; background: #060d18; border-radius: 0 0 16px 16px; z-index: 3; }
.phone .screen { width: 100%; height: 100%; border-radius: 32px; overflow: hidden; background: #060d18; }
.phone .screen img, .phone .screen video { width: 100%; height: 100%; object-fit: cover; }
.phone .live { position: absolute; top: 22px; right: -12px; z-index: 4; background: var(--orange); color: var(--navy-0); font-size: 11px; font-weight: 800; letter-spacing: 0.06em; padding: 5px 11px; border-radius: 999px; box-shadow: 0 8px 22px rgba(255,138,61,0.45); }
.phone.tilt { transform: rotate(-4deg); }
.chapter.right .phone.tilt { transform: rotate(4deg); }

/* dual phone cluster */
.duo { position: relative; display: flex; justify-content: center; }
.duo .phone:nth-child(1) { transform: rotate(-6deg) translateX(8%); z-index: 1; }
.duo .phone:nth-child(2) { transform: rotate(5deg) translateX(-14%) translateY(6%); width: clamp(200px, 22vw, 270px); z-index: 2; }

/* glass card behind copy on busy chapters */
.glass { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: clamp(24px, 3vw, 40px); backdrop-filter: blur(14px); box-shadow: var(--shadow); }

/* ---- solid sections (no globe) ---- */
.solid { position: relative; z-index: 3; background: linear-gradient(180deg, var(--navy-1), var(--navy-0)); }
.section-head { text-align: center; max-width: 720px; margin: 0 auto 56px; }
.section-head .kicker { color: var(--orange); justify-content: center; }
.section-head h2 { font-size: clamp(30px, 4.6vw, 56px); letter-spacing: -0.03em; font-weight: 820; line-height: 1.03; }
.section-head p { margin-top: 18px; color: var(--muted); font-size: 18px; }

/* CarPlay */
.carplay { padding: clamp(80px, 12vh, 140px) 0; }
.cp-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 22px; }
.cp-grid figure { border-radius: var(--radius); overflow: hidden; border: 1px solid var(--line); box-shadow: var(--shadow); position: relative; background: #000; }
.cp-grid img { width: 100%; height: 100%; object-fit: cover; }
.cp-grid .big { grid-row: span 2; }
.cp-grid figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 16px 18px; font-size: 14px; font-weight: 650; color: #fff; background: linear-gradient(0deg, rgba(0,0,0,0.78), rgba(0,0,0,0)); }
.cp-badges { display: flex; gap: 12px; justify-content: center; margin-top: 36px; flex-wrap: wrap; }
.cp-badges .b { display: inline-flex; gap: 9px; align-items: center; padding: 11px 18px; border: 1px solid var(--line); border-radius: 999px; color: var(--ink); font-weight: 650; background: rgba(255,255,255,0.03); }

/* feature gallery */
.gallery { padding: clamp(70px, 10vh, 130px) 0; position: relative; z-index: 3; background: var(--navy-0); }
.grid-feats { display: grid; grid-template-columns: repeat(12, 1fr); gap: 18px; }
.card { grid-column: span 4; background: var(--panel-solid); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; display: flex; flex-direction: column; transition: transform .2s ease, border-color .2s ease; }
.card:hover { transform: translateY(-4px); border-color: rgba(63,224,168,0.4); }
.card .media { aspect-ratio: 9/16; overflow: hidden; background: #060d18; }
.card .media img, .card .media video { width: 100%; height: 100%; object-fit: cover; object-position: center top; }
.card .body { padding: 20px 20px 24px; }
.card .body h3 { font-size: 19px; letter-spacing: -0.01em; }
.card .body p { color: var(--muted); font-size: 14.5px; margin-top: 8px; }
.card.wide { grid-column: span 8; }
.card.wide .media { aspect-ratio: 16/10; }
.card .tag { font-size: 11px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--mint); margin-bottom: 6px; display: block; }

/* spec strip */
.specs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; margin-top: 64px; }
.specs .s { text-align: center; padding: 28px 16px; border: 1px solid var(--line); border-radius: var(--radius); background: rgba(255,255,255,0.02); }
.specs .s b { display: block; font-size: clamp(28px, 3.4vw, 40px); font-weight: 850; letter-spacing: -0.02em; background: linear-gradient(100deg, var(--mint), var(--orange)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.specs .s span { color: var(--muted); font-size: 14px; font-weight: 600; }

/* ---- desktop / grass_runner workbench ---- */
.workbench { padding: clamp(80px, 12vh, 140px) 0; position: relative; z-index: 3; background: linear-gradient(180deg, var(--navy-0), #0b1830 55%, var(--navy-0)); }
.wb-hero { display: grid; grid-template-columns: 1.35fr 1fr; gap: clamp(28px, 4vw, 60px); align-items: center; }
.wb-copy h2 { font-size: clamp(28px, 3.8vw, 48px); letter-spacing: -0.03em; font-weight: 820; line-height: 1.04; }
.wb-copy .kicker { color: var(--orange); }
.wb-copy p { color: var(--muted); font-size: clamp(16px, 1.6vw, 18px); margin-top: 18px; }
.wb-copy .feats { margin-top: 22px; }
.wb-chips { margin-top: 26px; display: flex; flex-wrap: wrap; gap: 9px; }
.wb-chips span { font-size: 12.5px; font-weight: 650; color: var(--ink); border: 1px solid var(--line); background: rgba(255,255,255,0.03); padding: 7px 13px; border-radius: 999px; }
.wb-chips span b { color: var(--mint); font-weight: 800; }

/* browser window frame */
.browser { border-radius: 14px; overflow: hidden; border: 1px solid var(--line); background: #0c1626; box-shadow: var(--shadow); }
.browser .bar { display: flex; align-items: center; gap: 8px; padding: 11px 14px; background: #0e1c30; border-bottom: 1px solid var(--line); }
.browser .bar i { width: 11px; height: 11px; border-radius: 50%; background: #2a3a52; }
.browser .bar i:nth-child(1) { background: #ff5f57; } .browser .bar i:nth-child(2) { background: #febc2e; } .browser .bar i:nth-child(3) { background: #28c840; }
.browser .url { margin-left: 10px; flex: 1; font-size: 12px; color: var(--muted); background: #0a1422; border: 1px solid var(--line); border-radius: 8px; padding: 6px 13px; }
.browser .view { display: block; width: 100%; height: auto; background: #060d18; }

.wb-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 34px; }
.wb-row .browser .view { aspect-ratio: 16/10; object-fit: cover; object-position: center top; }
.wb-row .cap { padding: 16px 18px 20px; }
.wb-row .cap .tag { font-size: 11px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--mint); }
.wb-row .cap h3 { font-size: 17px; margin-top: 6px; }
.wb-row .cap p { color: var(--muted); font-size: 14px; margin-top: 6px; }
.wb-note { margin-top: 22px; text-align: center; color: var(--muted); font-size: 13px; }

/* CTA */
.cta { position: relative; z-index: 3; padding: clamp(90px, 14vh, 170px) 0; text-align: center; background: radial-gradient(110% 120% at 50% 0%, #11314f 0%, var(--navy-0) 60%); }
.cta h2 { font-size: clamp(36px, 6vw, 76px); letter-spacing: -0.035em; font-weight: 850; line-height: 1; }
.cta h2 .g { background: linear-gradient(100deg, var(--mint), var(--orange)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.cta p { color: var(--muted); font-size: 19px; margin: 22px auto 0; max-width: 50ch; }
.note { margin-top: 16px; color: var(--muted); font-size: 13px; }

/* mini survey */
.survey { margin: 40px auto 0; max-width: 760px; text-align: left; }
.survey .q { margin-bottom: 24px; }
.survey .q > label { display: block; font-weight: 750; font-size: 15.5px; margin-bottom: 12px; color: var(--ink); }
.survey .q > label .opt { color: var(--muted); font-weight: 500; font-size: 12.5px; margin-left: 7px; }
.chips { display: flex; flex-wrap: wrap; gap: 9px; }
.chip { cursor: pointer; font-size: 14px; font-weight: 600; color: var(--ink); background: rgba(255,255,255,0.04); border: 1px solid var(--line); border-radius: 999px; padding: 9px 15px; transition: background .15s ease, color .15s ease, border-color .15s ease; }
.chip:hover { border-color: rgba(63,224,168,0.55); }
.chip.on { background: var(--mint); color: var(--navy-0); border-color: var(--mint); }
.survey input[type="text"], .survey input[type="email"] { width: 100%; padding: 14px 18px; border-radius: 14px; border: 1px solid var(--line); background: rgba(255,255,255,0.04); color: var(--ink); font-size: 15px; outline: none; }
.survey input:focus { border-color: var(--mint); }
.survey .email-row { display: flex; gap: 10px; flex-wrap: wrap; }
.survey .email-row input { flex: 1; min-width: 220px; border-radius: 999px; }
.survey .actions { margin-top: 22px; display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.survey .actions .note { margin: 0; }
.survey-thanks { display: none; max-width: 620px; margin: 40px auto 0; padding: 34px; text-align: center; border: 1px solid rgba(63,224,168,0.3); border-radius: var(--radius); background: rgba(63,224,168,0.06); }
.survey-thanks.show { display: block; }
.survey-thanks h3 { font-size: 26px; letter-spacing: -0.02em; }
.survey-thanks p { color: var(--muted); margin-top: 10px; font-size: 15.5px; }
.survey .hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.survey-error { display: none; margin-top: 14px; color: #ff9a7a; font-size: 14px; }
.survey-error.show { display: block; }
.survey-error a, footer a { color: var(--mint); }
.survey-error a:hover, footer a:hover { text-decoration: underline; }

/* footer */
footer { position: relative; z-index: 3; background: var(--navy-0); border-top: 1px solid var(--line); padding: 40px 0; }
footer .wrap { display: flex; justify-content: space-between; align-items: center; gap: 20px; flex-wrap: wrap; color: var(--muted); font-size: 14px; }

/* ---- responsive ---- */
@media (max-width: 860px) {
  .chapter .wrap, .cp-grid, .grid-feats, .specs, .wb-hero, .wb-row { grid-template-columns: 1fr; }
  .chapter.right .wrap { direction: ltr; }
  .chapter { padding: 70px 0; min-height: auto; }
  .copy { order: 2; }
  .shot { order: 1; margin-bottom: 12px; }
  .card, .card.wide { grid-column: auto; }
  .cp-grid .big { grid-row: auto; }
  .specs { grid-template-columns: 1fr 1fr; }
  .duo .phone:nth-child(2) { display: none; }
  .duo .phone:nth-child(1) { transform: none; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } .blink, .scrollcue .mouse::after { animation: none; } }
