/* Still waitlist: one calm, centred screen. */
:root{--ink:#1f2433;--body:#646b7b;--muted:#9097a6;--accent:#4d61d5;--accent-deep:#3e51bf;--line:#e3e7f0;--bg:#f6f7fb;--ok:#3f8a64;--err:#b65147;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased}
*{box-sizing:border-box}html,body{height:100%}
body{margin:0;background:radial-gradient(900px 520px at 50% 38%,#ffffff 0%,rgba(255,255,255,0) 70%),radial-gradient(700px 420px at 50% 120%,#e8ecfb 0%,rgba(232,236,251,0) 70%),var(--bg)}
h1,p{margin:0}
.page{min-height:100vh;min-height:100dvh;display:grid;grid-template-rows:auto 1fr auto;justify-items:center;padding:32px 24px 24px}
.brand{display:inline-flex;align-items:center;gap:9px;font-size:22px;font-weight:700;letter-spacing:-1px;color:var(--ink);text-decoration:none;opacity:.9}.dot{color:var(--accent)}
.mark{width:26px;height:26px;border-radius:8px;background:var(--accent);display:inline-grid;align-content:center;gap:3px;padding:0 6.5px}.mark i{display:block;height:2px;border-radius:2px;background:#fff}.mark i:nth-child(2){width:72%}
.content{align-self:center;width:100%;max-width:540px;text-align:center;padding:40px 0}
.eyebrow{display:inline-block;font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
h1{font-size:clamp(38px,6.2vw,60px);line-height:1.04;letter-spacing:-.04em;font-weight:700;margin:18px 0 20px;text-wrap:balance}
.lede{font-size:17px;line-height:1.7;color:var(--body);max-width:470px;margin:0 auto;text-wrap:pretty}
.join{display:flex;gap:8px;max-width:440px;margin:36px auto 0;padding:6px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 10px 30px rgba(31,36,51,.06)}
.join:focus-within{border-color:#c4cdf3;box-shadow:0 0 0 4px rgba(77,97,213,.10),0 10px 30px rgba(31,36,51,.06)}
.join input{flex:1;min-width:0;font:inherit;font-size:16px;color:var(--ink);background:transparent;border:0;outline:0;padding:0 12px;min-height:46px}
.join input::placeholder{color:#a8aebb}
.join button{font:inherit;font-size:15px;font-weight:600;color:#fff;background:var(--accent);border:0;border-radius:10px;padding:0 18px;min-height:46px;cursor:pointer;white-space:nowrap;transition:background .15s}
.join button:hover{background:var(--accent-deep)}.join button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.join button:disabled{opacity:.6;cursor:default}
.join .trap{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.join.invalid{border-color:#e8b9b2}
.note{margin-top:16px;font-size:13px;line-height:1.6;color:var(--muted);min-height:21px}.note.err{color:var(--err)}
.done{max-width:440px;margin:36px auto 0;padding:18px 20px;border-radius:14px;background:#fff;border:1px solid #d5eadf;color:var(--ok);font-size:15px;font-weight:600;line-height:1.6;display:flex;align-items:center;justify-content:center;gap:10px;animation:rise .35s ease}
.done svg{flex-shrink:0}
@keyframes rise{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.legal{font-size:12px;color:var(--muted)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media(max-width:520px){.page{padding:24px 20px 20px}.content{padding:28px 0}h1{margin:14px 0 16px}.lede{font-size:16px}
.join{flex-direction:column;padding:0;background:none;border:0;box-shadow:none;gap:10px;margin-top:30px}.join:focus-within{box-shadow:none}
.join input{background:#fff;border:1px solid var(--line);border-radius:12px;padding:0 14px;min-height:50px}.join input:focus{border-color:#c4cdf3;box-shadow:0 0 0 4px rgba(77,97,213,.10)}
.join button{min-height:50px;border-radius:12px}.join.invalid input{border-color:#e8b9b2}}
@media(prefers-reduced-motion:reduce){.done{animation:none}.join button{transition:none}}
/* Short screens (small phones, landscape): tighten so it still fits without scrolling. */
@media(max-height:640px){.page{padding-top:18px;padding-bottom:14px}.content{padding:14px 0}h1{font-size:clamp(32px,5.4vw,52px);margin:10px 0 12px}.lede{font-size:15px;line-height:1.6}.join{margin-top:22px}.note{margin-top:10px}.brand{font-size:20px}.mark{width:24px;height:24px}}
.done{display:block;text-align:center;text-wrap:balance}.done svg{display:inline-block;vertical-align:-3px;margin-right:8px}

/* Motion (tokens mirror src/motionTokens.ts). The entrance is animated by join.js with Motion;
   .reveal starts hidden only when motion is allowed, and shows anyway if the script never runs. */
:root{--dur-fast:150ms;--dur-base:200ms;--ease:cubic-bezier(.22,1,.36,1)}
@media(prefers-reduced-motion:no-preference){.reveal{opacity:0;animation:still-reveal-fallback 0s 1.6s forwards}}
@keyframes still-reveal-fallback{to{opacity:1;transform:none}}
.join button{transition:background-color var(--dur-base) var(--ease),box-shadow var(--dur-base) var(--ease),transform var(--dur-fast) var(--ease)}
.join button:not(:disabled):hover{box-shadow:0 6px 16px rgba(77,97,213,.28)}
.join button:not(:disabled):active{transform:scale(.97);box-shadow:0 2px 6px rgba(77,97,213,.22)}
.join{transition:border-color var(--dur-base) var(--ease),box-shadow var(--dur-base) var(--ease)}
.join input{transition:border-color var(--dur-base) var(--ease),box-shadow var(--dur-base) var(--ease)}
@media(prefers-reduced-motion:reduce){.join,.join input,.join button{transition:none}.join button:active{transform:none}}
.done:focus{outline:none}

/* Status pill: a softly pulsing "live" dot, sentence case (replaces the uppercase eyebrow). */
.status{display:inline-flex;align-items:center;gap:9px;font-size:13px;font-weight:500;color:#4f5668;background:rgba(255,255,255,.75);border:1px solid var(--line);border-radius:999px;padding:6px 14px 6px 12px;box-shadow:0 1px 2px rgba(31,36,51,.04)}
.live{position:relative;width:8px;height:8px;border-radius:50%;background:#2fb36b;flex-shrink:0}
.live::after{content:'';position:absolute;inset:0;border-radius:50%;background:#2fb36b;animation:still-live 2.4s cubic-bezier(.22,1,.36,1) infinite}
@keyframes still-live{0%{transform:scale(1);opacity:.55}70%,100%{transform:scale(2.6);opacity:0}}
@media(prefers-reduced-motion:reduce){.live::after{animation:none;opacity:0}}

/* Optical centring: sit the block a little above the true middle so the eye lands on the headline. */
.content{padding:40px 0 calc(40px + 15vh)}
h1{margin-top:22px}
@media(max-width:520px){.content{padding:28px 0 calc(28px + 6vh)}h1{margin-top:18px}}
@media(max-height:640px){.content{padding:12px 0 calc(12px + 4vh)}h1{margin-top:12px}}
