@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/f639721981034f88-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:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/9766a7e9e2e0ad5a-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/b66cf8e69499582a-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:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/aa016aab0e6d1295-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-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/22a5144ee8d83bca-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:Geist Fallback;src:local("Arial");ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.00%;size-adjust:104.76%}.__className_246ccd{font-family:Geist,Geist Fallback;font-style:normal}.__variable_246ccd{--font-geist:"Geist","Geist Fallback"}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/013b72fa676f92e0-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:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/b9408752a0c24fb9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/65f03d54ccadf4a8-s.woff2) format("woff2");unicode-range:u+2000-2001,u+2004-2008,u+200a,u+23b8-23bd,u+2500-259f}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e038a29029a234f2-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:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/2b5b02fc7e511755-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-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/7d4881bb7e1bf84d-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:Geist Mono Fallback;src:local("Arial");ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.00%;size-adjust:134.59%}.__className_c29908{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.__variable_c29908{--font-geist-mono:"Geist Mono","Geist Mono Fallback"}:root{color-scheme:light;--paper:#f3f1ec;--surface:#ebe9e3;--ink:#17191c;--muted:#62676d;--faint:#8c9094;--line:#d5d3cd;--accent:#3159c9;--accent-soft:#dfe6ff;--danger:#a9342f;--sans:var(--font-geist),Arial,sans-serif;--mono:var(--font-geist-mono),"Courier New",monospace;--radius:6px}@media (prefers-color-scheme:dark){:root{color-scheme:dark;--paper:#17191c;--surface:#202328;--ink:#f0eee8;--muted:#a8adb2;--faint:#737980;--line:#393e45;--accent:#92aaff;--accent-soft:#29365f;--danger:#ff948c}}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;min-height:100vh;margin:0;overflow-x:hidden;background:var(--paper);color:var(--ink);font:16px/1.55 var(--sans)}body,button,input{font-family:var(--sans)}a,button{-webkit-tap-highlight-color:transparent}a,button{color:inherit}::selection{background:var(--accent);color:#fff}:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.main{min-height:calc(100vh - 72px)}.footer,.hero,.nav,.page-head,.wrap{width:min(1180px,calc(100% - 48px));margin-inline:auto}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;min-height:72px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--paper) 94%,transparent)}.brand,.footer-brand{display:inline-flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none}.brand img,.footer-brand img{border-radius:var(--radius)}.brand span,.footer-brand span{font-size:.95rem;font-weight:650;letter-spacing:-.03em}.brand span:before{content:"";display:inline-block;width:7px;height:7px;margin:0 10px 2px 0;border-radius:50%;background:var(--accent)}.footer-links,.nav-links{display:flex;align-items:center;gap:26px;padding:0;margin:0;list-style:none}.footer-links a,.nav-links a{position:relative;padding:8px 0;color:var(--muted);font:.8rem var(--mono);text-decoration:none;transition:color .18s ease}.nav-links a:after{position:absolute;right:0;bottom:2px;left:0;height:1px;background:var(--accent);content:"";transform:scaleX(0);transform-origin:right;transition:transform .18s ease}.footer-links a:hover,.nav-links a.active,.nav-links a:hover{color:var(--ink)}.nav-links a.active:after,.nav-links a:hover:after{transform:scaleX(1);transform-origin:left}.nav-toggle{display:none;min-width:46px;min-height:46px;padding:0;border:1px solid var(--line);border-radius:var(--radius);background:transparent;cursor:pointer}.nav-toggle span{display:block;width:18px;height:1px;margin:5px auto;background:currentColor;transition:transform .18s ease}.nav-toggle[aria-expanded=true] span:first-child{transform:translateY(6px) rotate(45deg)}.nav-toggle[aria-expanded=true] span:nth-child(2){opacity:0}.nav-toggle[aria-expanded=true] span:last-child{transform:translateY(-6px) rotate(-45deg)}.hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);grid-gap:clamp(48px,9vw,132px);gap:clamp(48px,9vw,132px);align-items:end;min-height:min(680px,calc(100dvh - 72px));padding:72px 0 88px;border-bottom:1px solid var(--line)}.hero-left{display:grid;align-content:end;grid-gap:28px;gap:28px;max-width:680px}.kicker,.label,.stack-index{color:var(--muted);font:.72rem var(--mono);letter-spacing:.03em}.kicker{display:flex;gap:12px;align-items:center}.kicker span+span:before{margin-right:12px;color:var(--faint);content:"/"}.contact-block h2,.hero h1,.page-head h1,.section-head h2{margin:0;color:var(--ink);font-weight:650;letter-spacing:-.075em}.hero h1{max-width:7ch;font-size:clamp(4.4rem,11vw,9rem);line-height:.82}.hero h1 span{color:var(--accent)}.intro{max-width:43ch;margin:0;color:var(--muted);font-size:clamp(1.02rem,1.8vw,1.22rem);line-height:1.5}.hero-actions{display:flex;flex-wrap:wrap;gap:12px}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 18px;border:1px solid var(--accent);border-radius:var(--radius);background:var(--accent);color:#fff;font:.78rem var(--mono);text-decoration:none;transition:background .18s ease,color .18s ease,transform .18s ease}.btn:after{margin-left:12px;content:"↗";font-size:1rem}.btn:hover{background:transparent;color:var(--accent);transform:translateY(-2px)}.btn.secondary{border-color:var(--line);background:transparent;color:var(--ink)}.btn.secondary:hover{border-color:var(--ink);color:var(--ink)}.work-index{align-self:stretch;display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:3px}.work-index h2{max-width:12ch;margin:0 0 24px;font-size:clamp(1.6rem,3vw,2.35rem);font-weight:550;letter-spacing:-.06em;line-height:.98}.work-index-list{display:grid;border-top:1px solid var(--line)}.work-index-item{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:16px;gap:16px;align-items:baseline;padding:13px 0;border-bottom:1px solid var(--line);text-decoration:none;transition:padding .18s ease,color .18s ease}.work-index-item:hover{padding-inline:10px;color:var(--accent)}.work-index-item strong{overflow:hidden;font-size:.95rem;font-weight:550;text-overflow:ellipsis;white-space:nowrap}.work-index-item span{color:var(--faint);font:.68rem var(--mono)}.section{padding:104px 0}.section-head{max-width:620px;margin-bottom:42px}.label{margin:0 0 16px;color:var(--accent)}.contact-block h2,.section-head h2{font-size:clamp(2.4rem,6vw,5.3rem);line-height:.94}.section-head p{max-width:54ch;margin:22px 0 0;color:var(--muted)}.stack-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}.stack-item{display:grid;grid-gap:10px;gap:10px;min-height:170px;padding:22px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:background .18s ease}.stack-item:hover{background:var(--surface)}.stack-index{color:var(--faint)}.stack-item h3{margin:0;font-size:1.1rem;font-weight:550;letter-spacing:-.04em}.stack-item p{align-self:end;max-width:18ch;margin:0;color:var(--muted);font-size:.85rem}.contact-block{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,.6fr);grid-gap:48px;gap:48px;align-items:end;padding:88px 0 104px;border-top:1px solid var(--line)}.contact-block p{max-width:31ch;margin:0 0 24px;color:var(--muted)}.contact-links{display:flex;flex-wrap:wrap;gap:18px}.contact-links a{color:var(--ink);font:.76rem var(--mono);text-decoration:none;-webkit-text-decoration-line:underline;text-decoration-line:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:5px;transition:color .18s ease,-webkit-text-decoration-color .18s ease;transition:color .18s ease,text-decoration-color .18s ease;transition:color .18s ease,text-decoration-color .18s ease,-webkit-text-decoration-color .18s ease}.contact-links a:hover{color:var(--accent);-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.page-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,.45fr);grid-gap:48px;gap:48px;align-items:end;padding:92px 0 54px;border-bottom:1px solid var(--line)}.page-head .kicker{grid-column:1/-1}.page-head h1{font-size:clamp(4rem,11vw,9rem);line-height:.82}.page-head p{max-width:32ch;margin:0;color:var(--muted)}.project-list{display:grid;padding:0;margin:0;list-style:none;border-top:1px solid var(--line)}.project-row{border-bottom:1px solid var(--line)}.project-row-link{display:grid;grid-template-columns:40px minmax(180px,1.2fr) minmax(160px,1fr) minmax(180px,.9fr) 96px 20px;grid-gap:18px;gap:18px;align-items:center;padding:22px 0;color:inherit;text-decoration:none;transition:background .18s ease,color .18s ease}.project-row-link:hover{padding-left:12px;padding-right:12px}.project-row-link:hover .project-row-name{color:var(--accent)}.project-row-index{color:var(--faint);font:.72rem var(--mono)}.project-row-name{color:var(--ink);font-size:clamp(1.1rem,2vw,1.5rem);font-weight:550;letter-spacing:-.04em;transition:color .18s ease}.project-row-type{color:var(--muted);font-size:.9rem}.project-row-role{color:var(--faint);font:.72rem var(--mono)}.project-row-status{justify-self:start;padding:4px 10px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font:.66rem var(--mono);letter-spacing:.02em}.project-row-status[data-status=live]{border-color:color-mix(in srgb,var(--accent) 40%,transparent);color:var(--accent)}.project-row-status[data-status="in progress"]{border-color:var(--line);color:var(--ink)}.project-row-status[data-status=discontinued]{border-color:var(--line);color:var(--faint);text-decoration:line-through}.project-row-status[data-status=private]{border-color:var(--line);color:var(--faint)}.project-row-arrow{justify-self:end;color:var(--faint);font-size:1.05rem}.project-row-arrow.is-muted{opacity:.55}.footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:22px;padding:30px 0 42px;border-top:1px solid var(--line)}@media (max-width:860px){.hero,.page-head{grid-template-columns:1fr}.hero{min-height:auto;padding-top:64px}.work-index{padding-top:24px}.page-head p{max-width:48ch}.project-row-link{grid-template-columns:32px minmax(0,1fr) minmax(120px,.7fr) 92px 16px}.project-row-role{display:none}}@media (max-width:640px){.footer,.hero,.nav,.page-head,.wrap{width:min(100% - 32px,1180px)}.nav{min-height:64px}.nav-toggle{display:block}.nav-links{position:absolute;top:64px;right:0;left:0;display:none;align-items:stretch;gap:0;padding:0 16px 14px;border-bottom:1px solid var(--line);background:var(--paper)}.nav-links.open{display:grid}.nav-links li{border-top:1px solid var(--line)}.nav-links a{display:block;padding:15px 0}.nav-links a:after{bottom:10px;right:auto;width:20px}.hero{gap:60px;padding:52px 0 64px}.hero h1{font-size:clamp(4rem,22vw,7rem)}.hero-actions,.hero-actions .btn{width:100%}.section{padding:76px 0}.stack-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stack-item{min-height:145px;padding:16px}.contact-block{grid-template-columns:1fr;gap:34px;padding:72px 0 80px}.page-head{gap:28px;padding:62px 0 40px}.page-head h1{font-size:clamp(4rem,20vw,7rem)}.project-row-link{grid-template-columns:24px minmax(0,1fr) 20px;gap:12px;padding:18px 0}.project-row-role,.project-row-type{display:none}.project-row-status{grid-column:2;grid-row:2}.project-row-arrow{grid-column:3;grid-row:1}.footer{align-items:flex-start;flex-direction:column}.footer-links{flex-wrap:wrap;gap:14px 20px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}}