@font-face{font-family:"Bricolage Grotesque";font-style:normal;font-weight:600 700;font-display:swap;src:url(fonts/bricolage.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Geist Mono";font-style:normal;font-weight:400 500;font-display:swap;src:url(fonts/geist-mono.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
/* Layout concept: one centred column. A MacBook is the hero and the only thing that moves on arrival.
   Every later section is still until the visitor touches it. Dyes belong to tiles, violet to actions. */
:root{
  --bg:#FAFAFB; --surface:#FFFFFF; --ground:#F0F0F3; --line:#E4E4E9; --line-2:#CFCFD6;
  --ink:#1C1C1E; --ink-2:#55555C; --ink-3:#66666E;
  --violet:#6A4DE8; --violet-ink:#FFFFFF; --accent:#6A4DE8; --wash:rgba(106,77,232,.08); --ring:rgba(106,77,232,.5);
  --madder:#E4584A; --celadon:#8FD0B5; --turmeric:#F4B93A; --sky:#8FA8E8;
  --ok:#17803F; --warn:#B4581E;
  --wall:linear-gradient(135deg,#D6DCF8 0%,#E6DCF6 48%,#F4E2E2 100%);
  --menubar:rgba(255,255,255,.66);
  --lid:#0B0B0E; --lid-edge:rgba(255,255,255,.16);
  --base-1:#E9E9ED; --base-2:#C4C4CC; --base-3:#A3A3AD; --dent:#B4B4BD;
  --shadow-win:0 12px 28px -10px rgba(28,20,70,.32),0 1px 3px rgba(28,20,70,.16);
  --ease:cubic-bezier(.16,1,.3,1);
  --display:"Bricolage Grotesque",-apple-system,BlinkMacSystemFont,system-ui,sans-serif;
  --ui:-apple-system,BlinkMacSystemFont,"SF Pro Text",system-ui,"Segoe UI",sans-serif;
  --mono:"Geist Mono",ui-monospace,"SF Mono",Menlo,monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#111113; --surface:#1D1D20; --ground:#18181B; --line:#2B2B30; --line-2:#3E3E45;
  --ink:#F2F2F5; --ink-2:#B4B4BC; --ink-3:#9494A0;
  --violet:#7B5CF0; --accent:#B7A2FF; --wash:rgba(183,162,255,.1); --ring:rgba(183,162,255,.55); --ok:#4ADE80; --warn:#F0A064;
  --wall:linear-gradient(135deg,#1B1C45 0%,#2A2060 50%,#3B2050 100%); --menubar:rgba(20,20,26,.6);
  --lid-edge:rgba(255,255,255,.22); --base-1:#4A4A52; --base-2:#34343A; --base-3:#26262B; --dent:#2C2C32;
  --shadow-win:0 14px 30px -10px rgba(0,0,0,.6),0 1px 3px rgba(0,0,0,.5); color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#111113; --surface:#1D1D20; --ground:#18181B; --line:#2B2B30; --line-2:#3E3E45;
  --ink:#F2F2F5; --ink-2:#B4B4BC; --ink-3:#9494A0;
  --violet:#7B5CF0; --accent:#B7A2FF; --wash:rgba(183,162,255,.1); --ring:rgba(183,162,255,.55); --ok:#4ADE80; --warn:#F0A064;
  --wall:linear-gradient(135deg,#1B1C45 0%,#2A2060 50%,#3B2050 100%); --menubar:rgba(20,20,26,.6);
  --lid-edge:rgba(255,255,255,.22); --base-1:#4A4A52; --base-2:#34343A; --base-3:#26262B; --dent:#2C2C32;
  --shadow-win:0 14px 30px -10px rgba(0,0,0,.6),0 1px 3px rgba(0,0,0,.5); color-scheme:dark}

*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:76px}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 var(--ui);-webkit-font-smoothing:antialiased;
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));overflow-x:clip;
  scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:60;background:var(--bg)}
::selection{background:var(--violet);color:#fff}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:3px}
button{font:inherit;color:inherit;cursor:pointer}
:focus-visible{outline:2px solid var(--ring);outline-offset:3px;border-radius:6px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.w{max-width:1120px;margin-inline:auto}
svg.i{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}
kbd{font:500 11px/1 var(--mono);padding:4px 6px;border-radius:5px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);box-shadow:0 1px 0 var(--line-2);white-space:nowrap}
.kb{display:inline-flex;gap:4px;align-items:center;vertical-align:middle}
h1,h2,h3{font-family:var(--display);letter-spacing:-.03em;text-wrap:balance;margin:0}
h2{font-weight:700;font-size:clamp(2rem,4.4vw,3.1rem);line-height:1.04}
.lede{color:var(--ink-2);font-size:clamp(1rem,1.4vw,1.15rem);max-width:56ch;text-wrap:pretty;margin:14px 0 0}
.sec{padding-top:clamp(88px,11vw,136px)}
.head{max-width:680px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:38px;padding:0 15px;border-radius:9px;border:1px solid var(--line-2);background:var(--surface);font-weight:500;font-size:14px;text-decoration:none;transition:border-color .18s,transform .18s var(--ease),filter .18s;box-shadow:0 1px 2px rgba(0,0,0,.05)}
.btn:hover{border-color:var(--ink-3)}.btn:active{transform:translateY(1px)}
.btn.primary{background:var(--violet);border-color:transparent;color:var(--violet-ink);box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 1px 2px rgba(60,30,170,.35)}
.btn.primary:hover{filter:brightness(1.08)}
.btn.lg{height:48px;padding:0 22px;font-size:15px;border-radius:11px}
.btn.sm{height:32px;padding:0 12px;font-size:13px;border-radius:8px}
.btn[disabled]{opacity:.45;cursor:default}
.btn .arrow{transition:transform .25s var(--ease)}.btn:hover .arrow{transform:translateX(3px)}
.icon-btn{width:38px;height:38px;border-radius:9px;border:1px solid transparent;background:transparent;display:grid;place-items:center;color:var(--ink-2)}
.icon-btn:hover{background:var(--ground);color:var(--ink)}
.icon-btn .moon,.icon-btn .play{display:none}
:root[data-theme="dark"] .icon-btn .sun{display:none}:root[data-theme="dark"] .icon-btn .moon{display:block}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .icon-btn .sun{display:none}:root:not([data-theme="light"]) .icon-btn .moon{display:block}}
body.paused .icon-btn .pause{display:none}body.paused .icon-btn .play{display:block}

/* nav */
header.nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:50;margin-inline:calc(-1*max(16px,env(safe-area-inset-left,0px)));padding-inline:max(16px,env(safe-area-inset-left,0px));background:color-mix(in srgb,var(--bg) 84%,transparent);backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid var(--line)}
.nav-in{max-width:1120px;margin:0 auto;height:64px;display:flex;align-items:center;gap:20px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font:700 21px/1 var(--display);letter-spacing:-.02em}
.brand img{width:30px;height:30px;display:block;border-radius:7px}
.nav-links{display:flex;gap:2px;margin-left:10px}
.nav-links a{padding:8px 12px;border-radius:8px;font-size:14px;color:var(--ink-2);text-decoration:none}
.nav-links a:hover{color:var(--ink);background:var(--ground)}
.nav-right{margin-left:auto;display:flex;align-items:center;gap:6px}

