/* Unclamped prototype · components (night only). Tokens in tokens.css */
*,*::before,*::after{box-sizing:border-box}
html{background:var(--bg-deep);color:var(--text);-webkit-text-size-adjust:100%;scrollbar-color:#444 transparent}
body{margin:0;font:var(--fw-body) var(--fs-body)/var(--lh-body) var(--font-body);color:var(--text);background:var(--bg-deep);min-height:100svh;-webkit-font-smoothing:antialiased;overflow-x:hidden}
button{font:inherit;color:inherit}
img{display:block;max-width:100%}
[hidden]{display:none!important}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;padding:0;margin:-1px}
.y{color:var(--text-accent)}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:12px}
.skiplink{position:fixed;left:12px;top:-60px;z-index:100;background:var(--accent);color:var(--text-on-accent);padding:10px 16px;border-radius:var(--r-pill);font-weight:700;text-decoration:none}
.skiplink:focus{top:12px}

/* film grain over everything (static: cheap) */
.grain{position:fixed;inset:0;z-index:var(--z-egg);pointer-events:none;background:url(assets/grain.webp) 0 0/180px 180px;mix-blend-mode:overlay;opacity:.13}

/* ---------- chrome ---------- */
.chrome{position:fixed;inset:0 0 auto;z-index:var(--z-chrome);display:flex;align-items:center;justify-content:space-between;padding:max(10px,env(safe-area-inset-top)) 12px 0 12px;pointer-events:none}
.chrome>*{pointer-events:auto}
.sound,.back{width:48px;height:48px;display:grid;place-items:center;border:0;background:transparent;border-radius:50%;cursor:pointer;color:var(--text);margin-left:auto;transition:transform var(--dur-fast) var(--ease-squish),background var(--dur-fast)}
.back{margin-left:0;margin-right:4px;background:rgba(17,17,19,.45);backdrop-filter:blur(8px)}
.sound svg{width:30px;height:30px}.back svg{width:26px;height:26px}
.sound:hover{background:rgba(255,255,255,.08)}
.sound:active,.back:active{transform:scale(.88)}
.sound .ico-on{display:none}
.sound[aria-pressed="true"] .ico-on{display:block;color:var(--accent)}
.sound[aria-pressed="true"] .ico-off{display:none}
.demo-badge{font-size:var(--fs-micro);color:var(--text-muted);letter-spacing:.01em;padding:4px 10px;border:1px solid var(--border-glass);border-radius:var(--r-pill);background:rgba(17,17,19,.5);backdrop-filter:blur(6px)}
html.on-home .demo-badge{opacity:.8}

/* ---------- screens ---------- */
main{position:relative}
.screen{position:relative;min-height:100svh;overflow:hidden;isolation:isolate}
.screen[hidden]{display:none}
.screen.enter{animation:screen-in var(--dur-slow) var(--ease-out) both}
@keyframes screen-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}

.photo{position:absolute;inset:0;z-index:var(--z-bg)}
.photo img{width:100%;height:100%;object-fit:cover;object-position:50% 40%}
.vignette{position:absolute;inset:0;z-index:var(--z-bg);background:var(--vignette),linear-gradient(180deg,rgba(0,0,0,0),transparent 30%,transparent 55%,rgba(0,0,0,.55))}

