:root{--paper: #D8E4F6;--haze: #EDF3FC;--ink: #0B132B;--accent: #1F3BD6;--line: #A9BEE2;--pad: clamp(20px, 4vw, 48px);--ease: cubic-bezier(.22,.7,.2,1);--liquid: cubic-bezier(.22,1,.36,1);font-family:Space Grotesk,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body{margin:0}body{background:var(--paper);color:var(--ink);overflow-x:hidden}.stage{position:relative}.page{position:relative;min-height:100dvh;display:flex;flex-direction:column}.page.is-in{animation:pageIn .42s var(--ease) backwards}.page.is-out{position:absolute;left:0;right:0;z-index:2;pointer-events:none;animation:pageOut .3s var(--ease) forwards}@keyframes pageIn{0%{opacity:0;transform:translateY(14px)}}@keyframes pageOut{to{opacity:0;transform:translateY(-10px)}}.is-in .top,.is-in .title h1,.is-in .tagline,.is-in .stack,.is-in .door,.is-in .index h1,.is-in .index li{animation:settle .5s var(--ease) backwards}.is-in .top{animation-delay:.04s}.is-in .title h1{animation-delay:.07s}.is-in .tagline{animation-delay:.13s}.is-in .stack{animation-delay:.17s}.is-in .door{animation-delay:.23s}.is-in .index h1{animation-delay:.07s}.is-in .index li:nth-child(1){animation-delay:.12s}.is-in .index li:nth-child(2){animation-delay:.18s}.is-in .index li:nth-child(3){animation-delay:.24s}.is-in .index li:nth-child(n+4){animation-delay:.3s}@keyframes settle{0%{opacity:0;transform:translateY(18px)}}canvas#gl{position:fixed;inset:0;width:100%;height:100%;display:block;z-index:0;transition:opacity .55s var(--ease)}:root[data-route=home] canvas#gl{opacity:0}.mask{display:block;overflow:hidden}.mask>span{display:block;transform:translateY(110%)}.curtain{position:fixed;inset:0;z-index:20;background:var(--accent);color:#fff;display:grid;place-content:center;text-align:center;padding:0 var(--pad);clip-path:inset(0 0 0 0);animation:wipe .95s 1.7s cubic-bezier(.76,0,.24,1) forwards}@keyframes wipe{to{clip-path:inset(0 0 100% 0)}}.curtain-inner{animation:exit .95s 1.7s cubic-bezier(.76,0,.24,1) forwards}@keyframes exit{to{transform:translateY(-16vh)}}.curtain .cmark{font-size:clamp(1.9rem,7vw,5rem);font-weight:700;letter-spacing:-.035em;line-height:1.05}.curtain .csub{margin-top:.5rem;font-size:clamp(.9rem,1.9vw,1.3rem);font-weight:400;opacity:.72}.curtain.project .csub{font-family:JetBrains Mono,ui-monospace,monospace;font-size:clamp(.8rem,1.5vw,1rem)}.curtain .cmark>span{animation:rise 1s .25s var(--ease) forwards}.curtain .csub>span{animation:rise 1s .5s var(--ease) forwards}@keyframes rise{to{transform:translateY(0)}}@keyframes dissolve{to{opacity:0;visibility:hidden}}@keyframes fade{0%{opacity:0}}.bar{position:absolute;top:0;left:0;right:0;z-index:5;display:flex;justify-content:space-between;gap:1rem;padding:calc(20px + env(safe-area-inset-top,0px)) var(--pad) 20px;font-size:.95rem;font-weight:500;animation:fade .8s 2.35s var(--ease) both}.bar .who{font-weight:700;letter-spacing:-.02em}.bar .what{opacity:.6}.hero{position:relative;isolation:isolate;display:grid;align-content:start;padding:clamp(88px,13vh,150px) var(--pad) clamp(56px,11vh,120px)}.hero:before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(78% 58% at 16% 80%,color-mix(in srgb,var(--accent) 15%,transparent),transparent 72%)}.statement{margin:0;font-size:clamp(1.9rem,8vw,6.6rem);font-weight:700;letter-spacing:-.045em;line-height:.98}.statement .mask:nth-child(1)>span{animation:rise 1.05s 1.85s var(--ease) forwards}.statement .mask:nth-child(2)>span{animation:rise 1.05s 1.97s var(--ease) forwards}.under{margin:clamp(18px,2.6vh,30px) 0 0;max-width:34ch;font-size:clamp(1rem,1.6vw,1.3rem);line-height:1.45;opacity:.72;animation:fade .9s 2.3s var(--ease) both}.panel{position:relative;background:var(--haze);border-top:2px solid var(--ink);padding:clamp(44px,8vh,96px) var(--pad) clamp(56px,10vh,120px)}.cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(32px,5vw,80px);row-gap:clamp(20px,3vh,32px)}.cols p{margin:0;font-size:clamp(1.02rem,1.35vw,1.18rem);line-height:1.6;opacity:.84}.cols p:only-child{grid-column:1 / -1;max-width:62ch}.cta{display:block;margin:clamp(40px,7vh,88px) var(--pad) clamp(56px,10vh,112px);border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);padding:.36em 0 .42em;color:inherit;text-decoration:none;font-size:clamp(1.9rem,6.5vw,4.5rem);font-weight:700;letter-spacing:-.045em;transition:color .34s var(--liquid),border-color .34s var(--liquid),padding-left .5s var(--liquid)}.cta:hover,.cta:focus-visible{border-color:var(--accent);padding-left:.12em}.cta:focus-visible{outline:3px solid var(--accent);outline-offset:8px}.cta,.index a,.door{position:relative;isolation:isolate;overflow:hidden}.cta:before,.index a:before,.door:before{content:"";position:absolute;inset:0;z-index:-1;background:var(--accent);border-radius:46% 46% 0 0/16% 16% 0 0;transform:translateY(101%) scaleX(1.08);transition:transform .52s var(--liquid),border-radius .52s var(--liquid)}.cta:hover:before,.cta:focus-visible:before,.index a:hover:before,.index a:focus-visible:before,.door:hover:before,.door:focus-visible:before{transform:translateY(0) scaleX(1);border-radius:0}.cta:hover,.cta:focus-visible,.index a:hover,.index a:focus-visible,.door:hover,.door:focus-visible{color:#fff}.top{position:fixed;top:0;left:0;right:0;z-index:3;display:flex;justify-content:space-between;gap:1rem;padding:calc(18px + env(safe-area-inset-top,0px)) var(--pad) 18px;font-size:.95rem;font-weight:500}.top a{color:inherit;text-decoration:none}.top a:hover,.top a:focus-visible{text-decoration:underline;text-underline-offset:4px}.top a:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.top .back:before{content:"←";display:inline-block;margin-right:.5em;transition:transform .25s cubic-bezier(.2,.75,.2,1)}.top .back:hover:before,.top .back:focus-visible:before{transform:translate(-5px)}.title{position:relative;z-index:2;padding:calc(84px + env(safe-area-inset-top,0px)) var(--pad) 0;pointer-events:none;max-width:100%}.title h1{margin:0;font-size:clamp(2.4rem,9vw,8.5rem);font-weight:800;font-stretch:125%;line-height:.9;letter-spacing:-.035em}.tagline{margin:1.1rem 0 0;max-width:34ch;font-size:clamp(1.05rem,1.6vw,1.35rem);font-weight:500;line-height:1.35}.stack{margin:.6rem 0 0;font-size:.98rem;opacity:.7}.doors{position:relative;z-index:1;margin-top:auto;pointer-events:none;display:flex;align-items:flex-end;justify-content:space-between;gap:clamp(20px,5vw,64px);padding:clamp(40px,8vh,96px) var(--pad) var(--pad);padding-bottom:calc(var(--pad) + env(safe-area-inset-bottom,0px))}.door{flex:0 1 auto;pointer-events:auto;display:flex;flex-direction:column;justify-content:flex-end;color:var(--ink);text-decoration:none;padding:.55rem .85rem;margin:-.55rem -.85rem;transition:color .34s var(--liquid)}.door.code{align-items:flex-end;text-align:right}.verb{font-size:clamp(1.6rem,3vw,2.5rem);font-weight:700;font-stretch:110%;line-height:1.1;padding-bottom:4px}.door:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.where{margin-top:.5rem;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.9rem;opacity:.7;overflow-wrap:anywhere}.index{position:relative;z-index:2;padding:calc(96px + env(safe-area-inset-top,0px)) var(--pad) var(--pad);max-width:900px;width:100%}.index h1{margin:0 0 2rem;font-size:clamp(2.75rem,7vw,5.5rem);font-weight:800;font-stretch:125%;letter-spacing:-.03em;line-height:.95}.index ul{list-style:none;margin:0;padding:0}.index li{border-top:2px solid var(--ink)}.index li:last-child{border-bottom:2px solid var(--ink)}.index a{display:block;padding:1.1rem 0;color:inherit;text-decoration:none;background:color-mix(in srgb,var(--paper) 70%,transparent);transition:color .34s var(--liquid),padding-left .5s var(--liquid)}.index a:hover,.index a:focus-visible{padding-left:1rem}.index a:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}.index strong{display:block;font-size:1.6rem;font-stretch:112%}.index span{display:block;margin-top:.25rem;opacity:.75}@media(max-width:900px){.doors{flex-direction:column;align-items:flex-start;gap:18px}.door.code{align-items:flex-start;text-align:left}.door.code .verb{background-position:0 100%}.cols{grid-template-columns:1fr}}.seen .bar{animation:none}.seen .mask>span,.seen .under{animation:none;transform:none;opacity:1}@media(prefers-reduced-motion:reduce){.curtain{animation:dissolve .6s 1.1s ease forwards}.curtain-inner{animation:none}.mask>span{animation:none!important;transform:none}.bar,.under{animation:none!important;opacity:1}.page.is-in,.page.is-out,.is-in *{animation:none!important;transform:none!important}*,:before,:after{transition-duration:1ms!important}}
