#land{color:var(--ink);background:var(--bg);overflow-x:clip}
#land *{box-sizing:border-box}#land a{color:inherit}
.lp-wrap{max-width:1200px;margin:0 auto;padding:0 28px}
.lp-nav{position:sticky;top:0;z-index:5;background:var(--bg);border-bottom:2px solid var(--rule)}
.lp-nav .lp-wrap{display:flex;align-items:center;gap:26px;height:56px}
.lp-links{display:flex;gap:22px;margin-left:12px;font-size:14.5px;font-weight:500}
.lp-links a{text-decoration:none}.lp-links a:hover{text-decoration:underline;text-decoration-color:var(--marker);text-underline-offset:5px;text-decoration-thickness:2px}
.lp-sp{flex:1}
.lp-btn{display:inline-flex;align-items:center;gap:10px;border:2px solid var(--rule);border-radius:4px;background:var(--ink);color:var(--on-ink);font:600 15px 'Bricolage Grotesque';padding:11px 20px;cursor:pointer;text-decoration:none;transition:box-shadow .15s,transform .15s}
.lp-btn:hover{box-shadow:5px 5px 0 var(--marker);transform:translate(-2px,-2px)}
.lp-btn.lg{padding:15px 26px;font-size:17px}
.lp-btn.out{background:transparent;color:var(--ink)}
.lp-btn.sm{padding:7px 14px;font-size:14px}
.lp-hero{padding:72px 0 28px}
.lp-hero h1{font:800 clamp(52px,9.4vw,132px)/.92 'Bricolage Grotesque';font-variation-settings:'opsz' 96,'wdth' 86;letter-spacing:-.035em;margin:0 0 34px;max-width:11.5em;text-wrap:balance}
.lp-hero .hl{animation-delay:.5s}
.lp-intro{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:30px;align-items:end;margin-bottom:56px}
.lp-intro p{margin:0;font-size:21px;line-height:1.45;max-width:36em;color:var(--ink2)}
.lp-cta{display:flex;gap:12px;flex-wrap:wrap}
.lp-intro .lp-fine{margin:16px 0 0;font:400 12.5px 'JetBrains Mono',monospace;color:var(--mute);max-width:none}
/* specimen */
.spec{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);border:2px solid var(--rule);border-radius:4px;background:var(--sheet);min-height:420px}
.sp-l{padding:28px 30px;display:flex;flex-direction:column;border-right:2px solid var(--rule);min-width:0}
.sp-q{font:500 14px 'JetBrains Mono',monospace;color:var(--mute);margin:0 0 14px;min-height:42px}.sp-q b{color:var(--ink);font-weight:500}
.sp-q .cur{display:inline-block;width:8px;height:1em;background:var(--marker);vertical-align:-2px;margin-left:2px;animation:lpb 1s steps(2) infinite}
@keyframes lpb{50%{opacity:0}}
.sp-a{font:600 clamp(26px,3vw,38px)/1.14 'Bricolage Grotesque';font-variation-settings:'opsz' 60,'wdth' 90;letter-spacing:-.025em;min-height:90px;opacity:0;transition:opacity .35s}
.sp-a.on{opacity:1}
.sp-a mark{background:linear-gradient(104deg,var(--fill),var(--fill)) no-repeat;background-size:0 100%;transition:background-size .8s cubic-bezier(.6,.05,.2,1);color:inherit}.sp-a.on mark{background-size:100% 100%}
.sp-a .cite{font:500 12px 'JetBrains Mono',monospace;letter-spacing:0;vertical-align:.8em;background:var(--ink);color:var(--on-ink);border-radius:3px;padding:1px 6px;margin-left:5px}
.sp-a.ref .big{display:block;font-weight:800;font-size:clamp(40px,5vw,60px);line-height:1;text-decoration:line-through;text-decoration-color:var(--marker);text-decoration-thickness:.09em}
.sp-a.ref .sm{display:block;font:400 16px/1.5 'Bricolage Grotesque';letter-spacing:0;color:var(--ink2);margin-top:12px}
.sp-m{margin:auto 0 0;padding-top:20px;font:400 12px 'JetBrains Mono',monospace;color:var(--mute);opacity:0;transition:opacity .4s}.sp-m.on{opacity:1}
.sp-r{background:var(--reader);padding:14px;display:flex;flex-direction:column;min-width:0}
.sp-h{display:flex;justify-content:space-between;gap:10px;font:400 12px 'JetBrains Mono',monospace;color:var(--ink2);padding:2px 4px 10px}
.sp-sheet{flex:1;background:var(--sheet);border:1px solid var(--line);border-radius:3px;padding:12px 0;font:400 13px/1.75 'JetBrains Mono',monospace;overflow:hidden;opacity:.35;transition:opacity .4s}.sp-sheet.on{opacity:1}
.sp-sheet .ln{display:grid;grid-template-columns:46px minmax(0,1fr)}.sp-sheet .n{text-align:right;padding-right:14px;color:var(--mute);font-size:11px;opacity:.7}
.sp-sheet .c{white-space:pre-wrap;word-break:break-word;padding-right:16px;color:var(--ink2);min-height:1.75em}
.sp-sheet .ln.inp .c{background:var(--fill-soft);color:var(--ink)}.sp-sheet .ln.inp .n{color:var(--marker);opacity:1}
.sp-sheet mark{background:linear-gradient(104deg,var(--fill),var(--fill)) no-repeat;background-size:0 100%;color:var(--ink);border-radius:2px;padding:.04em .1em;transition:background-size .7s .3s cubic-bezier(.6,.05,.2,1)}.sp-sheet.hit mark{background-size:100% 100%}
/* sections */
.lp-sec{padding:104px 0 0}
.lp-sec h2{font:800 clamp(34px,5.4vw,72px)/.98 'Bricolage Grotesque';font-variation-settings:'opsz' 80,'wdth' 88;letter-spacing:-.03em;margin:0 0 18px;text-wrap:balance;max-width:14em}
.lp-sec .lede{font-size:19px;color:var(--ink2);max-width:40em;margin:0 0 44px}
.lp-rule{border:0;border-top:2px solid var(--rule);margin:0}
.lp-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:2px solid var(--rule)}
.lp-3>div{padding:26px 26px 30px 0;border-right:1px solid var(--line);margin-right:26px}.lp-3>div:last-child{border:0;margin:0}
.lp-3 h3{font:700 22px 'Bricolage Grotesque';letter-spacing:-.02em;margin:0 0 8px}
.lp-3 p{margin:0;color:var(--ink2);font-size:16px}
.lp-3 .big{font:800 clamp(44px,5vw,68px)/1 'Bricolage Grotesque';font-variation-settings:'opsz' 96,'wdth' 86;letter-spacing:-.035em;margin:26px 0 4px}
.lp-3 .cap{font:400 12px 'JetBrains Mono',monospace;color:var(--mute)}
.lp-ev{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:0;border:2px solid var(--rule);border-radius:4px;background:var(--sheet)}
.lp-ev>div{padding:28px 30px;min-width:0}.lp-ev>div:first-child{border-right:2px solid var(--rule)}
.lp-ev h3{font:700 20px 'Bricolage Grotesque';margin:0 0 2px;letter-spacing:-.02em}.lp-ev .s{font:400 12px 'JetBrains Mono',monospace;color:var(--mute);margin:0 0 20px}
.lp-row{display:grid;grid-template-columns:150px minmax(0,1fr) 56px;gap:12px;align-items:center;font-size:14px;margin:20px 0;color:var(--ink2)}
.lp-row .tr{height:12px;background:var(--line);border-radius:2px;overflow:hidden}.lp-row .fl{height:100%;background:var(--ink);transform-origin:left;transform:scaleX(0);transition:transform .9s cubic-bezier(.6,.05,.2,1)}
.lp-row.hi{color:var(--ink);font-weight:600}.lp-row.hi .fl{background:var(--marker)}
.lp-ev.in .fl{transform:scaleX(1)}
.lp-row b{font:500 12.5px 'JetBrains Mono',monospace;text-align:right;color:var(--ink)}
.lp-st{padding:18px 0;border-top:1px solid var(--line)}.lp-st:first-of-type{border-top:0;padding-top:0}
.lp-st b{display:inline-block;font:800 clamp(44px,5vw,64px)/1 'Bricolage Grotesque';font-variation-settings:'opsz' 96,'wdth' 86;letter-spacing:-.035em}
.lp-st b.warn{background:linear-gradient(104deg,var(--fill),var(--fill));border-radius:.2em .5em .3em .45em;padding:0 .12em}
.lp-st p{margin:6px 0 0;font-size:15px;color:var(--ink2);max-width:30em}
.lp-err{margin:0;padding:0;list-style:none;max-width:820px;border-top:2px solid var(--rule)}
.lp-err li{display:grid;grid-template-columns:34px minmax(0,1fr);gap:8px;padding:18px 0;border-bottom:1px solid var(--line);font-size:17px;color:var(--ink2)}
.lp-err li b{color:var(--ink);font-weight:700}.lp-err .d{font:500 14px 'JetBrains Mono',monospace;color:var(--marker);padding-top:2px}
.lp-final{padding:120px 0 110px}
.lp-final h2{font-size:clamp(48px,8.4vw,120px);line-height:.92;max-width:9em}
.lp-foot{border-top:2px solid var(--rule);padding:30px 0 56px;font-size:13px;color:var(--mute)}
.lp-foot .lp-wrap{display:flex;gap:24px;flex-wrap:wrap;justify-content:space-between}.lp-foot p{margin:0;max-width:60ch}
@media (max-width:900px){
 .lp-links{display:none}.lp-intro{grid-template-columns:1fr}.spec{grid-template-columns:1fr}.sp-l{border-right:0;border-bottom:2px solid var(--rule);min-height:300px}
 .lp-3{grid-template-columns:1fr}.lp-3>div{border-right:0;margin:0;border-bottom:1px solid var(--line);padding-right:0}
 .lp-ev{grid-template-columns:1fr}.lp-ev>div:first-child{border-right:0;border-bottom:2px solid var(--rule)}
 .lp-row{grid-template-columns:112px minmax(0,1fr) 48px}.lp-sec{padding-top:72px}.lp-hero{padding-top:44px}.lp-wrap{padding:0 18px}.sp-sheet{min-height:280px}
}
@media (prefers-reduced-motion:reduce){.sp-q .cur{animation:none}.lp-row .fl{transition:none}}

