/* ============================================================
   THEME TOKENS — the four cockpit palettes from the app.
   Switching data-theme on <html> re-skins the whole page.
   ============================================================ */
:root{
  --bg:#F2EDE1; --panel:#FFFFFF; --border:#DED4BC; --text:#1C1B19;
  --muted:#6B6459; --accent:#B8862E; --green:#3F7D4E; --red:#B3261E;
  --amber:#C77B12; --grid:rgba(28,27,25,.055);
  --shadow:0 1px 2px rgba(28,27,25,.05),0 8px 24px -12px rgba(28,27,25,.14);
  --bw:1px;
}
[data-theme="night"]{--bg:#07090A;--panel:#120404;--border:#3A1010;--text:#FF4433;--muted:#9E3A30;--accent:#FF5A46;--green:#E2452F;--red:#FF2A1A;--amber:#FF6A2A;--grid:rgba(255,68,51,.06);--shadow:none}
[data-theme="sunlight"]{--bg:#000;--panel:#111;--border:#4A4A4A;--text:#FFF;--muted:#D8D8D8;--accent:#FFD400;--green:#38E24A;--red:#FF3B30;--amber:#FFD400;--grid:rgba(255,255,255,.07);--shadow:none}
[data-theme="glare"]{--bg:#FFF;--panel:#FFF;--border:#000;--text:#000;--muted:#1A1A1A;--accent:#0033CC;--green:#006622;--red:#C00;--amber:#B35A00;--grid:rgba(0,0,0,.07);--shadow:none;--bw:2px}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,sans-serif;
  font-size:17px;line-height:1.6;overflow-x:hidden;
  transition:background-color .45s ease,color .45s ease}
body::before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:64px 64px}
h1,h2,h3{font-family:"Space Grotesk",Inter,sans-serif;font-weight:700;line-height:1.06;letter-spacing:-.02em;margin:0}
p{margin:0}
a{color:inherit}
.wrap{width:min(1180px,92vw);margin-inline:auto;position:relative;z-index:1}
.eyebrow{font-family:"JetBrains Mono",monospace;font-size:11px;font-weight:700;
  letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
:focus-visible{outline:2.5px solid var(--accent);outline-offset:3px;border-radius:6px}

/* ---------------- HEADER ---------------- */
header{position:sticky;top:0;z-index:50;border-bottom:var(--bw) solid var(--border);
  background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(12px)}
.nav{display:flex;align-items:center;gap:16px;padding:14px 0}
.brand{font-family:"Space Grotesk",sans-serif;font-weight:700;font-size:21px;
  letter-spacing:.16em;text-decoration:none;display:flex;align-items:center;gap:9px}
/* App icon at the wordmark's own size — 1.15em tracks the font, so it
   scales with .brand wherever it's used (header, doc pages). */
.brand-logo{width:1.15em;height:1.15em;border-radius:24%;flex-shrink:0;display:block}
/* Theme key (phones only — see the 560px block). On desktop
   .theme-control is just a plain wrapper around the real themebar. */
.theme-control{display:flex;align-items:center;margin-left:auto}
.theme-toggle{display:none}
.themebar{display:flex;gap:2px;padding:3px;
  border:var(--bw) solid var(--border);border-radius:999px;background:var(--panel)}
.themebar button{display:flex;align-items:center;gap:6px;font-family:"JetBrains Mono",monospace;
  font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  padding:7px 12px 7px 10px;border:0;border-radius:999px;white-space:nowrap;
  background:transparent;color:var(--muted);cursor:pointer;transition:background .25s,color .25s}
.themebar button:hover{color:var(--text)}
.themebar button[aria-pressed="true"]{background:var(--accent);color:var(--bg)}
[data-theme="night"] .themebar button[aria-pressed="true"],
[data-theme="sunlight"] .themebar button[aria-pressed="true"]{color:#000}
/* Icons are injected by JS (one map, shared by every button and the
   mobile toggle) so the glyph and the label can never drift apart. */
.themebar button .t-icon{display:flex;flex-shrink:0}
.themebar button .t-icon svg{width:12px;height:12px}

/* ---------------- BUTTONS ---------------- */
.btn{font-size:15px;font-weight:600;padding:14px 24px;border-radius:10px;cursor:pointer;
  text-decoration:none;display:inline-flex;align-items:center;gap:9px;font-family:Inter,sans-serif;
  border:var(--bw) solid transparent;transition:transform .15s,opacity .2s,border-color .2s,color .2s}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--accent);color:var(--bg)}
[data-theme="night"] .btn-primary,[data-theme="sunlight"] .btn-primary{color:#000}
.btn-primary:hover{opacity:.88}
.btn-ghost{border-color:var(--border);color:var(--text);background:transparent}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}

/* Pricing */
.plans{display:grid;grid-template-columns:1fr 1fr;gap:18px;max-width:820px}
.plan{background:var(--panel);border:var(--bw) solid var(--border);border-radius:16px;padding:26px}
.plan.pro{border-color:var(--accent);border-width:1.5px}
.plan h3{margin:0 0 4px;font-family:"Space Grotesk",sans-serif;font-size:18px}
.plan .price{font-family:"Space Grotesk",sans-serif;font-size:40px;font-weight:700;margin:8px 0 2px}
.plan.pro .price{color:var(--accent)}
.plan .per{color:var(--muted);font-size:14px}
.plan ul{list-style:none;padding:0;margin:20px 0 0;display:grid;gap:10px}
.plan li{display:flex;gap:10px;font-size:15px;align-items:flex-start}
.plan li svg{width:16px;height:16px;flex-shrink:0;color:var(--green);margin-top:3px}
.plan-note{margin-top:24px;color:var(--muted);font-size:15px;max-width:70ch}

/* Waitlist legal line + footer links */
.wl-legal{margin:8px 0 0;font-size:11.5px;color:var(--muted);text-align:center}
.wl-legal-left{text-align:left;margin-top:6px}
.wl-legal a,.foot-links a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.foot-links{display:flex;gap:16px;margin-top:10px;font-size:13px;color:var(--muted)}
.foot-links a:hover{color:var(--accent)}

/* Document pages (privacy, support) */
.doc{max-width:720px;margin:0 auto;padding:40px 20px 72px}
.doc h1{font-family:"Space Grotesk",sans-serif;font-size:clamp(30px,5vw,42px);margin:10px 0 6px}
.doc .updated{font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--muted)}
.doc h2{font-family:"Space Grotesk",sans-serif;font-size:21px;margin:36px 0 8px}
.doc p,.doc li{font-size:16px;line-height:1.65;color:var(--text)}
.doc ul{padding-left:20px}
.doc a{color:var(--accent)}
.doc .lead{font-size:18px;color:var(--muted)}
.doc .callout{border:var(--bw) solid var(--border);background:var(--panel);border-radius:12px;padding:16px 18px;margin:22px 0}
.doc-top{display:flex;justify-content:space-between;align-items:center;padding:20px}