/* hero */
.hero{padding-top:clamp(36px,5vw,64px);text-align:center;overflow-x:clip}
h1{font-weight:700;font-size:clamp(2.3rem,5vw,4.1rem);line-height:1.02;margin-inline:auto}
h1 .u{white-space:nowrap;background:linear-gradient(var(--violet),var(--violet)) 0 100%/0 .09em no-repeat;animation:under 1s 1.9s var(--ease) forwards;padding-bottom:.04em}
@keyframes under{to{background-size:100% .09em}}
.sub{margin:22px auto 0;max-width:52ch;font-size:clamp(1.02rem,1.5vw,1.2rem);color:var(--ink-2);text-wrap:pretty}
.cta{margin-top:30px;display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.trust{margin:18px auto 0;font-size:13px;color:var(--ink-3)}
.trust span+span::before{content:"·";margin:0 9px;color:var(--line-2)}
.stage{margin-top:clamp(28px,4vw,48px)}

/* MacBook */
.mac{position:relative;max-width:min(780px,100%);margin-inline:auto;perspective:2000px}
.mac::after{content:"";position:absolute;left:8%;right:8%;bottom:-26px;height:34px;background:radial-gradient(closest-side,rgba(30,20,80,.38),transparent);filter:blur(8px);z-index:-1}
.tilt{transform-style:preserve-3d;transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .5s var(--ease)}
.lid{transform-origin:50% 100%;position:relative;animation:open 1.4s cubic-bezier(.22,.8,.26,1) both}
@keyframes open{0%{transform:rotateX(88deg)}58%{transform:rotateX(-5deg)}80%{transform:rotateX(1.5deg)}100%{transform:rotateX(0)}}
@supports (animation-timeline:view()){
  .lid{animation:lidscroll linear both;animation-timeline:view();animation-range:entry 0% cover 40%}
  .canvas{animation:wakescroll linear both;animation-timeline:view();animation-range:entry 40% cover 40%}
  @keyframes lidscroll{from{transform:rotateX(88deg)}to{transform:rotateX(0)}}
  @keyframes wakescroll{from{opacity:0;filter:brightness(.2)}to{opacity:1;filter:none}}
}
.bezel{position:relative;background:var(--lid);border-radius:clamp(10px,2.2vw,22px) clamp(10px,2.2vw,22px) 6px 6px;padding:clamp(6px,1.5vw,16px) clamp(6px,1.5vw,16px) clamp(8px,1.9vw,20px);box-shadow:inset 0 0 0 1px var(--lid-edge),0 1px 0 var(--lid-edge),0 30px 60px -28px rgba(30,20,90,.5)}
.screen{position:relative;overflow:hidden;border-radius:clamp(3px,.7vw,8px) clamp(3px,.7vw,8px) 2px 2px;background:#000;container-type:inline-size}
.canvas{position:absolute;left:0;top:0;transform-origin:0 0;transform:scale(var(--k,1));animation:wake 1s .85s both}
@keyframes wake{from{opacity:0;filter:brightness(.2)}to{opacity:1;filter:none}}
.notch{position:absolute;left:50%;top:0;transform:translateX(-50%);width:13.5%;height:calc(24px*var(--k,1));background:var(--lid);border-radius:0 0 calc(10px*var(--k,1)) calc(10px*var(--k,1));z-index:70;display:grid;place-items:center}
.notch i{width:calc(6px*var(--k,1));height:calc(6px*var(--k,1));border-radius:50%;background:#1d2230;box-shadow:inset 0 0 0 1px #2d3548}
.glare{position:absolute;inset:0;pointer-events:none;z-index:80;background:linear-gradient(115deg,transparent calc(var(--gx,50%) - 22%),rgba(255,255,255,.075) var(--gx,50%),transparent calc(var(--gx,50%) + 22%))}
.base{position:relative;height:clamp(9px,1.7vw,17px);width:108%;margin-left:-4%;background:linear-gradient(var(--base-1),var(--base-2) 60%,var(--base-3));border-radius:2px 2px clamp(10px,2vw,22px) clamp(10px,2vw,22px)/2px 2px clamp(8px,1.4vw,15px) clamp(8px,1.4vw,15px);box-shadow:0 1px 0 rgba(0,0,0,.25)}
.base::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:rgba(0,0,0,.28);border-radius:2px}
.base i{position:absolute;left:50%;top:0;transform:translateX(-50%);width:17%;height:56%;border-radius:0 0 12px 12px;background:var(--dent);box-shadow:inset 0 -1px 0 rgba(255,255,255,.2)}

/* desk (inside the canvas, in design pixels) */
.cv{position:absolute;left:0;top:0;background:var(--wall);overflow:hidden;font-size:12px;color:var(--ink);isolation:isolate}
.cv .mb{position:absolute;inset:0 0 auto 0;height:24px;z-index:40;display:flex;align-items:center;gap:14px;padding:0 12px;background:var(--menubar);backdrop-filter:blur(16px) saturate(1.4);font-weight:500;font-size:12px;border-bottom:1px solid color-mix(in srgb,var(--ink) 8%,transparent);white-space:nowrap}
.cv .mb b{font-weight:700}.cv .mb .dim{opacity:.7;font-weight:400}
.cv .mb .sp{margin-left:auto;display:flex;align-items:center;gap:12px}
.cv .mb svg{width:15px;height:15px;fill:currentColor;opacity:.8}
.cv .mbq{all:unset;display:grid;place-items:center;width:26px;height:20px;border-radius:6px;cursor:pointer;color:var(--ink)}
.cv .mbq svg{width:16px;height:16px;opacity:1}
.cv .mbq:hover,.cv .mbq[aria-expanded="true"]{background:color-mix(in srgb,var(--ink) 16%,transparent)}
.cv .mbq:focus-visible{outline:2px solid var(--ring)}
.cv .field{position:absolute;left:0;right:0}
.cv .icons{position:absolute;right:14px;top:36px;display:grid;gap:14px;z-index:0;transition:opacity .6s var(--ease),transform .6s var(--ease)}
.cv .icons i{display:block;width:70px;text-align:center}
.cv .icons i::before{content:"";display:block;width:34px;height:42px;margin:0 auto 5px;border-radius:6px;background:color-mix(in srgb,var(--surface) 82%,transparent);border:1px solid color-mix(in srgb,var(--ink) 22%,transparent);box-shadow:0 2px 6px rgba(20,10,60,.18)}
.cv .icons b{display:block;font:500 10.5px/1.2 var(--ui);color:var(--ink);text-shadow:0 1px 2px color-mix(in srgb,var(--surface) 70%,transparent)}
.cv.clean .icons{opacity:0;transform:translateX(10px)}
.cv .dock{position:absolute;z-index:30;left:50%;bottom:7px;transform:translateX(-50%);display:flex;gap:9px;align-items:center;padding:6px 9px;border-radius:16px;background:var(--menubar);backdrop-filter:blur(16px) saturate(1.4);border:1px solid color-mix(in srgb,var(--ink) 10%,transparent)}
.cv .dock i{width:32px;height:32px;border-radius:8px;display:block;background:color-mix(in srgb,var(--ink) 16%,transparent)}
.cv .dock img{width:34px;height:34px;display:block;border-radius:8px}
.cv .empty{position:absolute;left:0;right:0;top:40%;display:none;text-align:center;font-weight:500;z-index:2;color:var(--ink-2);font-size:14px}.cv .empty.on{display:block}

.win{position:absolute;left:0;top:0;width:200px;height:140px;z-index:1;--r:0deg;--s:1;transform:rotate(var(--r)) scale(var(--s));transform-origin:50% 50%;
  transition:left .8s var(--ease),top .8s var(--ease),width .8s var(--ease),height .8s var(--ease),transform .8s var(--ease),opacity .4s ease,filter .5s var(--ease);
  transition-delay:var(--d,0ms),var(--d,0ms),var(--d,0ms),var(--d,0ms),var(--d,0ms),0ms,0ms}
.noanim .win{transition:none!important}
.win.enter{opacity:0;--s:.88;filter:blur(6px)}
.win.closed{--s:.93;opacity:0;pointer-events:none;transition-delay:0ms}
.win-in{position:absolute;inset:0;border-radius:11px;overflow:hidden;background:var(--surface);box-shadow:var(--shadow-win);border:1px solid color-mix(in srgb,var(--ink) 14%,transparent);display:flex;flex-direction:column;transition:box-shadow .5s}
.tiled .win-in{box-shadow:0 2px 8px -2px rgba(0,0,0,.28)}
.win .stitch{position:absolute;inset:-5px;border-radius:15px;border:1.5px dashed var(--dye);opacity:0;pointer-events:none}
.win.fl .stitch{animation:stitch 1.3s ease-out}
@keyframes stitch{0%{opacity:0;transform:scale(.97)}25%{opacity:1;transform:none}100%{opacity:0}}
.win .veil{position:absolute;inset:0;background:rgba(8,6,20,.52);opacity:0;transition:opacity .4s ease;pointer-events:none;z-index:5}
.dimmed .win:not(.act) .veil{opacity:1}
.bar{height:28px;flex:none;display:flex;align-items:center;gap:6px;padding:4px 10px;background:color-mix(in srgb,var(--ground) 80%,var(--surface));border-bottom:1px solid var(--line)}
.lights{display:flex;gap:6px}
.lights i{width:10px;height:10px;border-radius:50%;display:block;background:color-mix(in srgb,var(--ink) 22%,transparent)}
.lights button{width:10px;height:10px;border-radius:50%;border:0;padding:0;background:#FF5F57;position:relative;display:block}
.lights button::before{content:"";position:absolute;inset:-9px}
.lights button:hover{filter:brightness(1.12)}
.t{margin:0 auto;display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500;color:var(--ink-2);white-space:nowrap;overflow:hidden}
.t b{width:8px;height:8px;border-radius:2px;background:var(--dye);display:block;flex:none}
.bd{flex:1;min-height:0;padding:12px;overflow:hidden;position:relative;--c:var(--dye)}
.ln{height:7px;border-radius:4px;background:color-mix(in srgb,var(--ink) 11%,transparent);margin-bottom:8px}
.ln.h{height:12px;width:46%;background:color-mix(in srgb,var(--ink) 30%,transparent);margin-bottom:12px}
.ln.s{width:72%}.ln.m{width:88%}.ln.x{width:54%}
.ln.hq{background:color-mix(in srgb,var(--turmeric) 50%,transparent);width:64%}
.addr{height:20px;border-radius:10px;background:var(--ground);margin-bottom:10px;padding:0 10px;font-size:10.5px;color:var(--ink-3);display:flex;align-items:center}
.himg{height:34%;min-height:26px;border-radius:8px;background:linear-gradient(120deg,var(--sky),color-mix(in srgb,var(--sky) 40%,var(--celadon)));margin-bottom:10px}
.win.dk .win-in,.win.dk .bar{background:#15161B}.win.dk .bar{border-color:#26272F}.win.dk .t{color:#B6B8C6}
.term{font:400 11px/1.7 var(--mono);color:#D6D8E2}.term .p{color:var(--celadon)}.term .d{color:#8A8CA0}.term .o{color:var(--turmeric)}
.caret{display:inline-block;width:6px;height:11px;background:#D6D8E2;vertical-align:-2px;animation:blink 1.1s steps(2) infinite}@keyframes blink{50%{opacity:0}}
.cols3{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;height:100%}
.kcol{background:var(--ground);border-radius:7px;padding:6px;display:flex;flex-direction:column;gap:6px}
.kcard{height:22px;border-radius:5px;background:var(--surface);border:1px solid var(--line)}.kcard.c{background:var(--c);border-color:transparent}
.mrow{display:flex;gap:8px;align-items:center;margin-bottom:10px}.mrow i{width:16px;height:16px;border-radius:50%;background:color-mix(in srgb,var(--ink) 18%,transparent);flex:none}.mrow .ln{margin:0;flex:1}
.bub{max-width:76%;padding:6px 9px;border-radius:10px;font-size:11px;line-height:1.35;margin-bottom:7px;background:var(--ground);color:var(--ink-2)}
.bub.me{margin-left:auto;background:var(--violet);color:#fff}

.cur{position:absolute;z-index:90;left:0;top:0;width:22px;height:22px;pointer-events:none;transition:left .9s cubic-bezier(.45,.05,.2,1),top .9s cubic-bezier(.45,.05,.2,1);filter:drop-shadow(0 2px 3px rgba(0,0,0,.35))}
.cur svg{width:22px;height:22px;display:block}
.cur::after{content:"";position:absolute;left:-9px;top:-9px;width:22px;height:22px;border-radius:50%;border:2px solid var(--violet);opacity:0}
.cur.click::after{animation:ripple .5s ease-out}
@keyframes ripple{from{opacity:.9;transform:scale(.3)}to{opacity:0;transform:scale(1.6)}}

.pop{position:absolute;z-index:45;top:30px;right:8px;width:236px;padding:11px 12px;border-radius:14px;background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(20px) saturate(1.3);border:1px solid var(--line-2);box-shadow:0 24px 48px -16px rgba(20,10,60,.45),0 2px 6px rgba(20,10,60,.12);font-size:12.5px;transform-origin:92% 0;transition:opacity .22s ease,transform .38s var(--ease)}
.pop.off{opacity:0;transform:scale(.94) translateY(-6px);pointer-events:none}
.pop-h{display:flex;align-items:center;gap:8px;font:700 14px var(--display);margin-bottom:10px}.pop-h img{width:22px;height:22px;border-radius:5px}
.sw{margin-left:auto;position:relative;width:34px;height:20px;border-radius:99px;border:0;padding:0;background:var(--line-2);transition:background .25s;flex:none}
.sw::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.3);transition:transform .3s var(--ease)}
.sw[aria-checked="true"]{background:var(--violet)}.sw[aria-checked="true"]::after{transform:translateX(14px)}
.lay{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:8px}
.lay button{border:1px solid var(--line);background:var(--ground);border-radius:9px;padding:6px 2px 5px;display:grid;gap:4px;justify-items:center;font-size:10.5px;color:var(--ink-2);transition:border-color .2s,background .2s}
.lay button:hover{border-color:var(--line-2)}
.lay button[aria-pressed="true"]{border-color:var(--accent);background:var(--wash);color:var(--ink)}
.lay svg{width:34px;height:24px}.lay svg rect{fill:color-mix(in srgb,var(--ink) 26%,transparent)}.lay button[aria-pressed="true"] svg rect{fill:var(--accent)}
.prow{display:flex;align-items:center;gap:8px;padding:7px 2px 3px;border-top:1px solid var(--line);color:var(--ink-2);background:none;border-inline:0;border-bottom:0;width:100%;text-align:left}
.prow .kb{margin-left:auto}

.cap{display:flex;align-items:center;gap:9px;width:fit-content;max-width:100%;min-height:38px;margin:clamp(30px,4vw,44px) auto 0;padding:8px 16px 8px 13px;border-radius:99px;background:var(--surface);color:var(--ink);border:1px solid var(--line-2);box-shadow:0 10px 24px -14px rgba(20,10,60,.4);font-size:14px;font-weight:500;line-height:1.3}
.cap::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--violet);flex:none}
.cap.bump{animation:bump .5s var(--ease)}
@keyframes bump{0%{transform:translateY(8px) scale(.97);opacity:.3}100%{transform:none;opacity:1}}

/* controls under the laptop */
.ctl{margin:18px auto 0;min-height:44px;display:flex;flex-wrap:wrap;gap:12px 22px;align-items:center;justify-content:center}
.ctl[data-s="intro"] [data-ready],.ctl[data-s="ready"] [data-intro]{display:none}
.ctl [data-ready],.ctl [data-intro]{display:flex;flex-wrap:wrap;gap:12px 22px;align-items:center;justify-content:center}
.seg{display:inline-grid;grid-template-columns:1fr 1fr;padding:3px;border-radius:10px;background:var(--ground);border:1px solid var(--line);position:relative}
.seg button{position:relative;z-index:1;border:0;background:transparent;height:32px;min-width:112px;padding:0 14px;border-radius:7px;font-size:13px;font-weight:500;color:var(--ink-3);transition:color .2s}
.seg button[aria-pressed="true"]{color:var(--ink)}
.seg .thumb{position:absolute;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);border-radius:7px;background:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.14);border:1px solid var(--line);transition:transform .45s var(--ease)}
.seg[data-on="true"] .thumb{transform:translateX(100%)}
.lays{display:flex;gap:6px}
.lays button{width:44px;height:40px;border-radius:9px;border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;transition:border-color .2s,background .2s}
.lays button:hover{border-color:var(--line-2)}
.lays button[aria-pressed="true"]{border-color:var(--accent);background:var(--wash)}
.lays svg{width:28px;height:20px}.lays svg rect{fill:color-mix(in srgb,var(--ink) 30%,transparent)}.lays button[aria-pressed="true"] svg rect{fill:var(--accent)}

/* how it works */
.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(28px,4vw,56px);margin-top:56px;counter-reset:s}
.step{min-width:0}
.mini{position:relative;aspect-ratio:8/5;border-radius:14px;background:var(--ground);border:1px solid var(--line);overflow:hidden;padding:0}
.mini .mt{position:absolute;border-radius:7px;background:var(--dye);transition:left .8s var(--ease),top .8s var(--ease),width .8s var(--ease),height .8s var(--ease),opacity .45s ease,transform .8s var(--ease);box-shadow:0 1px 3px rgba(0,0,0,.18);overflow:hidden}
.mini .mt::before,.mini .mt::after{content:"";position:absolute;left:10%;height:5px;border-radius:3px;background:rgba(0,0,0,.18)}
.mini .mt::before{top:12px;width:34%}.mini .mt::after{top:24px;width:56%}
.mini .mt.off{opacity:0;transform:scale(.9)}
.step h3{font:700 1.4rem/1.15 var(--display);letter-spacing:-.02em;margin:22px 0 8px;display:flex;gap:12px;align-items:baseline}
.step h3 span{font:500 13px var(--mono);color:var(--ink-3)}
.step p{margin:0;color:var(--ink-2);max-width:36ch;text-wrap:pretty}
.after-steps{margin:44px 0 0;color:var(--ink-2)}

