:root{--bg:#fbfbf9;--fg:#111111;--muted:#55554f;--line:#dadad4;--card:#f2f2ee;--accent:#111111;--accent-fg:#fbfbf9;--win:#ffffff;--win-bar:#e8e8e3;--shadow:none;--signal:#c2341a}
@media (prefers-color-scheme:dark){:root{--bg:#0e0e0c;--fg:#edede8;--muted:#a0a09a;--line:#2b2b27;--card:#161614;--accent:#edede8;--accent-fg:#0e0e0c;--win:#1b1b18;--win-bar:#292925;--shadow:none;--signal:#ff6a4a}}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--fg);font:17px/1.6 system-ui,-apple-system,"Segoe UI",sans-serif}
a{color:var(--accent)}
.wrap{max-width:960px;margin:0 auto;padding:0 20px}
.narrow{max-width:700px}
header.nav{display:flex;align-items:center;justify-content:space-between;padding:16px 0}
header.nav img{height:34px;display:block}
header.nav nav a{margin-left:18px;text-decoration:none;color:var(--muted);font-size:15px}
header.nav .logo-dark{display:none}
@media (prefers-color-scheme:dark){header.nav .logo-light{display:none}header.nav .logo-dark{display:block}}
.hero{text-align:center;padding:48px 20px 24px}
.hero h1{font-size:clamp(34px,6vw,56px);line-height:1.1;margin:.2em 0 .3em;letter-spacing:-.02em}
.hero p.lead{font-size:20px;color:var(--muted);max-width:600px;margin:0 auto 28px}
.btn{display:inline-block;padding:12px 24px;border-radius:10px;font-weight:600;text-decoration:none;border:2px solid var(--accent);margin:4px}
.btn.primary{background:var(--accent);color:var(--accent-fg)}
.btn.ghost{color:var(--accent)}
.small{font-size:14px;color:var(--muted)}
/* strip animation */
.demo{margin:32px auto 8px;max-width:760px;height:190px;overflow:hidden;border-radius:16px;background:var(--card);border:1px solid var(--line);position:relative;touch-action:pan-y;cursor:grab;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.demo .track{position:absolute;top:22px;left:0;height:146px;will-change:transform}
.demo .win{position:absolute;top:0;height:146px;border-radius:10px;background:var(--win);box-shadow:var(--shadow);border:1px solid var(--line);overflow:hidden;transition:opacity .2s}
.win i{display:block;height:20px;background:var(--win-bar)}
.win b{display:block;margin:10px;height:8px;border-radius:4px;background:var(--line)}
.win b:nth-child(3){width:70%}.win b:nth-child(4){width:50%}
.win .dot{position:absolute;top:6px;left:8px;width:8px;height:8px;border-radius:50%;background:var(--signal);opacity:.9}
.demo-note{text-align:center}
section{padding:40px 0}
h2{font-size:30px;line-height:1.2;margin:0 0 20px;letter-spacing:-.01em}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px}
.card h3{margin:0 0 6px;font-size:18px}.card p{margin:0;color:var(--muted);font-size:16px}
.steps{counter-reset:s;list-style:none;padding:0;display:grid;gap:14px}
.steps li{counter-increment:s;padding-left:52px;position:relative}
.steps li:before{content:counter(s);position:absolute;left:0;top:0;width:36px;height:36px;border-radius:50%;background:var(--accent);color:var(--accent-fg);display:grid;place-items:center;font-weight:700}
.prices{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}
.price{text-align:center}
.price .amt{font-size:40px;font-weight:700;margin:6px 0}
.price .btn{margin-top:10px}
details{border-bottom:1px solid var(--line);padding:14px 0}
summary{cursor:pointer;font-weight:600}
details p{margin:10px 0 0;color:var(--muted)}
kbd{font:14px ui-monospace,Menlo,monospace;background:var(--card);border:1px solid var(--line);border-radius:5px;padding:1px 6px}
.todo{background:#fff3b0;color:#000;padding:0 4px;border-radius:3px}
.banner{background:#fff3b0;color:#000;padding:8px 12px;border-radius:8px;margin:12px 0;font-weight:600}
footer{border-top:1px solid var(--line);padding:28px 0 40px;margin-top:30px;color:var(--muted);font-size:15px}
footer a{margin-right:16px}
.page h1{font-size:36px;margin:.4em 0}.page h2{font-size:22px;margin:1.6em 0 .4em}

.btn.soon{opacity:.55;cursor:default;pointer-events:none}
.shot{margin:28px 0}.shot img{width:100%;height:auto;border-radius:12px;border:1px solid var(--line);box-shadow:none}.shot figcaption{color:var(--muted);font-size:15px;margin-top:8px;text-align:center}
.hero-video{display:block;width:100%;max-width:960px;height:auto;aspect-ratio:8/5;margin:32px auto 8px;border-radius:12px;border:1px solid var(--line);box-shadow:none;background:var(--card)}

.totop{margin:24px 0 0;text-align:right;font-size:14px}.totop a{color:var(--muted);text-decoration:none}.totop a:hover{color:var(--accent)}
@media (max-width:600px){header.nav img{height:28px}header.nav nav a{margin-left:12px;font-size:14px}header.nav nav a[href$="#features"]{display:none}.hero{padding-top:28px}.price .amt{font-size:32px}.card{padding:16px}section{padding:28px 0}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* features: one even grid, twelve small line drawings */
.feats{display:grid;grid-template-columns:repeat(3,1fr);gap:44px 36px;margin-top:8px}
.feat h3{margin:0 0 4px;font-size:18px;line-height:1.3}
.feat p{margin:0;color:var(--muted);font-size:16px}
.feat .new{font-weight:400;font-size:14px;color:var(--muted);margin-left:6px}
.fa{margin:0 0 14px}
.fa svg{display:block;width:160px;height:80px;max-width:100%;fill:none;stroke:var(--fg);stroke-width:1.5;stroke-linejoin:miter;stroke-linecap:square;overflow:hidden}
.fa path,.fa circle{vector-effect:non-scaling-stroke}
.fa .w{fill:var(--bg)}
.fa .w.on{fill:var(--signal);stroke:var(--signal)}
.fa .w.on+.tb{stroke:var(--bg)}
.fa .rule{stroke:var(--muted);stroke-width:1}
.fa .div{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 4}
.fa .dl{stroke-width:1.75}
.fa .f{fill:var(--bg)}
.fa .dot{fill:var(--signal);stroke:none}
.fa .hole{fill:var(--bg);stroke:none}
.fa .fc{fill:var(--signal);stroke:none}
.fa .cover{fill:var(--bg);stroke:none}
.fa .i-c{stroke-dasharray:1;stroke-dashoffset:0}
.fa text{fill:var(--fg);stroke:none;font:600 15px ui-monospace,Menlo,monospace}
.fa text.ton{fill:var(--bg)}
.fa g{transform-box:fill-box}
.fa .p-w,.fa .s-a,.fa .v-a{transform-origin:0 50%}
.fa .q-a,.fa .q-b,.fa .q-c{transform-origin:0 0}
.fa .i-d{transform-origin:center;transform-box:fill-box}
/* still frames: used with no JS, and always with reduced motion */
.fa .d-w3{transform:translate(-84px,-8px)}
.fa .q-a{transform:translate(2px,-12px) scale(1.353,.8)}
.fa .q-b{transform:translate(-12px,24px) scale(1.147,.829)}
.fa .q-c{transform:translate(-18px,-8px) scale(1.235,.886)}
.fa .cover{transform:translateX(128px)}
@media (max-width:899px){.feats{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.feats{grid-template-columns:1fr;gap:34px}}
@media (prefers-reduced-motion:no-preference){
.fa{--ps:paused}
.fa.run{--ps:running}
.fa .p-key{animation:p-key 10s ease-in-out -5s infinite var(--ps)}
.fa .p-w1{animation:p-w1 10s ease-in-out -5s infinite var(--ps)}
.fa .p-w2{animation:p-w2 10s ease-in-out -5s infinite var(--ps)}
.fa .p-w3{animation:p-w3 10s ease-in-out -5s infinite var(--ps)}
.fa .l-track{animation:l-track 12s ease-in-out 0s infinite var(--ps)}
.fa .s-a{animation:s-a 10s ease-in-out -5s infinite var(--ps)}
.fa .s-b{animation:s-b 10s ease-in-out -5s infinite var(--ps)}
.fa .s-c{animation:s-c 10s ease-in-out -5s infinite var(--ps)}
.fa .d-w3{animation:d-w3 12s ease-in-out -4.68s infinite var(--ps)}
.fa .d-w2{animation:d-w2 12s ease-in-out -4.68s infinite var(--ps)}
.fa .dl{animation:d-dl 12s ease-in-out -4.68s infinite var(--ps)}
.fa .v-a{animation:v-a 10s ease-in-out -5s infinite var(--ps)}
.fa .v-b{animation:v-b 10s ease-in-out -5s infinite var(--ps)}
.fa .v-c{animation:v-c 10s ease-in-out -5s infinite var(--ps)}
.fa .m-strip{animation:m-strip 10s ease-in-out 0s infinite var(--ps)}
.fa .m-fing{animation:m-fing 10s ease-in-out 0s infinite var(--ps)}
.fa .w-a{animation:w-a 10s ease-in-out 0s infinite var(--ps)}
.fa .w-b{animation:w-b 10s ease-in-out 0s infinite var(--ps)}
.fa .q-a{animation:q-a 10s ease-in-out 0s infinite var(--ps)}
.fa .q-b{animation:q-b 10s ease-in-out 0s infinite var(--ps)}
.fa .q-c{animation:q-c 10s ease-in-out 0s infinite var(--ps)}
.fa .i-c{animation:i-c 10s ease-in-out -5s infinite var(--ps)}
.fa .i-d{animation:i-d 10s ease-in-out -5s infinite var(--ps)}
.fa .n-c0{animation:n-c0 10s ease-in-out -5s infinite var(--ps)}
.fa .n-c1{animation:n-c1 10s ease-in-out -5s infinite var(--ps)}
.fa .n-c2{animation:n-c2 10s ease-in-out -5s infinite var(--ps)}
.fa .n-c3{animation:n-c3 10s ease-in-out -5s infinite var(--ps)}
.fa .n-c4{animation:n-c4 10s ease-in-out -5s infinite var(--ps)}
.fa .k-sh{animation:k-sh 10s ease-in-out 0s infinite var(--ps)}
.fa .cover{animation:cover 12s ease-in-out -5.2s infinite var(--ps)}
@keyframes p-key{0%,8%{transform:translateY(0)}11%{transform:translateY(4px)}15%{transform:translateY(0)}100%{transform:translateY(0)}}
@keyframes p-w1{0%,14%{transform:translateX(0px) scaleX(1.3)}27%,80%{transform:none}92%,100%{transform:translateX(0px) scaleX(1.3)}}
@keyframes p-w2{0%,14%{transform:translateX(10px) scaleX(0.8125)}27%,80%{transform:none}92%,100%{transform:translateX(10px) scaleX(0.8125)}}
@keyframes p-w3{0%,14%{transform:translateX(-4px) scaleX(1.0833)}27%,80%{transform:none}92%,100%{transform:translateX(-4px) scaleX(1.0833)}}
@keyframes l-track{0%,8%{transform:translateX(0)}18%,36%{transform:translateX(-80px)}46%,64%{transform:translateX(-160px)}74%,100%{transform:translateX(-240px)}}
@keyframes s-a{0%,10%{transform:scaleX(.685)}22%,78%{transform:none}90%,100%{transform:scaleX(.685)}}
@keyframes s-b{0%,10%{transform:translateX(-34px)}22%,78%{transform:none}90%,100%{transform:translateX(-34px)}}
@keyframes s-c{0%,10%{transform:translateX(-34px)}22%,78%{transform:none}90%,100%{transform:translateX(-34px)}}
@keyframes d-w3{0%,8%{transform:translate(0,0)}15%{transform:translate(0,-8px)}31%,48%{transform:translate(-84px,-8px)}57%,72%{transform:translate(-56px,0)}85%,100%{transform:translate(0,0)}}
@keyframes d-w2{0%,52%{transform:translateX(0)}60%,72%{transform:translateX(56px)}85%,100%{transform:translateX(0)}}
@keyframes d-dl{0%,24%{opacity:0}31%,48%{opacity:1}56%,100%{opacity:0}}
@keyframes v-a{0%,10%{transform:scaleX(1.543)}22%,78%{transform:none}90%,100%{transform:scaleX(1.543)}}
@keyframes v-b{0%,10%{transform:translateX(38px)}22%,78%{transform:none}90%,100%{transform:translateX(38px)}}
@keyframes v-c{0%,10%{transform:translateX(38px)}22%,78%{transform:none}90%,100%{transform:translateX(38px)}}
@keyframes m-strip{0%,8%{transform:translateX(0);animation-timing-function:linear}16%{transform:translateX(-26px);animation-timing-function:cubic-bezier(.1,.6,.3,1)}34%,80%{transform:translateX(-140px);animation-timing-function:ease-in-out}94%{transform:translateX(0)}100%{transform:translateX(0)}}
@keyframes m-fing{0%,8%{transform:translateX(0);opacity:1;animation-timing-function:linear}16%{transform:translateX(-26px);opacity:1}19%{transform:translateX(-26px);opacity:0}80%{transform:translateX(-26px);opacity:0}94%{transform:translateX(0);opacity:0}100%{transform:translateX(0);opacity:1}}
@keyframes w-a{0%,14%{transform:translateX(0)}26%,62%{transform:translateX(42px)}74%,100%{transform:translateX(0)}}
@keyframes w-b{0%,14%{transform:translateX(0)}26%,62%{transform:translateX(42px)}74%,100%{transform:translateX(0)}}
@keyframes q-a{0%,30%{transform:translate(2px,-12px) scale(1.353,0.8)}42%,72%{transform:none}84%,100%{transform:translate(2px,-12px) scale(1.353,0.8)}}
@keyframes q-b{0%,30%{transform:translate(-12px,24px) scale(1.147,0.829)}42%,72%{transform:none}84%,100%{transform:translate(-12px,24px) scale(1.147,0.829)}}
@keyframes q-c{0%,30%{transform:translate(-18px,-8px) scale(1.235,0.886)}42%,72%{transform:none}84%,100%{transform:translate(-18px,-8px) scale(1.235,0.886)}}
@keyframes i-c{0%,10%{stroke-dashoffset:1}24%,80%{stroke-dashoffset:0}92%,100%{stroke-dashoffset:1}}
@keyframes i-d{0%,20%{transform:scale(0)}30%,72%{transform:scale(1)}84%,100%{transform:scale(0)}}
@keyframes n-c0{0%,10%{transform:translateX(80px)}24%,78%{transform:none}90%,100%{transform:translateX(80px)}}
@keyframes n-c1{0%,10%{transform:translateX(40px)}24%,78%{transform:none}90%,100%{transform:translateX(40px)}}
@keyframes n-c2{0%,10%{transform:translateX(0px)}24%,78%{transform:none}90%,100%{transform:translateX(0px)}}
@keyframes n-c3{0%,10%{transform:translateX(-40px)}24%,78%{transform:none}90%,100%{transform:translateX(-40px)}}
@keyframes n-c4{0%,10%{transform:translateX(-80px)}24%,78%{transform:none}90%,100%{transform:translateX(-80px)}}
@keyframes k-sh{0%,18%{transform:translateY(0)}30%,42%{transform:translateY(-7px)}54%,100%{transform:translateY(0)}}
@keyframes cover{0%,8%{transform:translateX(0);animation-timing-function:linear}70%,84%{transform:translateX(224px);animation-timing-function:ease-in-out}96%{transform:translateX(0)}100%{transform:translateX(0)}}
}
