@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/93a6e477e1480c92-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c7e0cf6c760983e7-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/9d5a263311222317-s.p.woff2) format("woff2");unicode-range:u+00??,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:Bricolage Grotesque;font-style:normal;font-weight:800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/93a6e477e1480c92-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c7e0cf6c760983e7-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/9d5a263311222317-s.p.woff2) format("woff2");unicode-range:u+00??,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:Bricolage Grotesque Fallback;src:local("Arial");ascent-override:88.21%;descent-override:25.61%;line-gap-override:0.00%;size-adjust:105.43%}.__className_7133a4{font-family:Bricolage Grotesque,Bricolage Grotesque Fallback;font-style:normal}.__variable_7133a4{--font-display:"Bricolage Grotesque","Bricolage Grotesque Fallback"}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/b3bf17a9041d9433-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2801417b65625cf5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format("woff2");unicode-range:u+00??,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:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/7b19b489dc6743ba-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/28793f5c5e3d822d-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c9c3823090ec8b55-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/b3bf17a9041d9433-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/2801417b65625cf5-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d4368bf94c0ec4-s.p.woff2) format("woff2");unicode-range:u+00??,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:IBM Plex Sans Fallback;src:local("Arial");ascent-override:101.32%;descent-override:27.18%;line-gap-override:0.00%;size-adjust:101.17%}.__className_4b3a31{font-family:IBM Plex Sans,IBM Plex Sans Fallback;font-style:normal}.__variable_4b3a31{--font-body:"IBM Plex Sans","IBM Plex Sans Fallback"}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:u+00??,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:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/edc640959b0c7826-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/ac0e76ddaeeb7981-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/64d784ea54a4acde-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/ff71da380fbe67dd-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/6d831b18ae5b01dc-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/558ca1a6aa3cb55e-s.p.woff2) format("woff2");unicode-range:u+00??,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:JetBrains Mono Fallback;src:local("Arial");ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.00%;size-adjust:134.59%}.__className_571da3{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.__variable_571da3{--font-mono:"JetBrains Mono","JetBrains Mono Fallback"}:root{--bg:#ECEEEA;--surface:#F7F8F5;--fg:#14171A;--muted:#5D6560;--line:#CDD2CC;--accent:#2B3BD6;--accent-ink:#FFFFFF;--ok:#1E7A4C;--err:#B3261E;--void:#05070A;--void-ink:#ECEEEA;--display:var(--font-display),ui-sans-serif,system-ui,sans-serif;--body:var(--font-body),ui-sans-serif,system-ui,sans-serif;--mono:var(--font-mono),ui-monospace,Menlo,monospace;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#101315;--surface:#171B1E;--fg:#E6E9E5;--muted:#8E968F;--line:#2A3033;--accent:#8C98FF;--accent-ink:#0E1030;--ok:#5FD39A;--err:#FF8A80;color-scheme:dark}}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--fg);font:400 1.0625rem/1.6 var(--body);-webkit-font-smoothing:antialiased}img,svg{max-width:100%}[hidden]{display:none!important}.wrap{max-width:68rem;margin:0 auto;padding-inline:clamp(1rem,4vw,2.5rem)}a{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.logo .hood{fill:var(--fg)}.logo .face{fill:var(--void)}.logo .ring{fill:none;stroke:var(--void-ink);stroke-width:5}.logo .slash{stroke:var(--accent);stroke-width:5;stroke-linecap:round}header{display:flex;justify-content:space-between;gap:1rem;padding-block:1.5rem}.mark,header{align-items:center}.mark{display:inline-flex;gap:.55rem;font:600 1rem var(--mono);text-decoration:none;letter-spacing:-.01em}.mark svg{width:30px;height:30px;flex:none}.mark b{color:var(--accent);font-weight:600}nav{display:flex;gap:1.5rem;font:400 .875rem var(--mono)}nav a{text-decoration:none;color:var(--muted)}nav a:hover{color:var(--fg)}@media (max-width:560px){nav a:not(.go){display:none}}.hero{padding-block:clamp(3rem,10vw,7rem) clamp(3rem,8vw,5rem);border-bottom:1px solid var(--line)}.code{font:400 clamp(.85rem,1.6vw,1rem)/1.5 var(--mono);color:var(--muted);margin:0 0 1.75rem}.code .k{color:var(--accent)}.code .v{color:var(--fg);font-weight:600}.caret{display:inline-block;width:.6ch;height:1.1em;vertical-align:-.15em;background:var(--accent);margin-left:2px;animation:blink 1.1s steps(1) infinite}@keyframes blink{50%{opacity:0}}h1{font:800 clamp(2.6rem,7.5vw,5.75rem)/.95 var(--display);letter-spacing:-.035em;margin:0;max-width:14ch;text-wrap:balance}h1 em{font-style:normal;color:var(--accent)}.lede{max-width:38rem;margin:2rem 0 0;font-size:clamp(1.05rem,1.6vw,1.2rem);color:var(--muted)}.lede strong{color:var(--fg);font-weight:500}.cta{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2.25rem}.btn{display:inline-flex;align-items:center;gap:.5rem;font:600 .9375rem var(--mono);padding:.85rem 1.25rem;border-radius:3px;text-decoration:none;border:1px solid var(--fg);cursor:pointer}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{filter:brightness(1.08)}.btn.primary:disabled{opacity:.6;cursor:progress}.btn.ghost{background:transparent;color:var(--fg)}.btn.ghost:hover{background:var(--surface)}section{padding-block:clamp(3.5rem,8vw,6rem);border-bottom:1px solid var(--line)}.sec{display:grid;grid-template-columns:13rem 1fr;grid-gap:2rem;gap:2rem}@media (max-width:820px){.sec{grid-template-columns:1fr;gap:1.25rem}}.label{font:400 .8125rem var(--mono);color:var(--muted);padding-top:.5rem}.label:before{content:"// ";color:var(--accent)}h2{font:600 clamp(1.75rem,3.6vw,2.6rem)/1.08 var(--display);letter-spacing:-.025em;margin:0 0 2.5rem;max-width:22ch;text-wrap:balance}.body{min-width:0}.build{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--line)}@media (max-width:640px){.build{grid-template-columns:1fr}}.item{padding:1.5rem 1.5rem 1.75rem 0;border-bottom:1px solid var(--line)}.build .item:nth-child(odd){border-right:1px solid var(--line)}.build .item:nth-child(2n){padding-left:1.5rem;padding-right:0}@media (max-width:640px){.build .item:nth-child(odd){border-right:0}.build .item:nth-child(2n){padding-left:0}}.item h3{font:600 1.25rem/1.25 var(--display);margin:0 0 .5rem;letter-spacing:-.01em}.item p{margin:0;color:var(--muted);font-size:.98rem}.tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1rem}.tag{font:400 .75rem var(--mono);color:var(--muted);border:1px solid var(--line);padding:.15rem .5rem;border-radius:2px}.work{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.work li{border-bottom:1px solid var(--line)}.work a{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr) auto;grid-gap:1.5rem;gap:1.5rem;align-items:baseline;padding-block:1.25rem;text-decoration:none;transition:padding .2s ease}.work a:hover{padding-left:.5rem}.work a:hover .arrow{color:var(--accent);transform:translate(2px,-2px)}.work .name{font:600 1.2rem var(--display);letter-spacing:-.01em}.work .what{color:var(--muted);font-size:.98rem}.work .arrow{font-family:var(--mono);color:var(--muted);transition:transform .2s ease,color .2s ease}.work .url{display:block;font:400 .78rem var(--mono);color:var(--muted);margin-top:.15rem}@media (max-width:640px){.work a{grid-template-columns:minmax(0,1fr) auto;gap:.25rem 1rem}.work .what{grid-column:1/-1;grid-row:2}}.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:1.5rem;gap:1.5rem}@media (max-width:900px){.steps{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:480px){.steps{grid-template-columns:1fr}}.steps li{border-top:2px solid var(--fg);padding-top:1rem}.steps .n{font:600 .8rem var(--mono);color:var(--accent)}.steps h3{font:600 1.1rem/1.3 var(--display);margin:.4rem 0}.steps p{margin:0;color:var(--muted);font-size:.95rem}#contact{border-bottom:0}form{grid-gap:1.25rem;max-width:40rem}.row,form{display:grid;gap:1.25rem}.row{grid-template-columns:1fr 1fr;grid-gap:1.25rem}@media (max-width:560px){.row{grid-template-columns:1fr}}.field{display:grid;grid-gap:.4rem;gap:.4rem;min-width:0}.legend,label{font:400 .8125rem var(--mono);color:var(--muted)}input,textarea{font:400 1rem var(--body);color:var(--fg);background:var(--surface);border:1px solid var(--line);border-radius:3px;padding:.8rem .9rem;width:100%}input:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}textarea{min-height:9rem;resize:vertical}fieldset{border:0;padding:0;margin:0;display:grid;grid-gap:.6rem;gap:.6rem}.chips{display:flex;flex-wrap:wrap;gap:.5rem}.chip{position:relative}.chip input{position:absolute;opacity:0;pointer-events:none;width:auto}.chip span{display:inline-block;font:400 .875rem var(--mono);padding:.45rem .8rem;border:1px solid var(--line);border-radius:2px;cursor:pointer;background:var(--surface);color:var(--fg)}.chip input:checked+span{background:var(--fg);color:var(--bg);border-color:var(--fg)}.chip input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.submit{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.note{font:400 .8125rem var(--mono);color:var(--muted)}.note.err{color:var(--err)}.done{font:400 1rem var(--mono);color:var(--ok);border:1px solid var(--ok);padding:1rem 1.25rem;border-radius:3px;max-width:40rem;margin:0}footer{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding-block:2rem 3rem;font:400 .8125rem var(--mono);color:var(--muted);border-top:1px solid var(--line)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.caret{animation:none}.work .arrow,.work a{transition:none}}