/* tools */
.tabs{display:flex;gap:4px;margin-top:36px;padding:4px;border:1px solid var(--line);border-radius:12px;background:var(--ground);overflow-x:auto;scrollbar-width:none;width:fit-content;max-width:100%}
.tabs::-webkit-scrollbar{display:none}
.tabs{position:relative}
.tabs .pl{position:absolute;top:4px;bottom:4px;left:0;width:0;border-radius:8px;background:var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.14);transition:transform .5s var(--ease),width .5s var(--ease)}
.tabs button{position:relative;z-index:1;height:36px;padding:0 16px;border-radius:8px;border:0;background:transparent;font-size:14px;font-weight:500;color:var(--ink-3);white-space:nowrap;transition:color .2s,background .2s}
.tabs button:hover{color:var(--ink)}
.tabs button[aria-selected="true"]{color:var(--ink)}
.panel{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.5fr);gap:clamp(28px,5vw,64px);align-items:center;margin-top:36px}
.panel[hidden]{display:none}
.panel:not([hidden]){animation:fadeup .7s var(--ease) both}
.panel .q{color:var(--ink-3);margin:0 0 10px;font-size:15px}
.panel h3{font:700 clamp(1.6rem,2.6vw,2.1rem)/1.1 var(--display);letter-spacing:-.025em;margin:0 0 14px}
.panel p.d{margin:0 0 18px;color:var(--ink-2);max-width:40ch;text-wrap:pretty}
.fstage{position:relative;border-radius:14px;overflow:hidden;border:1px solid var(--line-2);box-shadow:0 24px 48px -28px rgba(40,30,90,.4);background:var(--wall)}
.fit{position:relative;overflow:hidden;width:100%}
.fit .cv{transform-origin:0 0;transform:scale(var(--k,1))}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:10px;background:var(--ground)}
.two .fit{border-radius:9px;border:1px solid var(--line-2)}
.fbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px 14px;background:var(--surface);border-top:1px solid var(--line);font-size:13.5px;color:var(--ink-2)}
.fbar .btn{margin-left:auto}
.fbar span{min-width:0}