/* Waitlist form */
.waitlist{max-width:480px;margin:28px auto 0}
/* Hero variant — left-aligned to match the hero's own text block,
   not centered like the #get section's copy of this same form.
   flex-basis so it fills the hero's .cta-row instead of shrinking to
   its content width (which squeezed the input down to a sliver). */
.waitlist-inline{flex:1 1 440px;max-width:460px;margin:0}
.wl-success-inline{flex:1 1 440px;max-width:460px;margin:0}
/* Input and button are ONE control: same height, same radius, the
   button tucked inside the field's frame. A single fixed height on
   both (instead of padding + line-height maths that differ between
   an <input> and a <button>) is what keeps them identical on every
   browser, including iOS Safari. */
.wl-row{display:flex;align-items:center;gap:6px;padding:5px;
  border:var(--bw) solid var(--border);border-radius:14px;background:var(--panel);
  transition:border-color .2s,box-shadow .2s}
.wl-row:focus-within{border-color:var(--accent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}
.wl-row.wl-invalid{border-color:var(--red);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--red) 18%,transparent)}
.waitlist input[type="email"]{flex:1 1 auto;min-width:0;width:100%;box-sizing:border-box;
  height:46px;margin:0;padding:0 12px;
  -webkit-appearance:none;appearance:none;border:0;border-radius:10px;
  background:transparent;color:var(--text);box-shadow:none;
  font-family:Inter,sans-serif;font-size:16px;line-height:46px}
.waitlist input[type="email"]:focus,
.waitlist input[type="email"]:focus-visible{outline:none}
.waitlist input[type="email"]::placeholder{color:var(--muted);opacity:1}
/* Browser autofill paints its own yellow/blue background; keep ours. */
.waitlist input[type="email"]:-webkit-autofill{
  -webkit-box-shadow:0 0 0 40px var(--panel) inset;-webkit-text-fill-color:var(--text)}
.waitlist .btn-primary{flex:0 0 auto;box-sizing:border-box;height:46px;margin:0;
  padding:0 20px;border:0;border-radius:10px;white-space:nowrap;
  justify-content:center;font-size:15px;line-height:1;
  -webkit-appearance:none;appearance:none}
.waitlist .btn-primary:focus-visible{outline:2px solid var(--text);outline-offset:2px}
.waitlist .btn-primary:disabled{opacity:.7;cursor:default;transform:none}
/* The spinner is an <svg>, and the `hidden` attribute does nothing on
   SVG elements (it's an HTML-only attribute) — which is why it was
   showing next to the idle label. Driven by a class on the button
   instead. */
.wl-spinner{display:none;width:16px;height:16px;flex-shrink:0}
.waitlist .btn-primary.is-loading .wl-spinner{display:block;animation:wlspin .8s linear infinite}
@keyframes wlspin{to{transform:rotate(360deg)}}
.wl-hint{margin:10px 0 0;font-size:12px;color:var(--muted);text-align:center}
.wl-hint.wl-err{color:var(--red);font-weight:600}
/* display:flex scoped to :not([hidden]) rather than on .wl-success
   directly — a bare `.wl-success{display:flex}` has the same (0,1,0)
   specificity as the browser's own `[hidden]{display:none}` rule, and
   since my stylesheet loads after the UA stylesheet, source order let
   mine win regardless of whether JS had correctly set the hidden
   attribute. The form and success message were briefly visible at the
   same time because of exactly this — the JS toggle was correct the
   whole time, CSS was just overriding it. */
.wl-success:not([hidden]){display:flex}
.wl-success{max-width:460px;margin:28px auto 0;align-items:center;gap:12px;
  padding:16px 18px;border-radius:12px;border:var(--bw) solid var(--green);
  background:color-mix(in srgb,var(--green) 10%,var(--panel));text-align:left}
.wl-success svg{width:22px;height:22px;flex-shrink:0;color:var(--green)}
.wl-success p{margin:0;font-size:14px}
.wl-store-note{margin-top:16px;font-size:12px;color:var(--muted);
  font-family:"JetBrains Mono",monospace;letter-spacing:.02em}

/* ---------------- HERO ---------------- */
.hero{padding:74px 0 34px;position:relative}
/* A flight path that draws itself once, behind the copy. */
.path{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:.5}
.path path{fill:none;stroke:var(--accent);stroke-width:1.5;stroke-dasharray:6 7;
  stroke-dashoffset:1200;animation:draw 3s ease-out .3s forwards}
@keyframes draw{to{stroke-dashoffset:0}}
.hero-grid{display:grid;grid-template-columns:1.02fr .98fr;gap:56px;align-items:center}
.hero h1{font-size:clamp(38px,4.7vw,60px);margin:16px 0 20px}
.hero h1 em{font-style:normal;color:var(--accent);
  background-image:linear-gradient(var(--accent),var(--accent));
  background-size:100% 3px;background-repeat:no-repeat;background-position:0 100%;
  -webkit-box-decoration-break:clone;box-decoration-break:clone;padding-bottom:3px}
.lede{font-size:19px;color:var(--muted);max-width:47ch}
.cta-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}
.hero-note{margin-top:18px;font-family:"JetBrains Mono",monospace;font-size:12px;
  color:var(--muted);display:flex;align-items:center;gap:8px}
.hero-note-sm{font-size:10.5px;opacity:.85}
.dot{width:7px;height:7px;border-radius:50%;background:var(--green);flex-shrink:0;
  animation:blink 1.8s ease-in-out infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}

/* Staggered entrance */
.up{opacity:0;transform:translateY(16px);animation:up .7s cubic-bezier(.2,.7,.3,1) forwards}
@keyframes up{to{opacity:1;transform:none}}
.d1{animation-delay:.05s}.d2{animation-delay:.15s}.d3{animation-delay:.25s}
.d4{animation-delay:.35s}.d5{animation-delay:.45s}.d6{animation-delay:.55s}