#land ::selection,.app ::selection{background:var(--marker);color:#fff}
.lp-mq{border-top:2px solid var(--rule);border-bottom:2px solid var(--rule);overflow:hidden;margin-top:84px;background:var(--bg)}
.lp-mq-t{display:flex;width:max-content;animation:mq 60s linear infinite}.lp-mq:hover .lp-mq-t{animation-play-state:paused}
@keyframes mq{to{transform:translateX(-50%)}}
.lp-mq-i{display:flex;align-items:baseline;gap:14px;padding:20px 36px;white-space:nowrap;border-right:1px solid var(--line);font:600 clamp(20px,2.4vw,30px)/1 'Bricolage Grotesque';font-variation-settings:'opsz' 48,'wdth' 90;letter-spacing:-.02em}
.lp-mq-i.ok span{background:linear-gradient(transparent 34%,var(--fill) 34% 94%,transparent 94%);padding:0 .1em}
.lp-mq-i.no span{text-decoration:line-through;text-decoration-color:var(--marker);text-decoration-thickness:.08em;color:var(--ink2)}
.lp-mq-i small{font:500 11px 'JetBrains Mono',monospace;letter-spacing:0;color:var(--mute)}
.lp-story{height:420vh;position:relative;margin-top:104px}
.lp-pin{position:sticky;top:57px;height:calc(100vh - 57px);display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:0;border-top:2px solid var(--rule);border-bottom:2px solid var(--rule);background:var(--bg)}
.lp-pin-l{padding:40px 36px 40px 28px;display:flex;flex-direction:column;justify-content:space-between;border-right:2px solid var(--rule);max-width:520px;margin-left:auto;width:100%}
.lp-pin-l h2{font:800 clamp(34px,4.4vw,60px)/.98 'Bricolage Grotesque';font-variation-settings:'opsz' 80,'wdth' 88;letter-spacing:-.03em;margin:0}
.lp-steps{list-style:none;margin:0;padding:0;display:grid;gap:0}
.lp-steps li{padding:14px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:34px 1fr;gap:8px;color:var(--mute);transition:color .3s}
.lp-steps li b{font:700 20px 'Bricolage Grotesque';letter-spacing:-.02em}.lp-steps li span{display:block;font-size:14.5px;line-height:1.45;max-height:0;overflow:hidden;opacity:0;transition:max-height .4s,opacity .3s}
.lp-steps li i{font:500 12px 'JetBrains Mono',monospace;font-style:normal;padding-top:6px}
.lp-steps li.on{color:var(--ink)}.lp-steps li.on i{color:var(--marker)}.lp-steps li.on span{max-height:90px;opacity:1;color:var(--ink2);margin-top:4px}
.lp-prog{height:3px;background:var(--line);margin-top:20px}.lp-prog i{display:block;height:100%;width:0;background:var(--marker)}
.lp-pin-r{position:relative;background:var(--reader);overflow:hidden;min-width:0}
.lp-pn{position:absolute;inset:0;padding:34px 34px;opacity:0;transform:translateY(16px);transition:opacity .45s,transform .45s;pointer-events:none;display:flex;flex-direction:column;justify-content:center;gap:14px}
.lp-pn.on{opacity:1;transform:none}
.lp-pn h4{margin:0;font:500 12px 'JetBrains Mono',monospace;color:var(--mute)}
.pg-s{background:var(--sheet);border:1px solid var(--line);border-radius:3px;font:400 12.5px/1.7 'JetBrains Mono',monospace;color:var(--ink2);overflow:hidden}
.pg-s .blk{padding:10px 16px;border-top:2px dashed transparent;position:relative;transition:border-color .5s,background .5s;white-space:pre-wrap;word-break:break-word}
.pg-s .blk:first-child{border-top-width:0}
.lp-pn.on .pg-s .blk{border-top-color:var(--marker)}.lp-pn.on .pg-s .blk:first-child{border-top-color:transparent}
.pg-s .blk em{position:absolute;right:10px;top:-9px;background:var(--marker);color:#fff;font:500 10px 'JetBrains Mono',monospace;font-style:normal;padding:0 6px;border-radius:2px;opacity:0;transition:opacity .4s .3s}.lp-pn.on .blk em{opacity:1}
.pc{display:grid;grid-template-columns:24px minmax(0,1fr) 38%;gap:12px;align-items:center;padding:12px 14px;background:var(--sheet);border:1px solid var(--line);border-radius:3px;opacity:0;transform:translateX(-14px);transition:opacity .4s,transform .4s}
.lp-pn.on .pc{opacity:1;transform:none}.lp-pn.on .pc:nth-of-type(2){transition-delay:.08s}.lp-pn.on .pc:nth-of-type(3){transition-delay:.16s}.lp-pn.on .pc:nth-of-type(4){transition-delay:.24s}.lp-pn.on .pc:nth-of-type(5){transition-delay:.32s}.lp-pn.on .pc:nth-of-type(6){transition-delay:.4s}
.pc .no{font:500 12px 'JetBrains Mono',monospace;color:var(--mute)}.pc .t{font-weight:600;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pc .t small{display:block;font:400 11px 'JetBrains Mono',monospace;color:var(--mute);margin-top:2px}
.pc .bt{height:8px;background:var(--line);border-radius:2px;overflow:hidden}.pc .bt i{display:block;height:100%;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform .8s .3s cubic-bezier(.6,.05,.2,1)}.lp-pn.on .pc .bt i{transform:scaleX(1)}
.pc.top{border-color:var(--marker)}.pc.top .bt i{background:var(--marker)}
.gg{background:var(--sheet);border:1px solid var(--line);border-radius:3px;padding:18px 20px}
.gg .row{display:grid;grid-template-columns:minmax(0,1fr) 62px;gap:14px;align-items:center;margin:14px 0}
.gg .q{font-size:15px;font-weight:500;line-height:1.3}.gg .q small{display:block;font:400 11px 'JetBrains Mono',monospace;color:var(--mute);margin-top:2px}
.gg .trk{position:relative;height:16px;background:var(--line);border-radius:2px;margin-top:8px}.gg .trk i{position:absolute;left:0;top:0;bottom:0;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform 1s .3s cubic-bezier(.6,.05,.2,1)}.lp-pn.on .gg .trk i{transform:scaleX(1)}
.gg .trk u{position:absolute;top:-5px;bottom:-5px;width:2px;background:var(--marker);text-decoration:none}.gg .trk u::after{content:"threshold";position:absolute;top:-17px;left:-24px;font:500 10px 'JetBrains Mono',monospace;color:var(--marker)}
.gg .v{font:500 13px 'JetBrains Mono',monospace;text-align:right}.gg .res{font:600 12px 'JetBrains Mono',monospace}.gg .res.y{color:var(--ok)}.gg .res.n{color:var(--bad)}
.lp-big{font:600 clamp(24px,2.6vw,34px)/1.16 'Bricolage Grotesque';font-variation-settings:'opsz' 60,'wdth' 90;letter-spacing:-.025em}
@media (max-width:900px){.lp-pin{grid-template-columns:1fr;grid-template-rows:auto 1fr}.lp-pin-l{border-right:0;border-bottom:2px solid var(--rule);padding:18px;max-width:none}.lp-pin-l h2{font-size:28px}.lp-steps li span{display:none}.lp-steps li{padding:6px 0}.lp-steps li b{font-size:16px}.lp-steps{grid-template-columns:repeat(4,1fr)}.lp-steps li{grid-template-columns:1fr}.lp-steps li i{display:none}.lp-pn{padding:16px}.lp-story{height:360vh;margin-top:64px}.lp-pin{top:57px}.lp-mq{margin-top:56px}}
@media (prefers-reduced-motion:reduce){.lp-mq-t{animation:none}.lp-pn,.pc,.pc .bt i,.gg .trk i{transition:none}}

.dc{display:contents}
html:has(body.landing),body.landing{height:auto}
#land a.lp-btn{color:var(--on-ink)}#land a.lp-btn.out{color:var(--ink)}#land a.lp-btn:hover{color:var(--on-ink)}#land a.lp-btn.out:hover{color:var(--ink)}

/* story: the active step's marker draws a progress rule */
.lp-steps li{position:relative}
.lp-steps li::before{content:'';position:absolute;left:0;top:-1px;height:2px;width:100%;background:var(--marker);transform:scaleX(0);transform-origin:left;transition:transform .6s cubic-bezier(.2,.8,.2,1)}
.lp-steps li.on::before{transform:scaleX(1)}

/* kinetic type. Initial states apply only before .kin-in, so the finished state is always the natural one.
   --i is the letter index, --wi the word index, --w the pointer-wave amount (hero only). */
.kin .kin-h .kw{display:inline-block;vertical-align:top}
.kin .kin-h .kl{display:inline-block;will-change:transform}
.kin .kin-h.kin-in .kl{transform:translateY(calc(var(--w,0)*-.12em)) rotate(calc(var(--w,0)*-3deg))}
/* rise: words slide up through a mask */
.kin .kin-h[data-fx=rise] .kw{overflow:hidden;padding:.08em 0 .14em;margin:-.08em 0 -.14em}
.kin .kin-h[data-fx=rise]:not(.kin-in) .kl{transform:translateY(115%);opacity:0}
.kin .kin-h[data-fx=rise].kin-in .kl{transition:transform .8s cubic-bezier(.2,.9,.2,1) calc(var(--wi)*90ms),opacity .4s ease calc(var(--wi)*90ms)}
/* flip: letters fold up from the baseline and cool from a hot colour to the text colour */
.kin .kin-h[data-fx=flip]{perspective:800px}
.kin .kin-h[data-fx=flip]:not(.kin-in) .kl{transform:rotateX(-100deg) translateY(35%);transform-origin:50% 100%;opacity:0;color:var(--kc,inherit)}
.kin .kin-h[data-fx=flip].kin-in .kl{transform-origin:50% 100%;transition:transform .85s cubic-bezier(.2,1.25,.3,1) calc(var(--i)*32ms),opacity .2s ease calc(var(--i)*32ms),color 1.2s ease calc(var(--i)*32ms + .25s)}
/* blur: words come into focus */
.kin .kin-h[data-fx=blur]:not(.kin-in) .kw{filter:blur(16px);opacity:0;transform:scale(1.25) translateY(.18em)}
.kin .kin-h[data-fx=blur].kin-in .kw{transition:filter .9s cubic-bezier(.2,.8,.2,1) calc(var(--wi)*110ms),opacity .7s ease calc(var(--wi)*110ms),transform .9s cubic-bezier(.2,.8,.2,1) calc(var(--wi)*110ms)}
/* wipe: each word is uncovered left to right */
.kin .kin-h[data-fx=wipe]:not(.kin-in) .kw{clip-path:inset(-12% 100% -12% 0)}
.kin .kin-h[data-fx=wipe]:not(.kin-in) .kl{transform:translateX(-.5em)}
.kin .kin-h[data-fx=wipe].kin-in .kw{clip-path:inset(-12% -4% -12% 0);transition:clip-path .8s cubic-bezier(.7,0,.2,1) calc(var(--wi)*110ms)}
.kin .kin-h[data-fx=wipe].kin-in .kl{transition:transform .8s cubic-bezier(.2,.9,.2,1) calc(var(--wi)*110ms)}
/* pop: letters spring up from small with overshoot */
.kin .kin-h[data-fx=pop]:not(.kin-in) .kl{transform:scale(.2) rotate(-14deg);opacity:0}
.kin .kin-h[data-fx=pop].kin-in .kl{transition:transform .65s cubic-bezier(.3,1.7,.5,1) calc(var(--i)*28ms),opacity .2s ease calc(var(--i)*28ms)}
/* once played, the pointer wave needs a quick response, not the entrance delays */
.kin .kin-h.kin-done .kl,.kin .kin-h.kin-done .kw{transition:transform .25s ease-out,opacity .25s,filter .25s,color .25s!important;transition-delay:0s!important}
/* scroll fill: a paragraph lights up word by word as it crosses the screen */
.kin .fw{opacity:var(--o,.3);transition:opacity .2s linear}
/* magnetic buttons lean toward the pointer; `translate` is independent of any hover transform */
.kin [data-mag]{transition:translate .25s cubic-bezier(.2,.8,.2,1)}
.kin-progress{position:fixed;left:0;top:0;height:3px;width:100%;background:var(--kp,currentColor);transform:scaleX(var(--p,0));transform-origin:0 50%;z-index:100;pointer-events:none}
.kin-spot{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%),var(--sc,rgba(255,255,255,.12)),transparent 70%);border-radius:inherit}
.kin-band{overflow:hidden;white-space:nowrap}
.kin-band>div{display:flex;width:max-content;will-change:transform}
@media (prefers-reduced-motion:reduce){.kin-progress{display:none}}