/* compare */
.cmpw{margin-top:44px;border:1px solid var(--line-2);border-radius:26px;background:var(--surface);overflow:hidden;box-shadow:0 30px 60px -40px rgba(40,30,90,.4)}
.picker{display:none;gap:6px;flex-wrap:wrap;padding:14px;border-bottom:1px solid var(--line);align-items:center;font-size:13px;color:var(--ink-3)}
.picker button{height:32px;padding:0 12px;border-radius:99px;border:1px solid var(--line);background:var(--surface);font-size:13px;font-weight:500;color:var(--ink-2)}
.picker button[aria-pressed="true"]{border-color:var(--accent);background:var(--wash);color:var(--ink)}
table.cmp{width:100%;border-collapse:collapse;table-layout:fixed}
.cmp th,.cmp td{padding:0 14px;height:62px;text-align:left;vertical-align:middle;border-top:1px solid var(--line);font-size:14.5px;font-weight:400;color:var(--ink-2);line-height:1.35}
.cmp thead th{border-top:0;height:78px;font:600 17px var(--display);letter-spacing:-.01em;color:var(--ink)}
.cmp thead th .h{display:flex;align-items:center;gap:10px}
.cmp thead th.q{width:22%}
.cmp th:first-child{width:17%;color:var(--ink);font-weight:600;font-size:15px}
.cmp .q{background:var(--wash)}
.cmp thead th.q{color:var(--accent)}
.ic{width:34px;height:34px;border-radius:9px;flex:none;display:grid;place-items:center;font:700 15px var(--display);color:var(--ink-2);background:var(--ground);border:1px solid var(--line-2)}
img.ic{padding:0;border:0;background:none;display:block}
.ic svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.cmp .m{display:flex;gap:12px;align-items:center}
.cmp .b{width:22px;height:22px;border-radius:50%;flex:none;display:grid;place-items:center}
.cmp .b svg{width:12px;height:12px;stroke-width:2.2}
.cmp .y .b{background:var(--violet);color:#fff}
.cmp .n .b{background:var(--ground);color:var(--ink-3);box-shadow:inset 0 0 0 1px var(--line-2)}
.cmp .p .b{background:color-mix(in srgb,var(--warn) 20%,var(--surface));color:var(--warn)}
.cmp .u .dash{width:22px;text-align:center;flex:none;color:var(--ink-3)}
.cmp .u .tx{color:var(--ink-3)}
.cmp .q .tx{color:var(--ink);font-weight:500}
.pick{margin:26px 0 0;color:var(--ink-2);max-width:72ch;text-wrap:pretty}
.pick b{color:var(--ink);font-weight:600}
.fine{margin:14px 0 0;font-size:13px;color:var(--ink-3);max-width:80ch;line-height:1.55}
.fine a{color:var(--ink-2)}


.cmp th,.cmp td{height:58px}

/* pricing */
.price{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.9fr);gap:clamp(32px,6vw,80px);align-items:center;margin-top:44px}
.perks{display:grid;gap:22px;margin:0;padding:0;list-style:none}
.perks h3{font:700 1.2rem var(--display);letter-spacing:-.015em;margin-bottom:3px}
.perks p{margin:0;color:var(--ink-2);max-width:42ch}
.pcard{background:var(--surface);border:1px solid var(--line-2);border-radius:20px;padding:30px;box-shadow:0 30px 60px -34px rgba(40,30,90,.45)}
.tag{display:inline-block;margin-bottom:18px;padding:5px 11px;border-radius:99px;font-size:12.5px;font-weight:500;background:var(--wash);color:var(--ink);border:1px solid color-mix(in srgb,var(--violet) 30%,var(--line))}
.pcard .seg{display:grid;width:fit-content;margin-bottom:22px}
.pcard .tag{display:block;width:fit-content}
.pcard .seg button{min-width:96px}
.tag[hidden]{display:none}
.amt{display:flex;align-items:baseline;gap:14px;font:700 clamp(3.6rem,7vw,5rem)/1 var(--display);letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.was{font:500 1.3rem var(--ui);letter-spacing:0;color:var(--ink-3);text-decoration-thickness:1.5px}
.fmeter{margin:0 0 16px}
.fm-top{font-size:13.5px;color:var(--ink-2);margin-bottom:8px}
.fm-top b{font:700 15px var(--display);color:var(--ink);font-variant-numeric:tabular-nums}
.fm-bar{height:6px;border-radius:3px;background:var(--ground);overflow:hidden;border:1px solid var(--line)}
.fm-bar i{display:block;height:100%;width:100%;border-radius:3px;background:var(--violet);transition:width .8s var(--ease)}
.fmeter.low .fm-bar i{background:var(--warn)}
.pnote{margin:10px 0 22px;color:var(--ink-3);font-size:14px;min-height:44px}
.pcard .btn{width:100%}
.plinks{margin:16px 0 0;font-size:13px;color:var(--ink-3);display:flex;gap:14px;flex-wrap:wrap}
.after{margin:44px 0 0;display:flex;gap:10px 40px;flex-wrap:wrap;color:var(--ink-2);font-size:14.5px}
.after b{color:var(--ink);font-weight:600}

/* faq */
.faq{margin-top:40px;max-width:780px}
.faq details{border-bottom:1px solid var(--line)}
.faq details:first-child{border-top:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;padding:20px 0;display:flex;justify-content:space-between;align-items:center;gap:16px;font-size:17px;font-weight:500}
.faq summary::-webkit-details-marker{display:none}
.faq summary svg{transition:transform .35s var(--ease);color:var(--ink-3)}
.faq details[open] summary svg{transform:rotate(45deg)}
.faq details>div{overflow:hidden}
.faq p{margin:0 0 22px;color:var(--ink-2);max-width:64ch;text-wrap:pretty}

/* final + footer */
.final{text-align:center}
.final img{width:96px;height:96px;border-radius:22px;display:block;margin:0 auto 28px;box-shadow:0 22px 40px -18px rgba(70,40,200,.55),0 2px 6px rgba(30,20,70,.18)}
.final .cta{margin-top:26px}
footer{border-top:1px solid var(--line);margin-top:clamp(88px,11vw,136px);margin-inline:calc(-1*max(16px,env(safe-area-inset-left,0px)));padding-inline:max(16px,env(safe-area-inset-left,0px))}
.foot{max-width:1120px;margin:0 auto;padding:44px 0 20px;display:flex;flex-wrap:wrap;gap:24px 56px;justify-content:space-between}
.foot p{color:var(--ink-3);font-size:14px;max-width:34ch;margin:12px 0 0}
.foot nav{display:flex;gap:6px 22px;flex-wrap:wrap;align-items:flex-start}
.foot nav a{color:var(--ink-2);text-decoration:none;font-size:14px;padding:4px 0}.foot nav a:hover{color:var(--ink)}
.legal{max-width:1120px;margin:0 auto;padding:0 0 40px;font-size:12.5px;color:var(--ink-3)}


/* ---------- motion layer ---------- */
@keyframes fadeup{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes rise{from{opacity:0;transform:translateY(.45em);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
h1{isolation:isolate}
h1 .hw{display:inline-block;position:relative;animation:var(--tn,tilein) 1.2s var(--ease) calc(var(--i)*100ms + 200ms) both}
h1 .hw::before{content:"";position:absolute;inset:.06em -.1em .01em;border-radius:.17em;z-index:-1;opacity:0;background:color-mix(in srgb,var(--dye) 85%,transparent);outline:2px dashed color-mix(in srgb,var(--dye) 55%,var(--ink));outline-offset:3px;pointer-events:none;animation:var(--bn,tilebg) 2s var(--ease) calc(var(--i)*100ms + 200ms) both}
@keyframes tilein{0%{opacity:0;transform:translate(var(--tx),var(--ty)) rotate(var(--rot)) scale(.9)}25%{opacity:1}100%{opacity:1;transform:none}}
@keyframes tilein2{0%{opacity:0;transform:translate(var(--tx),var(--ty)) rotate(var(--rot)) scale(.9)}25%{opacity:1}100%{opacity:1;transform:none}}
@keyframes tilebg{0%{opacity:.95}55%{opacity:.95}100%{opacity:0}}
@keyframes tilebg2{0%{opacity:.95}55%{opacity:.95}100%{opacity:0}}
body.paused h1 .hw,body.paused h1 .hw::before{animation:none}
.hero .sub{animation:fadeup .9s .55s var(--ease) both}
.hero .cta{animation:fadeup .9s .68s var(--ease) both}
.hero .trust,.hero .phone-note{animation:fadeup .9s .8s var(--ease) both}
.trust .seal{display:inline-flex;align-items:center;gap:7px;padding:5px 13px 5px 7px;border-radius:99px;background:color-mix(in srgb,var(--ok) 12%,var(--surface));border:1px solid color-mix(in srgb,var(--ok) 40%,var(--line));color:var(--ink);font-weight:600;position:relative;overflow:hidden;vertical-align:middle}
.seal svg{width:20px;height:20px;flex:none;animation:sealpop .7s 1.3s cubic-bezier(.34,1.56,.64,1) both}
.seal .r1,.seal .r2{fill:var(--ok)}
.seal .tick{fill:none;stroke:var(--bg);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:14;stroke-dashoffset:14;animation:tick .55s 1.75s var(--ease) forwards}
@keyframes tick{to{stroke-dashoffset:0}}
@keyframes sealpop{from{transform:scale(.4) rotate(-40deg);opacity:0}to{transform:none;opacity:1}}
.seal::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.6) 50%,transparent 65%);transform:translateX(-130%);animation:sweep 7s 2.6s ease-in-out infinite;pointer-events:none}
@keyframes sweep{0%{transform:translateX(-130%)}16%,100%{transform:translateX(130%)}}
body.paused .seal .tick{animation:none;stroke-dashoffset:0}
.phone-note{display:none;margin:14px auto 0;font-size:14px;color:var(--ink-2);max-width:32ch}

/* word-by-word headings and block reveals; both start visible and are armed by script */
.wd{display:inline-block;transition:opacity .8s var(--ease),transform .9s var(--ease),filter .8s var(--ease);transition-delay:calc(var(--i)*55ms)}
.pre .wd{opacity:0;transform:translateY(.5em);filter:blur(7px)}
.rv{transition:opacity .9s var(--ease),transform 1s var(--ease);transition-delay:var(--rd,0ms)}
.rv.pre{opacity:0;transform:translateY(26px)}

/* scroll-linked: the laptop recedes as the page moves on; a thin progress line */
@supports (animation-timeline:view()){
  .mac{animation:macscroll linear both;animation-timeline:view();animation-range:exit 5% exit 75%}
  @keyframes macscroll{to{transform:translateY(40px) scale(.94);opacity:.4}}
  .scrollbar{animation:grow linear both;animation-timeline:scroll(root)}
  @keyframes grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
}
.scrollbar{position:fixed;left:0;right:0;top:env(safe-area-inset-top,0px);height:2px;z-index:70;background:var(--violet);transform-origin:0 50%;transform:scaleX(0);pointer-events:none}
@supports not (animation-timeline:view()){.scrollbar{display:none}}

/* kinetic marquee */
.marq{overflow:hidden;margin-top:clamp(72px,9vw,120px);padding-block:8px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.marq-t{display:flex;align-items:center;width:max-content;animation:marq 46s linear infinite}
.marq:hover .marq-t{animation-play-state:paused}
.marq-t>*{flex:none}
.marq-t span{font:700 clamp(2.2rem,5.4vw,4.4rem)/1.1 var(--display);letter-spacing:-.035em;color:var(--ink);white-space:nowrap}
.marq-t span.dm{color:var(--ink-3);opacity:.55}
.marq-t svg{width:clamp(26px,3.4vw,44px);height:clamp(26px,3.4vw,44px);margin-inline:clamp(22px,3vw,44px)}
@keyframes marq{to{transform:translateX(-50%)}}

/* film */
.film-head{display:flex;justify-content:space-between;align-items:end;gap:20px;flex-wrap:wrap}
.film{position:relative;margin-top:36px;border-radius:22px;overflow:hidden;border:1px solid var(--line-2);background:#0c0c10;aspect-ratio:16/9;box-shadow:0 40px 80px -44px rgba(40,30,110,.55)}
.film video{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:cover}
.playbtn{position:absolute;left:50%;top:50%;width:92px;height:92px;margin:-46px 0 0 -46px;border-radius:50%;border:0;background:rgba(255,255,255,.94);color:#17171c;display:grid;place-items:center;box-shadow:0 18px 40px -12px rgba(0,0,0,.55);transition:transform .35s var(--ease),opacity .3s}
.playbtn::before{content:"";position:absolute;inset:-10px;border-radius:50%;border:2px solid rgba(255,255,255,.7);animation:ring 2.2s ease-out infinite}
@keyframes ring{from{opacity:.9;transform:scale(.88)}to{opacity:0;transform:scale(1.35)}}
.playbtn:hover{transform:scale(1.07)}
.playbtn svg{width:30px;height:30px;fill:currentColor;margin-left:4px}
.playbtn.gone{opacity:0;pointer-events:none}
.chaps{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}
.chaps button{height:38px;padding:0 14px;border-radius:99px;border:1px solid var(--line);background:var(--surface);font-size:13.5px;font-weight:500;color:var(--ink-2);display:inline-flex;gap:9px;align-items:center;transition:border-color .2s,color .2s,background .2s}
.chaps button:hover{border-color:var(--line-2);color:var(--ink)}
.chaps button span{font:500 12px var(--mono);color:var(--ink-3)}
.chaps button[aria-current="true"]{border-color:var(--accent);background:var(--wash);color:var(--ink)}
.film-note{margin:14px 0 0;color:var(--ink-3);font-size:13px;min-height:20px}
.credits{margin-top:6px;font-size:13px;color:var(--ink-3)}
.credits summary{cursor:pointer;padding:6px 0;width:fit-content}
.credits p{margin:6px 0 0;max-width:70ch}
.credits a{color:var(--ink-2)}

/* "you can touch this" affordances */
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(106,77,232,.7)}70%{box-shadow:0 0 0 9px rgba(106,77,232,0)}100%{box-shadow:0 0 0 0 rgba(106,77,232,0)}}
@keyframes tap{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(3px,4px) scale(.9)}}
.hint-on .mbq[aria-expanded="false"]{animation:pulse 1.8s ease-out infinite}
.hint-on .win .lights button{animation:pulse 1.8s ease-out infinite}
.turn{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:var(--accent);transition:opacity .4s}
.turn svg{width:18px;height:18px;animation:tap 1.4s ease-in-out infinite}
.turn.gone{opacity:0;width:0;overflow:hidden;pointer-events:none}
.try-chip{position:absolute;right:12px;bottom:72px;z-index:40;display:flex;gap:8px;align-items:center;padding:7px 13px 7px 10px;border-radius:99px;background:var(--surface);border:1px solid var(--line-2);font-size:12.5px;font-weight:600;box-shadow:0 10px 24px -12px rgba(20,10,60,.5);pointer-events:none;transition:opacity .4s,transform .4s var(--ease)}
.try-chip svg{width:16px;height:16px;color:var(--accent);animation:tap 1.4s ease-in-out infinite}
.try-chip.gone{opacity:0;transform:translateY(-8px)}
.mini{cursor:pointer}
.mini:focus-visible{outline-offset:4px}
.mini-l{position:absolute;left:12px;bottom:12px;z-index:3;font:500 12px var(--mono);color:var(--ink);background:var(--surface);padding:5px 10px;border-radius:99px;border:1px solid var(--line-2)}
.mini-h{position:absolute;right:12px;top:12px;z-index:3;display:flex;gap:6px;align-items:center;font-size:12px;font-weight:500;color:var(--ink);background:var(--surface);padding:5px 11px 5px 8px;border-radius:99px;border:1px solid var(--line-2);box-shadow:0 6px 14px -8px rgba(20,10,60,.4);transition:opacity .4s}
.mini-h svg{width:15px;height:15px;color:var(--accent);animation:tap 1.4s ease-in-out infinite}
.mini-h.gone{opacity:0}
.mini::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 0 0 var(--accent);transition:box-shadow .3s}
.mini:hover::after{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--accent) 55%,transparent)}