/* ---------------- DEVICE / CHECKLIST ---------------- */
.device{background:var(--panel);border:var(--bw) solid var(--border);border-radius:22px;
  padding:18px;box-shadow:var(--shadow)}
.device-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}
.device-title{font-family:"Space Grotesk",sans-serif;font-weight:700;font-size:16px}
.counter{font-family:"JetBrains Mono",monospace;font-size:13px;font-weight:700;color:var(--muted)}
.progress{height:6px;border-radius:99px;background:var(--border);overflow:hidden}
.progress span{display:block;height:100%;width:0;background:var(--accent);border-radius:99px;
  transition:width .35s cubic-bezier(.4,0,.2,1)}
.rows{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:7px}
.row{display:flex;align-items:center;gap:12px;padding:13px 14px;border-radius:12px;
  border:var(--bw) solid var(--border);background:var(--panel);cursor:pointer;width:100%;
  text-align:left;font:inherit;color:inherit;position:relative;
  transition:background .2s,border-color .2s,transform .12s}
.row:hover{border-color:var(--accent)}
.row:active{transform:scale(.99)}
.tick{width:24px;height:24px;border-radius:50%;flex-shrink:0;border:2px solid var(--accent);
  display:grid;place-items:center;transition:background .2s,border-color .2s,transform .25s}
.tick svg{width:12px;height:12px;opacity:0;color:var(--panel);transition:opacity .2s}
.challenge{font-family:"JetBrains Mono",monospace;font-size:14px;font-weight:500}
.opt-badge{font-family:"JetBrains Mono",monospace;font-size:8px;font-weight:700;
  color:var(--muted);background:color-mix(in srgb,var(--muted) 14%,transparent);
  padding:2px 5px;border-radius:99px;margin-left:6px;letter-spacing:.03em;
  vertical-align:1px;white-space:nowrap}
.response{margin-left:auto;font-family:"JetBrains Mono",monospace;font-size:14px;
  font-weight:700;text-transform:uppercase}
.row[aria-pressed="true"]{background:color-mix(in srgb,var(--green) 20%,var(--panel));
  border-color:color-mix(in srgb,var(--green) 60%,transparent)}
.row[aria-pressed="true"]::before{content:"";position:absolute;left:5px;top:7px;bottom:7px;
  width:4px;border-radius:2px;background:var(--green)}
.row[aria-pressed="true"] .tick{background:var(--green);border-color:var(--green);transform:scale(1.08)}
.row[aria-pressed="true"] .tick svg{opacity:1}
.row[aria-pressed="true"] .response{color:var(--green)}
.row.critical{border-color:color-mix(in srgb,var(--red) 55%,transparent)}
.row.critical .tick{border-color:var(--red)}
.row.critical[aria-pressed="true"] .tick{background:var(--red);border-color:var(--red)}
.cond{display:grid;gap:4px;margin-left:auto;text-align:right}
.cond div{font-family:"JetBrains Mono",monospace;font-size:14px;font-weight:700;
  text-transform:uppercase;color:var(--text)}
.row[aria-pressed="true"] .cond div{color:var(--green)}
.done-pill{margin-top:12px;padding:11px;border-radius:999px;background:var(--green);
  color:var(--panel);font-family:"JetBrains Mono",monospace;font-size:12px;font-weight:700;
  letter-spacing:.06em;text-align:center;text-transform:uppercase;
  opacity:0;transform:translateY(6px) scale(.97);transition:opacity .3s,transform .3s}
