/* Shared by index.html and moonbase/. Light, quiet, precise — and glass. */
@view-transition{navigation:auto}
::view-transition-old(root){animation:vt-out .35s cubic-bezier(.4,0,.2,1) both}
::view-transition-new(root){animation:vt-in .5s cubic-bezier(.16,1,.3,1) both}
@keyframes vt-out{to{opacity:0;filter:blur(6px);transform:scale(.99)}}
@keyframes vt-in{from{opacity:0;filter:blur(6px);transform:scale(1.01)}}

:root{
  --bg:#ffffff; --bg-alt:#f5f5f7; --ink:#1d1d1f; --ink-2:#6e6e73; --ink-3:#86868b;
  --hair:rgba(0,0,0,.08); --blue:#0071e3; --blue-hover:#0077ed; --link:#0066cc;
  --tile-r:28px; --icon-r:22.5%; --maxw:980px; --wide:1200px;
  --ease:cubic-bezier(.28,.11,.32,1); --spring:cubic-bezier(.16,1,.3,1);
  --glass:rgba(255,255,255,.58); --glass-edge:rgba(255,255,255,.75);
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Inter","Helvetica Neue",Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:72px}
body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:17px;line-height:1.47;
  letter-spacing:-.022em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"kern";overflow-x:hidden}
img,video{display:block;max-width:100%;height:auto}
a{color:var(--link);text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:6px}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 22px}
.wide{max-width:var(--wide);margin:0 auto;padding:0 22px}

/* ── glass ───────────────────────────────────────── */
.glass{background:var(--glass);-webkit-backdrop-filter:blur(24px) saturate(180%);backdrop-filter:blur(24px) saturate(180%);
  box-shadow:inset 0 1px 0 var(--glass-edge),inset 0 0 0 .5px rgba(255,255,255,.45),0 10px 30px -12px rgba(0,0,0,.14)}

/* ── nav: a floating glass capsule ───────────────── */
.nav{position:sticky;top:10px;z-index:50;height:0;overflow:visible}
.nav .bar{max-width:1000px;margin:0 auto;height:48px;border-radius:24px;display:flex;align-items:center;justify-content:space-between;
  padding:0 8px 0 20px;transition:background .4s var(--ease),box-shadow .4s var(--ease)}
.nav:not(.scrolled) .bar{background:rgba(255,255,255,.4);box-shadow:none}
.nav .name{color:var(--ink);font-size:16px;font-weight:600;letter-spacing:-.02em}
.nav .name:hover{text-decoration:none}
.nav ul{display:flex;gap:4px;list-style:none;align-items:center}
.nav ul a{display:block;color:var(--ink);opacity:.8;font-size:12px;letter-spacing:-.01em;padding:7px 11px;border-radius:980px;
  transition:opacity .2s,background .25s var(--ease)}