/* ---------- road markings ---------- */
.lines{position:absolute;inset:0;width:100%;height:100%;z-index:var(--z-lines);overflow:visible;pointer-events:none}
.lines .rib{fill:#FFCF00;fill-opacity:.94}
.lines .painter{fill:none;stroke:#fff;stroke-linecap:butt}
.chevrons{position:absolute;z-index:var(--z-lines);color:#DEDBD3;opacity:.8;left:79vw;top:56svh;width:19vw;height:auto;transform:rotate(-9deg);pointer-events:none}

/* ---------- hero ---------- */
.hero{background:var(--bg)}
.hero-copy{position:absolute;inset:0;z-index:var(--z-content);--x:9.7vw}
.hero-copy>*{position:absolute;left:var(--x)}
.headline{top:25.2svh;margin:0;font-family:var(--font-display);font-weight:860;font-stretch:var(--stretch-hero);font-size:calc(var(--fs-hero) * var(--fit,1));line-height:var(--lh-display);letter-spacing:var(--tracking-display);height:calc(var(--lh-display) * (1em + var(--w1-scale,1.45) * 1em));text-shadow:0 6px 30px rgba(0,0,0,.45)}
.headline .w1{display:block;color:var(--text-accent);font-size:calc(var(--w1-scale,1.45) * 1em);line-height:var(--lh-display)}
.headline .w2{display:block;color:var(--text);white-space:nowrap;width:max-content}
.headline .ch{display:inline-block}
.tagline{top:51.8svh;display:flex;align-items:center;gap:12px;margin:0;font-size:min(5.3vw,2.5svh);white-space:nowrap;font-weight:var(--fw-semibold);letter-spacing:-.01em;line-height:1.2}
.tagline .dash{width:30px;height:5px;border-radius:3px;background:var(--accent);flex:none;transform-origin:left}
.hero .pill-xl{top:59svh;height:min(70px,8.3svh);min-height:0}

/* ---------- pill button ---------- */
.pill{--h:60px;position:relative;font-stretch:var(--stretch-display);display:inline-flex;align-items:center;justify-content:center;gap:.4em;min-height:var(--h);padding:0 34px;border:0;border-radius:var(--r-pill);background:var(--accent);color:var(--text-on-accent);font-family:var(--font-display);font-weight:var(--fw-display);font-size:var(--fs-button);letter-spacing:-.005em;line-height:1;cursor:pointer;box-shadow:var(--shadow-pill);transition:transform var(--dur-base) var(--ease-squish),box-shadow var(--dur-base) var(--ease-out),background var(--dur-fast);-webkit-tap-highlight-color:transparent;user-select:none;text-decoration:none}
.pill-xl{--h:70px;font-size:min(6.9vw,1.9rem);width:min(67vw,360px)}
.pill-block{width:100%}
.pill:hover{transform:translateY(-2px);box-shadow:0 16px 34px rgba(0,0,0,.55),0 2px 0 rgba(0,0,0,.25),inset 0 -3px 0 rgba(0,0,0,.12)}
.pill:active{transform:scale(var(--press-scale),calc(2 - var(--press-scale)) ) translateY(1px);background:var(--accent-press);transition-duration:var(--dur-instant)}
.pill.pop{animation:popback var(--dur-slow) var(--ease-spring)}
@keyframes popback{0%{transform:scale(.92,1.06)}45%{transform:scale(1.05,.96) rotate(calc(var(--wobble-deg) * -1))}75%{transform:scale(.99,1.01) rotate(var(--wobble-deg))}100%{transform:none}}
.pill[aria-disabled="true"]{background:#5C5531;color:#E8E3CF;box-shadow:none;cursor:not-allowed}
.pill[aria-disabled="true"]:hover{transform:none}
.pill.busy{pointer-events:none}
.pill.busy::after{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%) -150% 0/60% 100% no-repeat;animation:shine 900ms linear infinite}
@keyframes shine{to{background-position:250% 0}}
.pill.nudge{animation:nudge 360ms var(--ease-out)}
@keyframes nudge{20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}

/* ---------- steps ---------- */
.photo-dim{background:linear-gradient(180deg,rgba(17,17,19,.55),rgba(17,17,19,.78)),url(assets/tarmac-tall.webp) 50% 30%/cover}
@media (min-width:900px){.photo-dim{background:linear-gradient(180deg,rgba(17,17,19,.55),rgba(17,17,19,.8)),url(assets/tarmac-wide.webp) 50% 50%/cover}}
.photo-dim::after{content:"";position:absolute;inset:0;background:var(--vignette)}
.lines-step{opacity:.7}
.step-inner{position:relative;z-index:var(--z-content);max-width:var(--content-max);margin:0 auto;padding:calc(72px + env(safe-area-inset-top)) var(--gutter) 120px}
.progress{display:flex;align-items:center;gap:14px;margin-bottom:var(--s-8)}
.progress-lines{flex:1;height:12px;position:relative;background:linear-gradient(var(--border-glass),var(--border-glass)) 0 1px/100% 3px no-repeat,linear-gradient(var(--border-glass),var(--border-glass)) 0 8px/100% 3px no-repeat}
.progress-lines i{position:absolute;left:0;top:0;bottom:0;width:calc(var(--p) * 100%);background:linear-gradient(var(--accent),var(--accent)) 0 1px/100% 3px no-repeat,linear-gradient(var(--accent),var(--accent)) 0 8px/100% 3px no-repeat;border-radius:2px;transform-origin:left;animation:paint-x var(--dur-paint) var(--ease-paint) both}
@keyframes paint-x{from{transform:scaleX(0)}}
.progress-txt{font-size:var(--fs-small);color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.q{margin:0;font-family:var(--font-display);font-weight:var(--fw-display);font-stretch:var(--stretch-display);font-size:var(--fs-h1);line-height:var(--lh-heading);letter-spacing:-.02em}
.q-sub{margin:var(--s-3) 0 var(--s-6);color:var(--text-muted);font-size:var(--fs-body)}
.choices{border:0;margin:0;padding:0;display:grid;gap:var(--s-3)}
.choice{position:relative;display:flex;align-items:center;gap:var(--s-4);min-height:64px;padding:16px 18px 16px 22px;border-radius:var(--r-lg);background:var(--surface-glass);border:1.5px solid var(--border-glass);backdrop-filter:blur(var(--blur-glass));-webkit-backdrop-filter:blur(var(--blur-glass));box-shadow:var(--shadow-card);cursor:pointer;transition:transform var(--dur-base) var(--ease-squish),border-color var(--dur-fast),background var(--dur-fast)}
.choices .choice{animation:rise var(--dur-slow) var(--ease-out) both;animation-delay:calc(var(--i,0) * var(--stagger-item))}
@keyframes rise{from{opacity:0;transform:translateY(14px)}}
.choice:hover{border-color:var(--border-strong)}
.choice:active{transform:scale(.98)}
.choice input{position:absolute;opacity:0;pointer-events:none}
.c-body{flex:1;display:grid;gap:4px}
.c-title{font-family:var(--font-display);font-weight:var(--fw-display);font-stretch:var(--stretch-display);font-size:1.375rem;letter-spacing:-.01em;line-height:1.1}
.c-desc{color:var(--text-muted);font-size:var(--fs-small);line-height:1.4}
.c-desc b{color:var(--text);font-weight:var(--fw-semibold)}
.choice-tall{min-height:96px;align-items:flex-start;padding-top:18px}
.tick{flex:none;width:28px;height:28px;border-radius:50%;border:2px solid var(--border-strong);display:grid;place-items:center;transition:background var(--dur-fast),border-color var(--dur-fast),transform var(--dur-base) var(--ease-squish)}
.tick::after{content:"";width:12px;height:7px;border:solid var(--text-on-accent);border-width:0 0 3px 3px;transform:translateY(-2px) rotate(-45deg) scale(0);transition:transform var(--dur-base) var(--ease-squish)}
.choice:has(input:checked){border-color:var(--accent);background:var(--surface-selected)}
.choice:has(input:checked) .tick{background:var(--accent);border-color:var(--accent);transform:scale(1.08)}
.choice:has(input:checked) .tick::after{transform:translateY(-2px) rotate(-45deg) scale(1)}
.choice:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:3px}
.unsure{margin-top:var(--s-4);color:var(--text-muted);font-size:var(--fs-small)}
.unsure summary{cursor:pointer;color:var(--text);font-weight:var(--fw-semibold);text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:4px;width:max-content;padding:6px 0}
.unsure p{margin:6px 0 0}
.step-foot{margin-top:var(--s-8);display:grid;gap:var(--s-3)}
.step-foot .pill{width:100%}
.hint{margin:0;min-height:1.4em;color:var(--danger);font-size:var(--fs-small);text-align:center}
.demo-note{margin:var(--s-2) 0 0;font-size:var(--fs-micro);color:var(--text-muted);text-align:center}

/* ---------- warden easter egg ---------- */
.cone{position:absolute;z-index:var(--z-egg);right:10px;bottom:max(10px,env(safe-area-inset-bottom));width:64px;height:76px;border:0;padding:0;background:none;cursor:pointer;overflow:visible;-webkit-tap-highlight-color:transparent}
.cone::before{content:"";position:absolute;inset:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 76'%3E%3Cpath d='M26 6h12l16 58H10z' fill='%23F26B1D'/%3E%3Cpath d='M22.5 20h19l3 11h-25zM17.6 38h28.8l3.2 11.5H14.4z' fill='%23F2EFE8'/%3E%3Crect x='4' y='62' width='56' height='9' rx='3' fill='%23D2541A'/%3E%3Cpath d='M26 6h12l1 4H25z' fill='%23ffffff' opacity='.35'/%3E%3C/svg%3E") center/contain no-repeat;z-index:2;transition:transform var(--dur-base) var(--ease-squish);filter:drop-shadow(0 6px 8px rgba(0,0,0,.5))}
.cone .warden{position:absolute;left:-22px;bottom:12px;width:44px;height:54px;z-index:1;transform:translateX(26px) rotate(8deg);transition:transform var(--dur-slow) var(--ease-squish);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 44 54'%3E%3Cpath d='M6 54c0-12 7-18 16-18s16 6 16 18z' fill='%232A2A2E'/%3E%3Cpath d='M15 40l7 6 7-6' stroke='%23FFD400' stroke-width='3' fill='none'/%3E%3Ccircle cx='22' cy='26' r='10' fill='%23E9B98F'/%3E%3Ccircle cx='18.5' cy='26' r='1.6' fill='%231C1C1E'/%3E%3Ccircle cx='25.5' cy='26' r='1.6' fill='%231C1C1E'/%3E%3Cpath d='M18.5 31q3.5 2.5 7 0' stroke='%231C1C1E' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3Cg class='cap'%3E%3Cpath d='M10 19c0-7 5-11 12-11s12 4 12 11z' fill='%231C1C1E'/%3E%3Crect x='10' y='16' width='24' height='4' fill='%23FFD400'/%3E%3Cpath d='M8 20h22v3H8z' fill='%23111'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat}
.cone:hover .warden,.cone:focus-visible .warden{transform:translateX(4px) rotate(-6deg)}
.cone.boop::before{animation:boop 300ms var(--ease-squish)}
@keyframes boop{40%{transform:scale(1.12,.86)}}
.cone.found .warden{transform:translate(-4px,-34px) rotate(-10deg) scale(1.25)}
.cone.found .warden{animation:doff 900ms var(--ease-spring) 1}
@keyframes doff{0%{transform:translateX(26px)}60%{transform:translate(-4px,-40px) rotate(-14deg) scale(1.3)}100%{transform:translate(-4px,-34px) rotate(-10deg) scale(1.25)}}

/* ---------- pay / windscreen ---------- */
.pay{background:#0A0A0B;display:grid;place-items:center}
.pay::before{content:"";position:absolute;inset:-40px;background:url(assets/windscreen.webp) center/cover;filter:blur(28px) brightness(.4);z-index:-1}
.ws{--px:-5%;--py:77%;position:relative;width:min(100vw,calc(100svh * .5625));height:100svh;overflow:hidden;container-type:inline-size}
@media (min-width:640px){.ws{box-shadow:0 30px 80px rgba(0,0,0,.6)}}
.ws-photo{position:absolute;inset:0;background:url(assets/windscreen.webp) 50% 50%/cover}
.ws-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,8,9,.92),rgba(8,8,9,.35) 17%,rgba(8,8,9,0) 30%,rgba(8,8,9,0) 74%,rgba(8,8,9,.55) 84%,rgba(8,8,9,.92))}
.wordmark{display:inline-flex;align-items:flex-end;gap:.12em}
.wordmark .lock{width:.72em;height:.86em;flex:none;margin-bottom:.04em}
.wordmark .shackle{transform-box:view-box;transform-origin:8px 24px;transform:rotate(-24deg) translateY(-2px);transition:transform var(--dur-slow) var(--ease-squish)}
.ws.clear .wordmark .shackle{transform:rotate(-38deg) translateY(-4px)}
.pay-brand{position:absolute;z-index:var(--z-chrome);top:calc(8% + env(safe-area-inset-top));left:0;right:0;margin:0;text-align:center;font-family:var(--font-display);font-weight:860;font-stretch:var(--stretch-hero);font-size:min(13.5cqi,4rem);letter-spacing:-.02em;line-height:1;text-shadow:0 4px 18px rgba(0,0,0,.6)}
.letter-wrap{position:absolute;z-index:1;left:51%;top:22.5%;width:80%;transform:translateX(-50%) perspective(900px) rotateX(3deg) rotate(-.4deg);container-type:inline-size}
.letter{aspect-ratio:1/1.2;background:#DEDBD3;color:var(--text-on-paper);border-radius:2px;box-shadow:var(--shadow-paper);padding:9cqi 8cqi;font-family:var(--font-letter);font-size:4.6cqi;line-height:1.38;overflow:hidden;position:relative}
.letter::after{content:"";position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 45%,transparent 50%,rgba(0,0,0,.28)),linear-gradient(160deg,rgba(255,255,255,.18),transparent 40%,rgba(0,0,0,.08));pointer-events:none}
.letter h3{margin:0 0 1cqi;font-size:9cqi;line-height:1.1;font-weight:700;letter-spacing:.01em}
.letter .ref{margin:0 0 5cqi;font-weight:700;font-size:4.4cqi}
.letter p{margin:0 0 3cqi}
.letter .sample{position:absolute;right:4cqi;bottom:3.5cqi;font:600 3cqi/1 var(--font-body);color:#5E5E63;letter-spacing:.02em;z-index:1}
.ph{display:grid;gap:2.8cqi}
.ph>div{background:#BDB8AE;border-radius:1.4cqi;height:3cqi}
.ph .ph-h{height:8cqi;width:70%;background:#3A3A3F}
.ph .ph-sub{height:3.8cqi;width:84%;background:#66666C;margin-bottom:4cqi}
.ph .ph-gap{background:none;height:2cqi}
.w95{width:95%}.w90{width:90%}.w80{width:80%}.w75{width:75%}.w70{width:70%}.w60{width:60%}.w40{width:40%}
/* the glass: tint + reflections are always there; blur + droplets get wiped away */
.tint{position:absolute;inset:0;z-index:2;pointer-events:none;background:url(assets/windscreen.webp) 50% 50%/cover;mix-blend-mode:screen;opacity:.3}
.tint::after{content:"";position:absolute;inset:0;background:radial-gradient(85% 55% at 50% 48%,rgba(20,24,30,0),rgba(8,8,10,.6))}
@property --a{syntax:"<angle>";inherits:true;initial-value:93deg}
@property --w{syntax:"<angle>";inherits:true;initial-value:93deg}
.glass,.drops{position:absolute;inset:0;z-index:2;pointer-events:none;-webkit-mask-image:conic-gradient(from 0deg at var(--px) var(--py),#000 0deg var(--a),transparent var(--a) 93deg,#000 93deg);mask-image:conic-gradient(from 0deg at var(--px) var(--py),#000 0deg var(--a),transparent var(--a) 93deg,#000 93deg)}
.glass{backdrop-filter:blur(4px) brightness(.92);-webkit-backdrop-filter:blur(4px) brightness(.92);background:rgba(30,34,40,.12)}
.drops{background:url(assets/droplets.webp) 0 0/34cqi auto;mix-blend-mode:screen;opacity:.42}
.drops::after{content:"";position:absolute;inset:0;background:url(assets/droplets.webp) 40% 30%/21cqi auto;opacity:.7}
.wiper{position:absolute;inset:0;z-index:3;pointer-events:none}
.arm{position:absolute;left:var(--px);top:var(--py);width:128cqi;height:0;transform-origin:0 0;transform:rotate(calc(var(--w) - 90deg))}
.arm::before{content:"";position:absolute;left:-14px;top:-14px;width:28px;height:28px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#4a4a4e,#0c0c0d 70%);box-shadow:0 3px 10px rgba(0,0,0,.7)}
.arm::after{content:"";position:absolute;left:0;top:-17px;width:64%;height:7px;border-radius:3px;background:linear-gradient(180deg,#3c3c40,#0e0e10);box-shadow:0 4px 10px rgba(0,0,0,.6);transform-origin:0 50%;transform:rotate(-1.6deg)}
.blade{position:absolute;left:5%;top:-6px;width:95%;height:19px;border-radius:3px 9px 9px 3px;background:linear-gradient(180deg,#2e2e32 0,#141416 40%,#040405 100%);box-shadow:0 8px 18px rgba(0,0,0,.65),inset 0 1px 0 rgba(255,255,255,.14)}
.blade::after{content:"";position:absolute;left:38%;top:-9px;width:13%;height:13px;border-radius:3px 3px 1px 1px;background:linear-gradient(180deg,#3a3a3e,#111);box-shadow:0 2px 4px rgba(0,0,0,.6)}
/* the sweep itself is driven by app.js (one clock for blade + cleared area, so the edge sits exactly on the blade) */
.ws.clear{--a:-2deg}
.ws.clear .glass,.ws.clear .drops{opacity:0;transition:opacity var(--dur-slow)}
.pay-foot{position:absolute;z-index:var(--z-chrome);left:0;right:0;bottom:calc(4% + env(safe-area-inset-bottom));display:grid;justify-items:center;gap:10px;padding:0 6cqi}
.pay-foot .pill-xl{width:76cqi;max-width:400px;height:66px;font-stretch:var(--stretch-hero);font-size:min(7.4cqi,2rem)}
.demo-label{margin:0;font-size:var(--fs-micro);color:var(--text);opacity:.92;text-align:center;max-width:36ch}
.demo-label b{color:var(--accent)}

/* ---------- toast ---------- */
.toast{position:fixed;z-index:var(--z-toast);left:50%;width:max-content;bottom:calc(96px + env(safe-area-inset-bottom));transform:translate(-50%,12px);opacity:0;max-width:min(92vw,420px);padding:12px 18px 12px 16px;border-radius:var(--r-md);background:var(--surface-glass-strong);backdrop-filter:blur(12px);border:1px solid var(--border-glass);font-size:var(--fs-small);display:flex;gap:10px;align-items:center;transition:opacity var(--dur-base),transform var(--dur-base) var(--ease-squish);pointer-events:none}
.toast::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent);flex:none}
.toast.show{opacity:1;transform:translate(-50%,0)}
html.on-pay .toast{top:auto;bottom:calc(172px + env(safe-area-inset-bottom));transform:translate(-50%,12px)}
html.on-pay .toast.show{transform:translate(-50%,0)}

/* ---------- intro choreography (only when html.intro) ---------- */
.intro .hero::after{content:"";position:absolute;inset:0;z-index:var(--z-content);background:#050506;pointer-events:none;animation:fade-out 700ms var(--ease-out) forwards}
@keyframes fade-out{to{opacity:0;visibility:hidden}}
.intro .hero .painter{stroke-dasharray:var(--len) var(--len);stroke-dashoffset:var(--len);animation:paint 1250ms var(--ease-paint) forwards;animation-delay:var(--d,250ms)}
@keyframes paint{to{stroke-dashoffset:0}}
.intro .hero .chev{opacity:0;transform-box:fill-box;transform-origin:50% 50%;animation:chev-in 520ms var(--ease-squish) forwards}
.intro .hero .chev:nth-child(1){animation-delay:1350ms}.intro .hero .chev:nth-child(2){animation-delay:1220ms}
@keyframes chev-in{from{opacity:0;transform:translateY(14px) scale(.85)}to{opacity:1;transform:none}}
.intro .headline .ch{opacity:0;animation:letter-in 520ms var(--ease-squish) forwards;animation-delay:calc(1050ms + var(--i) * var(--stagger-letter))}
@keyframes letter-in{from{opacity:0;transform:translateY(.22em) scale(.9);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}
.intro .tagline .dash{animation:grow 420ms var(--ease-paint) 1750ms both}
@keyframes grow{from{transform:scaleX(0)}}
.intro .tagline{animation:rise 480ms var(--ease-out) 1800ms both}
.intro .hero .pill{animation:pill-in 620ms var(--ease-squish) 2000ms both}
@keyframes pill-in{from{opacity:0;transform:translateY(16px) scale(.86)}}
.intro .chrome .sound{animation:rise 400ms var(--ease-out) 2100ms both}
.intro-done .hero *,.intro-done .chrome *{animation:none!important}
.intro-done .hero::after{display:none}
.intro-done .headline .ch,.intro-done .hero .chev{opacity:1}
.intro-done .hero .painter{stroke-dashoffset:0!important}

/* ---------- desktop ---------- */
@media (min-width:900px){
  :root{--line-width:14px}
  .hero-copy{--x:11vw}
  .headline{font-size:min(9.5vw,14svh);top:19svh}
  .tagline{top:57svh;font-size:1.75rem}
  .hero .pill-xl{top:65svh;width:380px;height:76px;font-size:2rem}
  .chevrons{left:auto;right:12vw;top:52svh;width:130px}
  .cone{right:24px;bottom:24px}
  .chrome{padding:18px 24px 0}
}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion: reduce){
  .screen.enter{animation:fade 120ms linear both}
  .choices .choice,.progress-lines i{animation:none}
  .pill.pop,.pill.nudge,.cone.boop::before,.cone.found .warden{animation:none}
  .ws.wiping{animation:none}
  .ws.wiping .arm{animation:none}
  .ws.wiping .glass,.ws.wiping .drops{opacity:0;transition:opacity 240ms linear}
}
:root[data-motion="reduce"] .screen.enter{animation:fade 120ms linear both}
:root[data-motion="reduce"] .choices .choice,:root[data-motion="reduce"] .progress-lines i,:root[data-motion="reduce"] .pill.pop,:root[data-motion="reduce"] .pill.nudge,:root[data-motion="reduce"] .cone.found .warden,:root[data-motion="reduce"] .ws.wiping,:root[data-motion="reduce"] .ws.wiping .arm{animation:none}
:root[data-motion="reduce"] .ws.wiping .glass,:root[data-motion="reduce"] .ws.wiping .drops{opacity:0;transition:opacity 240ms linear}
@keyframes fade{from{opacity:0}}
/* site footer: company details and legal links (home and legal pages) */
.site-foot{position:relative;z-index:var(--z-content);padding:var(--s-8) 20px max(var(--s-8),env(safe-area-inset-bottom));color:var(--text-muted);background:var(--bg-deep);font-size:var(--fs-micro);line-height:1.5;text-align:center}
.site-foot p{margin:0 auto var(--s-1);max-width:60ch}
.site-foot nav{margin-bottom:var(--s-3);font-size:var(--fs-small)}
.site-foot a{color:var(--text);text-decoration-color:var(--accent);text-underline-offset:3px}