/* spotlight that follows the pointer */
.spot{position:relative}
.spot::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:2;opacity:0;transition:opacity .4s;background:radial-gradient(380px circle at var(--mx,50%) var(--my,0%),color-mix(in srgb,var(--violet) 13%,transparent),transparent 62%)}
.spot:hover::before{opacity:1}
.btn.primary{position:relative;overflow:hidden}
.btn.primary::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.28) 50%,transparent 65%);transform:translateX(-120%);transition:transform .8s var(--ease)}
.btn.primary:hover::after{transform:translateX(120%)}

/* comparison: checks pop in, rows respond */
.cmp .b{transition:transform .55s cubic-bezier(.34,1.56,.64,1) var(--d,0ms)}
.cmp.pre .b{transform:scale(0)}
.cmp tbody tr{transition:background .2s}
.cmp tbody tr:hover th,.cmp tbody tr:hover td:not(.q){background:var(--ground)}
.cmp tbody tr:hover td.q{background:color-mix(in srgb,var(--violet) 14%,var(--surface))}
.cmp td,.cmp th{transition:background .2s}

/* faq opens smoothly where the browser supports it */
@supports (interpolate-size:allow-keywords){
  .faq{interpolate-size:allow-keywords}
  .faq details::details-content{block-size:0;overflow:hidden;transition:block-size .45s var(--ease),content-visibility .45s allow-discrete}
  .faq details[open]::details-content{block-size:auto}
}