.nav ul a:hover{opacity:1;text-decoration:none;background:rgba(0,0,0,.05)}
.nav ul a.pill{opacity:1;color:#fff;background:var(--blue);margin-left:4px}
.nav ul a.pill:hover{background:var(--blue-hover)}
.nav-pad{height:58px}
/* over a dark section the glass goes dark too */
.nav.on-dark .bar{background:rgba(30,30,34,.62);box-shadow:inset 0 1px 0 rgba(255,255,255,.12),inset 0 0 0 .5px rgba(255,255,255,.1),0 10px 30px -12px rgba(0,0,0,.5)}
.nav.on-dark .name,.nav.on-dark ul a:not(.pill){color:#f5f5f7}
.nav.on-dark ul a:hover{background:rgba(255,255,255,.1)}
@media (max-width:760px){.nav ul li.hide-sm{display:none}.nav{top:8px}.nav .bar{margin:0 10px;padding:0 6px 0 16px}}

/* ── type ────────────────────────────────────────── */
.eyebrow{font-size:21px;line-height:1.19;font-weight:600;letter-spacing:.011em;color:var(--ink-2)}
.display{font-size:80px;line-height:1.05;font-weight:700;letter-spacing:-.015em}
.headline{font-size:56px;line-height:1.07;font-weight:700;letter-spacing:-.005em}
.title{font-size:32px;line-height:1.125;font-weight:700;letter-spacing:.004em}
.lede{font-size:24px;line-height:1.33;font-weight:500;letter-spacing:.009em;color:var(--ink-2)}
.lede b,.body b{color:var(--ink);font-weight:600}
.body{font-size:17px;line-height:1.47;color:var(--ink-2)}
.kicker{font-size:12px;line-height:1.33;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.grey{color:var(--ink-3)}

/* ── buttons + links ─────────────────────────────── */
.actions{display:flex;flex-wrap:wrap;gap:22px;align-items:center;justify-content:center}
.btn{display:inline-block;background:var(--blue);color:#fff;font-size:17px;line-height:1.18;
  padding:12px 23px;border-radius:980px;transition:background .2s,transform .35s var(--spring)}
.btn:hover{background:var(--blue-hover);text-decoration:none;transform:scale(1.03)}
.btn:active,.press:active{transform:scale(.96)}
.more{font-size:17px;white-space:nowrap}
.more::after{content:"";display:inline-block;width:.42em;height:.42em;margin-left:.3em;
  border-right:1.5px solid currentColor;border-top:1.5px solid currentColor;transform:translateY(-.08em) rotate(45deg);transition:transform .3s var(--spring)}
.more:hover::after{transform:translate(.15em,-.08em) rotate(45deg)}
.more.out::after{transform:translateY(-.02em) rotate(0);border:0;width:auto;height:auto;content:"↗";margin-left:.15em}
.more.out:hover::after{transform:translate(.1em,-.12em)}

/* ── app icon ────────────────────────────────────── */
.icon{border-radius:var(--icon-r);box-shadow:0 0 0 .5px rgba(0,0,0,.12),0 8px 24px -8px rgba(0,0,0,.18);
  background:#fff;aspect-ratio:1;height:auto;object-fit:cover}

/* ── sections ────────────────────────────────────── */
section{padding:120px 0}
section.alt{background:var(--bg-alt)}
.center{text-align:center}

/* cards that catch the light under the pointer */
.lit{position:relative;isolation:isolate;transition:transform .6s var(--spring),box-shadow .6s var(--spring)}
.lit::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .4s var(--ease);
  background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.55),transparent 45%);z-index:2}
@media (hover:hover){.lit:hover{transform:translateY(-4px);box-shadow:0 30px 60px -30px rgba(0,0,0,.22)}.lit:hover::after{opacity:1}}

/* reveal: rise, sharpen, settle */
.rv{opacity:0;transform:translateY(28px) scale(.985);filter:blur(8px);
  transition:opacity 1s var(--spring),transform 1.1s var(--spring),filter 1s var(--spring)}
.rv.in{opacity:1;transform:none;filter:none}
@media (prefers-reduced-motion:reduce){
  .rv{opacity:1;transform:none;filter:none;transition:none}html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001s!important;animation-iteration-count:1!important}
}

/* ── footer ──────────────────────────────────────── */
footer{background:var(--bg-alt);border-top:1px solid var(--hair);padding:22px 0 28px;font-size:12px;color:var(--ink-3);letter-spacing:-.01em}
footer .wrap{display:flex;flex-wrap:wrap;gap:10px 24px;justify-content:space-between}
footer a{color:var(--ink-2)}
footer nav{display:flex;gap:20px}

/* fixed type sizes at Apple's two breakpoints: never fractional pixels */
.display,.headline,.title{text-wrap:balance}
.lede,.body,p{text-wrap:pretty}
@media (max-width:1068px){.display{font-size:64px}.headline{font-size:48px}.title{font-size:28px}.lede{font-size:21px}}
@media (max-width:734px){.display{font-size:48px}.headline{font-size:36px}.title{font-size:24px}.lede{font-size:19px}}

/* touch screens: every target at least 44px, without changing how it looks */
@media (pointer:coarse){
  .nav a{position:relative}
  .nav a::after{content:"";position:absolute;inset:-7px -3px}
  .more{display:inline-flex;align-items:center;min-height:44px}
  .btn{min-height:44px}
  footer nav a{display:inline-flex;align-items:center;min-height:44px}
}