.done-pill.on{opacity:1;transform:none}
[data-theme="glare"] .done-pill{color:#fff}

/* ---------------- PHASE STRIP ---------------- */
/* top follows the real header height (set from JS as --header-h), since
   the header is a different height on phones than on desktop. */
.strip{position:sticky;top:var(--header-h,61px);z-index:40;padding:9px 0;
  border-block:var(--bw) solid var(--border);
  background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(10px)}
.strip-wrap{display:flex;align-items:center;gap:12px}
.strip-inner{display:flex;gap:3px;flex:1;min-width:0}
.strip-now{display:none}
.seg{flex:1;display:grid;gap:4px}
.seg i{display:block;height:4px;border-radius:99px;background:var(--border);transition:background .4s}
.seg span{font-family:"JetBrains Mono",monospace;font-size:8px;letter-spacing:.04em;
  text-transform:uppercase;color:var(--muted);white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;opacity:.6;transition:opacity .3s,color .3s}
.seg.past i{background:var(--green)}
.seg.now i{background:var(--accent)}
.seg.now span{opacity:1;color:var(--accent);font-weight:700}

/* ---------------- SECTIONS ---------------- */
section{padding:92px 0;position:relative;z-index:1}
.sec-head{max-width:62ch;margin-bottom:44px}
.sec-head h2{font-size:clamp(30px,3.6vw,44px);margin:14px 0 16px}
.sec-head p{color:var(--muted);font-size:18px}
.split{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.split+.split{margin-top:88px}

/* Airfield demo */
.airfield-demo{background:var(--panel);border:var(--bw) solid var(--border);border-radius:18px;
  padding:22px}
.af-switch-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.af-kind{font-family:"JetBrains Mono",monospace;font-size:10px;font-weight:700;
  letter-spacing:.06em;color:var(--muted)}
.af-switch{position:relative;display:flex;align-items:center;width:104px;height:30px;
  border:1.5px solid var(--accent);border-radius:8px;background:var(--panel);cursor:pointer;
  font:inherit;padding:0}
.af-switch span:not(.af-tab){flex:1;text-align:center;font-family:"JetBrains Mono",monospace;
  font-size:10px;font-weight:700;z-index:1;color:var(--muted);transition:color .2s}
.af-tab{position:absolute;top:2px;left:2px;width:48px;height:24px;border-radius:6px;
  background:var(--accent);transition:transform .3s cubic-bezier(.4,0,.2,1)}
.af-switch[data-arr="true"] .af-tab{transform:translateX(48px)}
.af-switch[data-arr="true"] span:nth-of-type(1){color:var(--muted)}
.af-switch[data-arr="true"] span:nth-of-type(2){color:#fff}
.af-switch:not([data-arr="true"]) span:nth-of-type(1){color:#fff}
.af-identity{display:flex;align-items:baseline;gap:9px;margin-bottom:16px}
.af-identity b{font-family:"Space Grotesk",sans-serif;font-size:26px}
.af-identity span{color:var(--muted);font-size:14px}
.af-runway{background:var(--bg);border-radius:12px;padding:14px;margin-bottom:12px}
.af-runway-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.af-runway-head b{font-family:"Space Grotesk",sans-serif;font-size:19px;font-weight:700}
.af-runway-head span{font-family:"JetBrains Mono",monospace;font-weight:600;color:var(--muted)}
.af-runway-meta{display:flex;align-items:center;gap:8px}
.af-runway-head .af-surface{display:inline-flex;align-items:center;gap:4px;font-size:10px;
  font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--accent);
  background:var(--panel);border:1px solid var(--border);border-radius:20px;
  padding:3px 9px 3px 7px;white-space:nowrap}
.af-surface svg{width:10px;height:10px}
.af-ends{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.af-end{background:var(--panel);border-radius:10px;padding:10px 12px}
.af-end small{display:block;font-family:"JetBrains Mono",monospace;font-size:10px;
  font-weight:700;color:var(--muted);margin-bottom:4px}
.af-end b{display:block;font-family:"Space Grotesk",sans-serif;font-size:18px;
  font-weight:800;margin-bottom:4px}
.af-end em{display:flex;align-items:center;gap:4px;font-style:normal;font-family:"JetBrains Mono",monospace;
  font-size:10px;font-weight:700;color:var(--accent)}
.af-end em svg{width:11px;height:11px}
.af-freq{display:flex;justify-content:space-between;align-items:center;background:var(--bg);
  border-radius:12px;padding:12px 14px}
.af-freq small{font-family:"JetBrains Mono",monospace;font-size:10px;font-weight:700;color:var(--muted)}
.af-freq b{font-family:"Space Grotesk",sans-serif;font-size:18px}

/* Scratch pad demo */
.scratch-demo{background:var(--panel);border:var(--bw) solid var(--border);border-radius:18px;
  overflow:hidden}
.scratch-toolbar{display:flex;justify-content:space-between;align-items:center;
  padding:12px 16px;border-bottom:var(--bw) solid var(--border)}
.scratch-toolbar span{font-family:"Space Grotesk",sans-serif;font-weight:700;font-size:14px}
.scratch-toolbar svg{width:16px;height:16px;color:var(--muted)}
.scratch-note{display:block;width:100%;height:auto}
.split h3{font-size:clamp(23px,2.7vw,31px);margin-bottom:14px}
.split p{color:var(--muted)}
.split ul{margin:20px 0 0;padding:0;list-style:none;display:grid;gap:11px}
.split li{display:flex;gap:11px;font-size:15px;align-items:flex-start}
.split li svg{width:16px;height:16px;color:var(--green);flex-shrink:0;margin-top:4px}

.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.card{background:var(--panel);border:var(--bw) solid var(--border);border-radius:18px;
  padding:26px;box-shadow:var(--shadow);transition:transform .28s,border-color .28s}
.card:hover{transform:translateY(-4px);border-color:var(--accent)}
.card h3{font-size:19px;margin-bottom:9px}
.card p{color:var(--muted);font-size:15px}
.card .ico{width:38px;height:38px;border-radius:10px;margin-bottom:16px;display:grid;
  place-items:center;background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent)}
.card .ico svg{width:19px;height:19px}

/* ---------------- FLOW STEPPER ---------------- */
.flowbox{background:var(--panel);border:var(--bw) solid var(--border);border-radius:20px;
  padding:20px;box-shadow:var(--shadow)}
.fbar{display:flex;gap:3px;align-items:flex-start}
.fseg{flex:1;display:grid;gap:4px}
.fseg i{display:block;height:5px;border-radius:99px;background:var(--border);
  transition:background .35s}
.fseg span{font-family:"JetBrains Mono",monospace;font-size:7.5px;text-transform:uppercase;
  color:var(--muted);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  transition:color .3s}
.fseg.done i{background:var(--green)}
.fseg.cur i{background:var(--accent)}
.fseg.cur span{color:var(--accent);font-weight:700}
.fbody{margin-top:16px;min-height:186px}
.fname{font-family:"Space Grotesk",sans-serif;font-weight:700;font-size:16px;margin-bottom:10px;
  display:flex;justify-content:space-between;align-items:baseline}
.fname small{font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--muted);font-weight:400}
.fitem{display:flex;gap:10px;align-items:center;padding:9px 12px;border-radius:10px;
  border:var(--bw) solid var(--border);margin-bottom:6px;
  font-family:"JetBrains Mono",monospace;font-size:12.5px;
  animation:fin .35s ease backwards}
.fitem em{margin-left:auto;font-style:normal;font-weight:700;color:var(--muted)}

/* ---- Cockpit switches ---- */
.cswitch-row{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
/* Push-button, not a switch: square key, annunciator light on top. */
.cswitch{display:flex;flex-direction:column;align-items:center;gap:6px;width:80px;padding:9px 6px;
  background:var(--panel);border:1px solid var(--border);border-radius:10px;cursor:pointer;
  font:inherit;color:inherit;box-shadow:0 1.5px 2px rgba(0,0,0,.08);
  transition:transform .12s ease,background .18s,border-color .18s}
.cswitch:active{transform:translateY(1px) scale(.95)}
.cswitch::before{content:"";width:24px;height:3.5px;border-radius:2px;background:var(--border);
  transition:background .18s,box-shadow .18s}
.cswitch-track{display:grid;place-items:center}
.cswitch-tab{display:grid;place-items:center}
.cswitch-tab svg{width:18px;height:18px;color:var(--text);transition:color .18s}
.cswitch span:last-child{font-size:11px;font-weight:600;color:var(--muted);white-space:nowrap;transition:color .18s}
.cswitch[aria-pressed="true"]{background:color-mix(in srgb,var(--accent) 12%,var(--panel));
  border-color:var(--accent);border-width:1.5px}
.cswitch[aria-pressed="true"]::before{background:var(--accent);box-shadow:0 0 6px var(--accent)}
.cswitch[aria-pressed="true"] .cswitch-tab svg,
.cswitch[aria-pressed="true"] span:last-child{color:var(--accent);font-weight:700}
.cswitch-hint{font-family:"JetBrains Mono",monospace;font-size:9.5px;color:var(--muted);
  opacity:.65;margin:0 0 0 2px}
.fitem::before{content:"";width:15px;height:15px;border-radius:50%;flex-shrink:0;
  border:2px solid var(--accent);opacity:.55}
@keyframes fin{from{opacity:0;transform:translateX(-8px)}}
.fctl{display:flex;gap:9px;margin-top:16px}
.fctl button{flex:1;padding:12px;border-radius:10px;border:var(--bw) solid var(--border);
  background:transparent;color:var(--text);font:600 14px Inter,sans-serif;cursor:pointer;
  transition:border-color .2s,opacity .2s}
.fctl button:hover:not(:disabled){border-color:var(--accent)}
.fctl button:disabled{opacity:.35;cursor:default}
.fctl .go{background:var(--accent);color:var(--bg);border-color:var(--accent);flex:1.6}
[data-theme="night"] .fctl .go,[data-theme="sunlight"] .fctl .go{color:#000}

/* ---------------- REFERENCE ---------------- */
.reftiles{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}
.reftile{display:flex;align-items:center;gap:9px;padding:11px 16px;border-radius:12px;
  border:var(--bw) solid var(--border);background:var(--panel);cursor:pointer;font:inherit;
  color:inherit;transition:border-color .2s,transform .18s,background .2s}
.reftile:hover{transform:translateY(-2px);border-color:var(--accent)}
.reftile svg{width:15px;height:15px;color:var(--accent)}
.reftile b{font-family:"Space Grotesk",sans-serif;font-size:13.5px}
.reftile[aria-pressed="true"]{border-color:var(--accent);
  background:color-mix(in srgb,var(--accent) 12%,var(--panel))}
.reftile.ghost{border-style:dashed;color:var(--muted)}
.refgrid{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}
.refpanel{background:var(--panel);border:var(--bw) solid var(--border);border-radius:20px;
  padding:22px;box-shadow:var(--shadow);min-height:290px}
.refhead{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:16px;
  padding-bottom:13px;border-bottom:var(--bw) solid var(--border)}
.refhead b{font-family:"Space Grotesk",sans-serif;font-size:17px}
.refhead small{font-family:"JetBrains Mono",monospace;font-size:10px;color:var(--muted);
  text-transform:uppercase;letter-spacing:.09em}
.refgroup{font-family:"JetBrains Mono",monospace;font-size:10px;font-weight:700;
  letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin:16px 0 8px}
.refgroup:first-child{margin-top:0}
.refrow{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;
  border:var(--bw) solid var(--border);border-radius:11px;margin-bottom:6px;
  animation:fin .3s ease backwards}
.refrow span{font-family:"JetBrains Mono",monospace;font-size:13.5px}
.refrow b{font-family:"JetBrains Mono",monospace;font-size:13.5px;color:var(--accent)}

/* ---- Reference side panel: what the card is for, plus a visual ---- */
.refside{position:sticky;top:112px;display:grid;gap:18px}
.refside-card{background:var(--panel);border:var(--bw) solid var(--border);
  border-radius:20px;padding:24px;box-shadow:var(--shadow)}
.refside h3{font-size:19px;margin-bottom:9px}
.refside p{color:var(--muted);font-size:15px}
.refside .scope{display:inline-flex;align-items:center;gap:7px;margin-top:16px;
  padding:7px 13px;border-radius:999px;border:var(--bw) solid var(--border);
  font-family:"JetBrains Mono",monospace;font-size:10.5px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted)}
.refside .scope svg{width:12px;height:12px;color:var(--accent)}
.reftip{display:flex;gap:11px;align-items:flex-start;font-size:14px;color:var(--muted);
  padding-top:16px;margin-top:16px;border-top:var(--bw) solid var(--border)}
.reftip svg{width:15px;height:15px;color:var(--accent);flex-shrink:0;margin-top:4px}
.refvis{height:168px;display:grid;place-items:center;overflow:hidden;
  background:var(--panel);border:var(--bw) solid var(--border);border-radius:20px}
.refvis svg{width:100%;height:100%}

/* Visual animations, one per card type. Each is deliberately simple —
   a single idea in motion, not a diagram to decode. */
.vs-needle{transform-origin:100px 100px;animation:sweep 4.5s cubic-bezier(.5,0,.5,1) infinite}
@keyframes sweep{0%,8%{transform:rotate(-125deg)}45%,55%{transform:rotate(38deg)}92%,100%{transform:rotate(-125deg)}}
.fq-ring{transform-origin:center;animation:ping 2.6s ease-out infinite;opacity:0}
.fq-ring:nth-of-type(2){animation-delay:.65s}
.fq-ring:nth-of-type(3){animation-delay:1.3s}
.fq-ring:nth-of-type(4){animation-delay:1.95s}
@keyframes ping{0%{transform:scale(.25);opacity:.9}100%{transform:scale(1.6);opacity:0}}
.cloud{animation:drift 9s ease-in-out infinite}
.cloud.b{animation-duration:12s;animation-direction:reverse}
@keyframes drift{0%,100%{transform:translateX(-10px)}50%{transform:translateX(10px)}}
.mini-plane{animation:bob 3.4s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
.wand{transform-origin:50% 90%;animation:wave 1.5s ease-in-out infinite}
.wand.r{animation-delay:.75s}
@keyframes wave{0%,100%{transform:rotate(-22deg)}50%{transform:rotate(22deg)}}
.loadbar{transform-origin:left center;animation:fill 2.6s cubic-bezier(.3,0,.2,1) infinite}
.loadbar.b{animation-delay:.35s}
@keyframes fill{0%{transform:scaleX(0)}55%,100%{transform:scaleX(1)}}
.gauge-n{transform-origin:100px 108px;animation:gsweep 5s ease-in-out infinite}
@keyframes gsweep{0%,10%{transform:rotate(-58deg)}50%,62%{transform:rotate(30deg)}95%,100%{transform:rotate(-58deg)}}

/* Airport Signs — three mini signs along a taxiway, glowing in turn */
.sign-glow{animation:signglow 3.6s ease-in-out infinite;transform-origin:center}
.sign-glow.s2{animation-delay:1.2s}
.sign-glow.s3{animation-delay:2.4s}
@keyframes signglow{0%,72%,100%{opacity:.55;transform:scale(1)}12%,20%{opacity:1;transform:scale(1.08)}}

/* METAR bars — sky coverage growing in from clear to overcast */
.mbar{transform-origin:bottom;animation:mgrow 2.8s ease-in-out infinite}
.mbar:nth-of-type(2){animation-delay:.15s}
.mbar:nth-of-type(3){animation-delay:.3s}
.mbar:nth-of-type(4){animation-delay:.45s}
@keyframes mgrow{0%,100%{transform:scaleY(.35)}50%{transform:scaleY(1)}}

/* Distress & Emergency Codes — a pulsing transponder glow */
.xpdr-box{animation:xpdrglow 1.6s ease-in-out infinite}
@keyframes xpdrglow{0%,100%{stroke-opacity:.3}50%{stroke-opacity:1}}

/* ---------------- STATS ---------------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:6px}
.stat{padding:22px;border:var(--bw) solid var(--border);border-radius:16px;background:var(--panel)}
.stat b{display:block;font-family:"Space Grotesk",sans-serif;font-size:34px;color:var(--accent);
  line-height:1;letter-spacing:-.03em}
.stat small{display:block;margin-top:7px;font-family:"JetBrains Mono",monospace;font-size:10.5px;
  text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}

/* ---------------- EMERGENCY ---------------- */
.emergency{background:#080403;border-radius:24px;padding:52px;
  border:var(--bw) solid rgba(255,68,51,.32)}
.emergency .eyebrow{color:#FF4433}
.emergency h2{color:#fff}
.emergency>p{color:rgba(255,255,255,.66)}
.egrid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:32px}
.ecard{background:#4A0F0C;border:var(--bw) solid rgba(255,68,51,.5);border-radius:15px;
  padding:16px;min-height:112px;display:flex;flex-direction:column;gap:8px;
  transition:transform .25s,border-color .25s}
.ecard:hover{transform:translateY(-4px);border-color:rgba(255,68,51,.95)}
.ecard.abn{background:#3A2A05;border-color:rgba(255,212,0,.42)}
.ecard svg{width:20px;height:20px;color:#fff}
.ecard.abn svg{color:#FFD400}
.ecard b{color:#fff;font-family:"Space Grotesk",sans-serif;font-size:14px;line-height:1.25}
.ecard small{color:rgba(255,255,255,.6);font-family:"JetBrains Mono",monospace;
  font-size:10px;margin-top:auto}

/* ---------------- SHARE ---------------- */
.sharewrap{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.sharecard{background:var(--panel);border:var(--bw) solid var(--border);border-radius:20px;
  padding:28px;box-shadow:var(--shadow)}
.sharecard h3{font-size:20px;margin-bottom:10px}
.sharecard p{color:var(--muted);font-size:15px}
.filechip{display:flex;align-items:center;gap:11px;margin-top:18px;padding:13px 15px;
  border:var(--bw) dashed var(--border);border-radius:12px;
  font-family:"JetBrains Mono",monospace;font-size:12.5px}
.filechip svg{width:17px;height:17px;color:var(--accent);flex-shrink:0}
.filechip em{margin-left:auto;font-style:normal;color:var(--muted);font-size:11px}
.arrows{display:flex;justify-content:center;gap:6px;margin-top:16px;color:var(--muted)}
.arrows svg{width:15px;height:15px;animation:slide 1.9s ease-in-out infinite}
.arrows svg:nth-child(2){animation-delay:.18s}
.arrows svg:nth-child(3){animation-delay:.36s}
@keyframes slide{0%,100%{opacity:.25;transform:translateX(-3px)}50%{opacity:1;transform:translateX(3px)}}

/* ---------------- THEMES ---------------- */
.swatches{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.sw{border-radius:17px;overflow:hidden;border:var(--bw) solid var(--border);cursor:pointer;
  text-align:left;padding:0;font:inherit;transition:transform .22s,border-color .22s}
.sw:hover{transform:translateY(-5px);border-color:var(--accent)}
.sw-vis{height:104px;padding:15px;display:flex;flex-direction:column;justify-content:space-between}
.sw-vis i{display:block;height:5px;border-radius:99px}
.sw-vis .t{font-family:"JetBrains Mono",monospace;font-size:11px;font-weight:700}
.sw-meta{padding:13px 15px;background:var(--panel);border-top:var(--bw) solid var(--border)}
.sw-meta b{font-family:"Space Grotesk",sans-serif;font-size:14px;display:block}
.sw-meta small{color:var(--muted);font-size:12px;line-height:1.45;display:block;margin-top:3px}

/* ---------------- MAKER'S STORY ---------------- */
.story{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:start}
/* The story column is long; pinning the card keeps the maker's face
   in view while you read what he has to say. */
.story>div:last-child{position:sticky;top:118px}
.story blockquote{margin:0;font-size:clamp(20px,2.3vw,26px);line-height:1.4;
  font-family:"Space Grotesk",sans-serif;font-weight:500;letter-spacing:-.015em}
.story .body{margin-top:22px;display:grid;gap:15px;color:var(--muted);font-size:16px}
.story .sig{display:flex;align-items:center;gap:13px;margin-top:26px;padding-top:22px;
  border-top:var(--bw) solid var(--border)}
.story .sig .av{width:44px;height:44px;border-radius:50%;flex-shrink:0;display:grid;
  place-items:center;background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent)}
.story .sig .av svg{width:20px;height:20px;transform:rotate(-45deg)}
.story .sig b{font-family:"Space Grotesk",sans-serif;font-size:15px;display:block}
.story .sig small{color:var(--muted);font-size:13px}

/* Pilot licence card — the maker, framed the way aviation frames people.
   The portrait is line art by default; drop a real photo or scanned
   sketch into .pilot-photo and it takes over with no other changes. */
.pilotcard{background:var(--panel);border:var(--bw) solid var(--border);
  border-radius:18px;overflow:hidden;box-shadow:var(--shadow);
  transform:rotate(-1.2deg);transition:transform .4s}
.pilotcard:hover{transform:rotate(0deg)}
.pc-top{display:flex;align-items:center;gap:9px;padding:11px 18px;
  background:color-mix(in srgb,var(--accent) 14%,transparent);
  border-bottom:var(--bw) solid var(--border);
  font-family:"JetBrains Mono",monospace;font-size:9.5px;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.pc-top svg{width:13px;height:13px;color:var(--accent)}
.pc-top em{margin-left:auto;font-style:normal;color:var(--accent)}
.pc-body{display:grid;grid-template-columns:128px 1fr;gap:20px;padding:22px 20px}
.pilot-photo{aspect-ratio:3/4;border-radius:11px;overflow:hidden;
  /* align-self:start matters — a stretched grid item resolves its own
     height from the row, which silently overrides aspect-ratio and
     crops the artwork. */
  align-self:start;
  border:var(--bw) solid var(--border);
  background:color-mix(in srgb,var(--accent) 8%,var(--panel));
  display:grid;place-items:center}
/* object-fit is right for a real photo (crop to fill) but wrong for the
   inline SVG, where it scales the artwork up and clips the shoulders. */
.pilot-photo svg{width:100%;height:100%;display:block}
.pilot-photo img{width:100%;height:100%;object-fit:cover;display:block}
.pc-rows{display:grid;gap:11px;align-content:center}
.pc-row{display:grid;gap:2px}
.pc-row small{font-family:"JetBrains Mono",monospace;font-size:8.5px;letter-spacing:.15em;
  text-transform:uppercase;color:var(--muted)}
.pc-row b{font-family:"Space Grotesk",sans-serif;font-size:15px;line-height:1.2}
.pc-foot{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;
  padding:0 20px 18px}
.pc-sign{font-family:"Caveat",cursive;font-size:29px;font-weight:600;color:var(--accent);
  line-height:1;transform:rotate(-3deg)}
.pc-sign+small{font-family:"JetBrains Mono",monospace;font-size:8.5px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted);text-align:right;line-height:1.5}
.pc-cap{margin-top:16px;font-family:"JetBrains Mono",monospace;font-size:11px;
  color:var(--muted);text-align:center}
/* The line-art portrait strokes follow the theme like everything else. */
.sketch{stroke:var(--accent);fill:none;stroke-width:2.1;
  stroke-linecap:round;stroke-linejoin:round}
.sketch .soft{stroke:var(--muted);opacity:.5;stroke-width:1.6}

/* ---- Mobile bottom sheet for reference cards ----
   On a phone the two-column layout collapses into a very long scroll,
   so below 980px the inline panel is dropped entirely and a tile opens
   its card as a sheet instead — short, focused, dismissible. */
.refhint{display:none;font-family:"JetBrains Mono",monospace;font-size:11px;
  color:var(--muted);margin-top:4px}
.sheet{position:fixed;inset:0;z-index:100;display:none}
.sheet.open{display:block}
.sheet-back{position:absolute;inset:0;background:rgba(0,0,0,.5);
  animation:fadein .25s ease}
@keyframes fadein{from{opacity:0}}
.sheet-body{position:absolute;left:0;right:0;bottom:0;max-height:84vh;
  display:flex;flex-direction:column;
  background:var(--bg);border-top:var(--bw) solid var(--border);
  border-radius:22px 22px 0 0;animation:slideup .3s cubic-bezier(.2,.7,.3,1)}
@keyframes slideup{from{transform:translateY(100%)}}
.sheet-grip{width:38px;height:4px;border-radius:99px;background:var(--border);
  margin:10px auto 4px;flex-shrink:0}
.sheet-head{display:flex;align-items:center;gap:12px;padding:8px 18px 14px;
  border-bottom:var(--bw) solid var(--border);flex-shrink:0}
.sheet-head b{font-family:"Space Grotesk",sans-serif;font-size:18px}
.sheet-head .sc{font-family:"JetBrains Mono",monospace;font-size:9px;
  letter-spacing:.08em;text-transform:uppercase;color:var(--muted);display:block;margin-top:2px}
.sheet-close{margin-left:auto;width:34px;height:34px;flex-shrink:0;border-radius:50%;
  border:var(--bw) solid var(--border);background:var(--panel);color:var(--text);
  cursor:pointer;display:grid;place-items:center}
.sheet-close svg{width:15px;height:15px}
.sheet-scroll{overflow-y:auto;padding:16px 18px 28px;-webkit-overflow-scrolling:touch}
.sheet-scroll .refgroup:first-child{margin-top:0}
.sheet-tip{display:flex;gap:10px;align-items:flex-start;margin-top:18px;padding-top:16px;
  border-top:var(--bw) solid var(--border);font-size:14px;color:var(--muted)}
.sheet-tip svg{width:15px;height:15px;color:var(--accent);flex-shrink:0;margin-top:3px}

.faq{display:grid;gap:10px;max-width:860px}
.faq details{background:var(--panel);border:var(--bw) solid var(--border);
  border-radius:14px;overflow:hidden;transition:border-color .2s}
.faq details[open]{border-color:var(--accent)}
.faq summary{cursor:pointer;padding:18px 22px;font-family:"Space Grotesk",sans-serif;
  font-weight:700;font-size:16.5px;list-style:none;display:flex;align-items:center;gap:14px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";width:9px;height:9px;margin-left:auto;flex-shrink:0;
  border-right:2.5px solid var(--accent);border-bottom:2.5px solid var(--accent);
  transform:rotate(45deg) translateY(-2px);transition:transform .25s}
.faq details[open] summary::after{transform:rotate(-135deg) translateY(-2px)}
.faq .ans{padding:0 22px 20px;color:var(--muted);font-size:15.5px;
  animation:fin .3s ease}
.faq .ans p+p{margin-top:11px}

.safety{border:var(--bw) solid var(--amber);border-radius:18px;padding:28px 32px;
  display:flex;gap:18px;align-items:flex-start;
  background:color-mix(in srgb,var(--amber) 9%,transparent)}
.safety svg{width:24px;height:24px;color:var(--amber);flex-shrink:0;margin-top:2px}
.safety h3{font-size:18px;margin-bottom:7px}
.safety p{color:var(--muted);font-size:15px}
.getit{text-align:center;padding:72px 0}
.getit h2{font-size:clamp(30px,4vw,48px);margin:14px 0 18px}
.getit p{color:var(--muted);font-size:18px;max-width:52ch;margin:0 auto 30px}
.getit .waitlist{justify-content:center}
footer{border-top:var(--bw) solid var(--border);padding:52px 0 40px}
.foot{display:flex;justify-content:space-between;gap:30px;flex-wrap:wrap;align-items:center}
.foot-credit{display:flex;flex-direction:column;align-items:flex-end;gap:3px}
.fc-line{margin:0;font-family:"Space Grotesk",sans-serif;font-size:13.5px;
  font-weight:500;color:var(--text)}
/* The one handwritten flourish on the whole page — the same signature
   convention used on the pilot card up in the story section, borrowed
   here so the credit reads like a note signed by hand, not a label. */
.fc-love{font-family:"Caveat",cursive;font-size:20px;font-weight:600;
  color:var(--accent);margin-left:4px;position:relative;top:2px}
.fc-sign{margin:0;font-family:"JetBrains Mono",monospace;font-size:10px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}

.rv{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease}
.rv.in{opacity:1;transform:none}

@media(max-width:980px){
  .hero-grid,.split,.sharewrap,.story{grid-template-columns:1fr;gap:36px}
  .pilotcard{transform:none}
  .story>div:last-child{position:static}
  /* Reference goes sheet-driven: tiles only, card opens as an overlay. */
  .refgrid{display:none}
  .refhint{display:block}
  .reftiles{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:0}
  .reftile{justify-content:flex-start;padding:14px 15px}
  .cards{grid-template-columns:1fr 1fr}
  .egrid,.swatches,.stats{grid-template-columns:1fr 1fr}
  .emergency{padding:32px 22px}
  /* Tablet/phone: same scroll-linked phase strip, compacted — thin
     segments without labels, and the current phase named once at the
     end ("CRUISE 8/15"). */
  .strip{padding:7px 0}
  .seg span{display:none}
  .seg i{height:3px}
  .strip-inner{gap:2px}
  .strip-now{display:block;flex-shrink:0;min-width:92px;text-align:right;
    font-family:"JetBrains Mono",monospace;font-size:10px;font-weight:700;
    letter-spacing:.06em;text-transform:uppercase;color:var(--accent);white-space:nowrap}
  .strip-now small{font-size:inherit;font-weight:500;color:var(--muted);margin-left:6px}
  .path{display:none}
}
@media(max-width:560px){
  body{font-size:16px}
  section{padding:54px 0}
  .cards,.egrid,.swatches{grid-template-columns:1fr}
  /* Stats stay two-up — they're four short numbers and read as a block. */
  .stats{grid-template-columns:1fr 1fr;gap:10px}
  .stat{padding:16px}
  .stat b{font-size:27px}
  .nav{position:relative;gap:12px;padding:12px 0}
  .brand{font-size:19px}
  /* A small round icon key showing just the current theme — no name,
     no chevron, barely wider than the logo it sits beside. Tapping it
     grows IN PLACE into the four icon+label options at the same right
     edge (never a floating panel); picking one, tapping the key again,
     tapping outside, or scrolling shrinks it straight back to the icon.
     Both pieces are real flex children of one auto-width pill, so the
     pill's own width just follows whichever piece is visible — no JS
     measuring, no layout jump. Icons make the collapsed state legible
     without text at all, which is the point: an icon alone reads
     faster than "DAY" ever did in this little space. */
  .theme-control{margin-left:auto;height:34px;border-radius:999px;
    background:var(--panel);border:var(--bw) solid var(--border);overflow:hidden}
  .theme-toggle{display:flex;align-items:center;justify-content:center;flex-shrink:0;
    width:34px;height:34px;padding:0;border:0;background:transparent;color:var(--text);
    cursor:pointer;box-sizing:border-box;
    max-width:34px;opacity:1;transform:scale(1);
    transition:max-width .38s cubic-bezier(.22,1,.36,1),
               opacity .18s ease, transform .22s ease}
  .theme-toggle .t-icon svg{width:16px;height:16px}
  .theme-control.expanded .theme-toggle{
    max-width:0;opacity:0;transform:scale(.5);
    transition:max-width .3s cubic-bezier(.5,0,.75,0) .04s,
               opacity .14s ease, transform .16s ease}
  /* Collapsed: the bar exists (so its width can be measured by layout)
     but is squeezed to nothing and see-through, never intercepting
     taps meant for the icon key beside it. */
  .themebar{border:0;padding:3px;flex-shrink:1;box-sizing:border-box;
    max-width:0;opacity:0;pointer-events:none;white-space:nowrap;
    transition:max-width .32s cubic-bezier(.7,0,.84,0),
               opacity .12s ease}
  .theme-control.expanded .themebar{
    max-width:230px;opacity:1;pointer-events:auto;
    transition:max-width .42s cubic-bezier(.16,1,.3,1) .06s,
               opacity .22s ease .1s}
  /* Smaller than the desktop pill — four labeled options have to fit
     next to the wordmark on the narrowest phones, so both the icon and
     the type step down a size here. */
  .theme-control.expanded .themebar button{gap:4px;padding:7px 8px 7px 7px;font-size:9px}
  .theme-control.expanded .themebar button .t-icon svg{width:10px;height:10px}
  .foot-credit{align-items:flex-start}
  .fseg span{display:none}
  .sec-head{margin-bottom:30px}
  .sec-head p{font-size:16.5px}
  .hero{padding:44px 0 24px}
  .lede{font-size:17px}
  .cta-row .btn{flex:1;justify-content:center}
  /* Stacked on phones: the frame goes away and field + button become
     two full-width, equal-height blocks. */
  .wl-row{flex-direction:column;align-items:stretch;gap:10px;padding:0;border:0;
    background:transparent;box-shadow:none}
  .wl-row:focus-within,.wl-row.wl-invalid{box-shadow:none}
  .waitlist input[type="email"]{height:52px;line-height:52px;padding:0 16px;
    border:var(--bw) solid var(--border);border-radius:12px;background:var(--panel)}
  .waitlist input[type="email"]:focus{border-color:var(--accent);
    box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}
  .wl-row.wl-invalid input[type="email"]{border-color:var(--red)}
  .waitlist .btn-primary{flex:0 0 auto;height:52px;width:100%;border-radius:12px}
  .waitlist-inline,.wl-success-inline{flex-basis:100%;max-width:none}
  .plans{grid-template-columns:1fr}
  /* Two tiles side by side get cramped once labels wrap. */
  .reftiles{grid-template-columns:1fr}
  .device,.flowbox{padding:14px}
  .row{padding:12px 11px;gap:10px}
  .challenge,.response,.cond div{font-size:13px}
  .split+.split{margin-top:56px}
  .pc-body{grid-template-columns:104px 1fr;gap:16px;padding:18px 16px}
  .faq summary{padding:16px 18px;font-size:15.5px}
  .faq .ans{padding:0 18px 18px;font-size:15px}
  .story blockquote{font-size:19px}
  .safety{padding:22px;flex-direction:column;gap:12px}
  .getit{padding:52px 0}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important}
  html{scroll-behavior:auto}
  .rv,.up{opacity:1;transform:none}
  .path path{stroke-dashoffset:0}
}