/* floating call to action */
.fcta{position:fixed;left:50%;bottom:max(16px,env(safe-area-inset-bottom,0px));z-index:55;display:flex;align-items:center;gap:12px;padding:7px 7px 7px 14px;border-radius:99px;background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(16px) saturate(1.4);border:1px solid var(--line-2);box-shadow:0 18px 40px -16px rgba(30,20,80,.5);text-decoration:none;font:700 15px var(--display);letter-spacing:-.01em;transform:translate(-50%,160%);opacity:0;transition:transform .6s var(--ease),opacity .4s}
.fcta.show{transform:translate(-50%,0);opacity:1}
.fcta img{width:24px;height:24px;border-radius:6px;display:block}
.fcta b{font:600 14px var(--ui);background:var(--violet);color:#fff;padding:9px 16px;border-radius:99px}


/* guided card */
.coach{position:absolute;left:50%;bottom:10%;transform:translateX(-50%);z-index:30;width:min(350px,calc(100% - 32px));padding:15px 17px 14px;border-radius:18px;background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(22px) saturate(1.3);border:1px solid var(--line-2);box-shadow:0 30px 60px -24px rgba(20,10,60,.55);color:var(--ink);text-align:left;animation:coachin .7s var(--ease) both}
@keyframes coachin{from{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%,0)}}
.coach-top{display:flex;justify-content:space-between;align-items:center;gap:14px}
.coach h3{font:700 17px/1.2 var(--display);letter-spacing:-.02em;color:var(--ink);margin:0}
.coach-dots{display:flex;gap:5px;flex:none}
.coach-dots i{width:6px;height:6px;border-radius:3px;background:var(--line-2);transition:width .45s var(--ease),background .3s}
.coach-dots i.d{background:var(--ink-3)}.coach-dots i.on{width:20px;background:var(--violet)}
.coach p{margin:6px 0 13px;font-size:13.5px;line-height:1.5;color:var(--ink-2);text-wrap:pretty}
.coach-act{display:flex;align-items:center;gap:18px}
.cbtn{height:38px;padding:0 18px;border-radius:99px;border:0;background:var(--violet);color:#fff;font-weight:600;font-size:14.5px;box-shadow:0 8px 26px -8px rgba(123,92,240,.9);animation:glow 2.2s ease-in-out infinite;transition:transform .2s var(--ease),opacity .3s}
.cbtn:hover{transform:translateY(-1px)}
@keyframes glow{0%,100%{box-shadow:0 0 0 0 rgba(150,120,255,.55),0 8px 26px -8px rgba(123,92,240,.9)}50%{box-shadow:0 0 0 8px rgba(150,120,255,0),0 8px 30px -6px rgba(123,92,240,1)}}
.coach.busy .cbtn{opacity:.45;pointer-events:none;animation:none}
.clink{background:none;border:0;color:var(--ink-3);font-size:13.5px;text-decoration:underline;text-underline-offset:3px;padding:8px 2px}
.clink:hover{color:var(--ink)}
.coach :focus-visible{outline-color:var(--ring)}
.scrollhint{position:absolute;left:50%;top:9%;transform:translateX(-50%);z-index:35;display:flex;gap:8px;align-items:center;padding:9px 16px 9px 12px;border-radius:99px;background:var(--surface);border:1px solid var(--line-2);font-size:13.5px;font-weight:600;box-shadow:0 14px 30px -14px rgba(20,10,60,.5);pointer-events:none;transition:opacity .4s,transform .4s var(--ease)}
.scrollhint svg{width:16px;height:16px;fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;animation:nudge 1.4s ease-in-out infinite}
@keyframes nudge{50%{transform:translateY(3px)}}
.scrollhint.gone{opacity:0;transform:translateX(-50%) translateY(-8px)}
.hl-glyph .mbq[aria-expanded="false"]{animation:pulse 1.8s ease-out infinite}
.hl-dots .win .lights button{animation:pulse 1.8s ease-out infinite}
.ctl[data-s="tour"],.cap[hidden],.coach[hidden]{display:none!important}
@media (max-width:760px){
  .coach{position:relative;left:auto;bottom:auto;transform:none;width:auto;margin:18px 0 0;animation:fadeup .6s var(--ease) both}
  @keyframes coachin{from{opacity:0}to{opacity:1}}
}

.lv{position:fixed;inset:0;z-index:90;background:var(--bg);overflow:auto;padding:max(28px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) 64px max(16px,env(safe-area-inset-left,0px))}
.lv-in{max-width:700px;margin:0 auto;display:grid;gap:12px}
.lv-bar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}
.lv-sw{font-size:14px;color:var(--ink-2)}
.lv h2{font-size:clamp(2rem,4vw,2.8rem);margin:6px 0 0}
.lv h3{font:700 1.15rem/1.3 var(--display);letter-spacing:-.01em;margin:26px 0 0}
.lv p,.lv li{color:var(--ink-2);max-width:68ch;text-wrap:pretty;margin:0}
.lv p.upd{color:var(--ink-3);font-size:14px}
.lv ul{margin:0;padding-left:20px;display:grid;gap:8px}
.lv strong{color:var(--ink);font-weight:600}
.lv a{color:var(--ink)}
mark.todo{background:color-mix(in srgb,var(--turmeric) 45%,transparent);color:var(--ink);padding:0 4px;border-radius:4px}
/* responsive */
@media (max-width:980px){
  .nav-links{display:none}
  .panel{grid-template-columns:1fr}
  .price{grid-template-columns:1fr}
}
@media (max-width:760px){
  .phone-note{display:block}
  .trust .seal{display:flex;width:fit-content;margin:0 auto 10px}
  .trust .seal+span::before{display:none}
  .film{border-radius:16px}.playbtn{width:72px;height:72px;margin:-36px 0 0 -36px}
  .steps{grid-template-columns:1fr;gap:40px}
  .cap{font-size:13.5px;min-height:56px;border-radius:16px}
  .two{grid-template-columns:1fr}
  .picker{display:flex}
  .cmpw{border-radius:20px}
  .cmp thead{display:none}
  .cmp tr{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line)}
  .cmp tbody tr:first-child{border-top:0}
  .cmp th:first-child{grid-column:1/-1;width:auto;border-top:0;height:auto;background:var(--ground);padding:12px 16px}
  .cmp td{border-top:0;display:none;height:auto;padding:14px 16px}
  .cmp td.q,.cmp[data-pick="mac"] td[data-c="mac"],.cmp[data-pick="rect"] td[data-c="rect"],.cmp[data-pick="mag"] td[data-c="mag"],.cmp[data-pick="aero"] td[data-c="aero"]{display:block}
  .cmp td::before{content:attr(data-n);display:block;font:600 11px var(--ui);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);margin-bottom:8px}
  .pcard{padding:24px}
  .seg button{min-width:0}
}
@media (max-width:420px){.nav-right .btn{display:none}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition-duration:.01ms!important;transition-delay:0ms!important}
  h1 .u{background-size:100% .09em}
  html{scroll-behavior:auto}
}
body.paused *{animation-play-state:paused!important}
@media (prefers-reduced-motion:reduce){.seal .tick{stroke-dashoffset:0}.pre .wd,.rv.pre,.cmp.pre .b{opacity:1!important;transform:none!important;filter:none!important}.fcta{transition:none}}

.buy-note{margin:10px 0 0;font-size:13px;color:var(--ink-3)}
.btn[aria-disabled="true"]{opacity:.55;pointer-events:none}
