/* ───────── Waitlist ───────── */
.waitlist { position: relative; overflow: hidden; isolation: isolate; min-height: 760px; padding: 140px var(--pad-x) 160px; }
.waitlist__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 100% 50%; z-index: -2; }
.waitlist::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(23,23,26,.95) 0, rgba(23,23,26,.95) 40%, rgba(23,23,26,.15) 75%, rgba(23,23,26,.15) 100%); }
.waitlist__inner { display: grid; grid-template-columns: minmax(0, 560px); }
.waitlist__mark { width: 56px; height: 56px; filter: drop-shadow(0 10px 24px rgba(0,0,0,.5)); }
.waitlist__copy h2 { margin: 28px 0 20px; font-size: clamp(40px, 5.2vw, 76px); letter-spacing: -.045em; line-height: .98; }
.waitlist__copy .lede { color: var(--text-2); font-size: clamp(17px, 1.35vw, 20px); }
.waitlist__seam { position: absolute; top: 0; left: 0; right: 0; height: 1px; background: var(--border-subtle); z-index: 2; overflow: hidden; }
html.js:not(.reduce-motion) .waitlist.is-in .waitlist__seam .signal { animation: wait-signal 900ms linear backwards; }
@keyframes wait-signal { 0% { opacity: 0; transform: translateX(-120px); } 15% { opacity: 1; } 80% { opacity: 1; } 100% { opacity: 0; transform: translateX(calc(100vw - 120px)); } }
html.js:not(.reduce-motion) .waitlist__bg { opacity: .35; transition: opacity 1.6s var(--e-io); }
html.js:not(.reduce-motion) .waitlist.is-in .waitlist__bg { opacity: 1; }
@media (min-width: 1025px) { .waitlist__bg { left: 18%; width: 82%; object-position: 72% 50%; } }
/* AppCard (elevated) + AppTextField (sunken well, controlRadius) */
.wform { display: grid; gap: 14px; margin-top: 36px; padding: 28px 28px 22px; border: 1px solid var(--border-default); border-radius: var(--r-card); background: var(--bg-surface); box-shadow: var(--shadow); }
.wform__field { display: grid; gap: 6px; font-size: 13px; font-weight: 500; }
.wform__field em { font-style: normal; font-weight: 400; color: var(--text-2); font-size: 12px; margin-left: 6px; }
.wform__field input { height: 44px; padding: 0 14px; border-radius: var(--r-control); border: 1px solid var(--border-default); background: var(--bg-input); color: var(--text-1); font: 400 15px var(--sans); transition: border-color var(--t-fast) var(--e-out); }
.wform__field input::placeholder { color: var(--text-3); }
.wform__field input:hover { border-color: var(--border-strong); }
.wform__field input:focus { outline: none; border-color: var(--border-strong); box-shadow: 0 0 0 3px color-mix(in srgb, var(--text-1) 10%, transparent); }
.wform__field input[aria-invalid="true"] { border-color: var(--danger); }
.wform .btn { margin-top: 4px; position: relative; }
.wform .btn .btn__label--ok { position: absolute; left: 0; right: 0; display: inline-flex; align-items: center; justify-content: center; gap: 8px; opacity: 0; }
.wform .btn .btn__label { transition: opacity 250ms var(--e-out); }
.wform.is-ok .btn .btn__label { opacity: 0; }
.wform.is-ok .btn .btn__label--ok { opacity: 1; }
.btn__spin { display: none; width: 14px; height: 14px; border-radius: 50%; border: 2px solid color-mix(in srgb, var(--on-accent) 25%, transparent); border-top-color: var(--on-accent); animation: orbit .8s linear infinite; }
.wform.is-busy .btn__spin { display: inline-block; }
.wform.is-busy .btn { pointer-events: none; opacity: .8; }
/* Message and note share one row: the note steps aside while a message shows, so the card never grows. */
.wform__foot { display: grid; }
.wform__foot > * { grid-area: 1 / 1; margin: 0; font-size: 12.5px; line-height: 1.5; transition: opacity var(--t-fast) var(--e-out); }
.wform__note { color: var(--text-2); }
.wform__note a { color: var(--text-1); }
.wform__msg { font-weight: 500; }
.wform__msg:empty { visibility: hidden; opacity: 0; }
.wform__msg:not(:empty) + .wform__note { visibility: hidden; opacity: 0; }
.wform__msg[data-ok="0"] { color: var(--danger); }
.wform__msg[data-ok="1"] { color: var(--ok-fg); }
.hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
@media (max-width: 1024px) {
    .waitlist__inner { grid-template-columns: minmax(0, 560px); }
    .waitlist { min-height: 0; padding-top: 120px; padding-bottom: 140px; }
    .waitlist__bg { height: 620px; object-position: 70% 50%; }
    .waitlist::before { background: linear-gradient(180deg, rgba(23,23,26,.4) 0, rgba(23,23,26,.74) 220px, rgba(23,23,26,.95) 520px, rgb(23,23,26) 620px); }
}
@media (max-width: 640px) {
    .wform { padding: 20px 20px 16px; margin-top: 32px; }
    .waitlist { padding-top: 96px; padding-bottom: 120px; }
    .waitlist__bg { height: 560px; object-position: 74% 50%; }
    .waitlist::before { background: linear-gradient(180deg, rgba(23,23,26,.45) 0, rgba(23,23,26,.78) 200px, rgba(23,23,26,.96) 480px, rgb(23,23,26) 560px); }
    .waitlist__copy h2 { font-size: 42px; }
}

/* ───────── Footer (base.css owns .foot; these only tidy the trimmed link row) ───────── */
@media (max-width: 640px) {
    .foot { gap: 14px; }
    .foot__r { flex-wrap: wrap; gap: 8px 20px; }
}
