@font-face{font-family:Funnel Display Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(/assets/funnel-display-latin-ext-wght-normal-DxkvHKaa.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Funnel Display Variable;font-style:normal;font-display:swap;font-weight:300 800;src:url(/assets/funnel-display-latin-wght-normal-h7i3A3FI.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-cyrillic-ext-wght-normal-D_UHSL_T.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-vietnamese-wght-normal-CHiFlh_0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-ext-wght-normal-Dg-wlmqe.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-wght-normal-CaVRRdDk.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#0c0807;--bone:#f4ecdd;--dim:#f4ecddad;--line:#f4ecdd29;--ember:#ff8a36;--steel:#83bbea;--sage:#84d6a2;--display:"Funnel Display Variable","Helvetica Neue",Arial,sans-serif;--body:"Hanken Grotesk Variable","Helvetica Neue",Arial,sans-serif;--gutter:clamp(20px,5vw,72px);--ease:cubic-bezier(.16,1,.3,1)}@supports (color:lab(0% 0 0)){:root{--bg:lab(2.46194% .843719 1.00812);--bone:lab(93.7034% .713706 8.44721);--dim:lab(93.7034% .713706 8.44721/.68);--line:lab(93.7034% .713706 8.44721/.16);--ember:lab(70.0219% 41.5923 62.8924);--steel:lab(73.2118% -9.48787 -29.9246);--sage:lab(79.4116% -34.6245 17.7964)}}*{box-sizing:border-box;margin:0}html{background:var(--bg);color:var(--bone);-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:clip}body{font:400 clamp(1rem,.3vw + .95rem,1.15rem)/1.6 var(--body);min-height:100vh;overflow-x:clip}.hero,.node{overflow-x:clip}a{color:inherit}:focus-visible{outline:2px solid var(--ember);outline-offset:4px;border-radius:4px}.sr,.skip:not(:focus){clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip:focus{z-index:20;background:var(--bone);color:var(--bg);border-radius:8px;padding:10px 16px;font-weight:700;position:fixed;top:12px;left:12px}#gl{z-index:0;opacity:0;width:100%;height:100%;transition:opacity 1.6s var(--ease);display:block;position:fixed;inset:0}html.gl #gl{opacity:1}main{z-index:1;position:relative}.top{z-index:6;padding:max(18px,env(safe-area-inset-top)) var(--gutter) 18px;pointer-events:none;justify-content:space-between;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}.top>*{pointer-events:auto}.me{font:700 1.02rem/1 var(--display);letter-spacing:.01em;text-decoration:none}.top nav{gap:clamp(16px,3vw,36px);display:flex}.top nav a{font:600 .92rem/1 var(--body);color:var(--dim);padding:10px 2px;text-decoration:none;transition:color .25s}.top nav a:hover{color:var(--bone)}.rail{z-index:6;display:none;position:fixed;top:50%;right:clamp(14px,2.2vw,30px);translate:0 -50%}@media (min-width:1100px){html.gl .rail:not([hidden]){display:block}}.rail ol{gap:14px;padding:0;list-style:none;display:grid}.rail button{all:unset;cursor:pointer;font:600 .72rem/1 var(--display);letter-spacing:.06em;color:var(--dim);font-variant-numeric:tabular-nums;justify-content:flex-end;align-items:center;gap:10px;padding:2px 0;display:flex}.rail button:after{content:"";border:1px solid var(--dim);width:7px;height:7px;transition:all .4s var(--ease);border-radius:50%}.rail button span{opacity:0;transition:all .4s var(--ease);transform:translate(6px)}.rail button:hover span,.rail button[aria-current=true] span,.rail button:focus-visible span{opacity:1;transform:none}.rail button[aria-current=true]{color:var(--ember)}.rail button[aria-current=true]:after{background:var(--ember);border-color:var(--ember);box-shadow:0 0 14px var(--ember);scale:1.3}.hero{min-height:100svh;padding:0 var(--gutter) clamp(28px,9vh,96px);align-items:flex-end;display:flex}.hero-copy{max-width:38rem;transition:opacity .2s linear;position:relative}html.gl .hero-copy:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(closest-side,#0c0807cc,#0c080773 65%,#0000);background:radial-gradient(closest-side,lab(2.46194% .843719 1.00812/.8),lab(2.46194% .843719 1.00812/.45) 65%,#0000);position:absolute;inset:-60px -90px -40px -60px}.lead{font:500 clamp(1.5rem,2.8vw,2.3rem)/1.12 var(--display);letter-spacing:-.015em}.sub{color:var(--dim);max-width:44ch;margin-top:1rem}.cue{color:var(--dim);align-items:center;gap:14px;margin-top:clamp(22px,4vh,40px);font-size:.9rem;font-weight:600;display:flex}.cue span{background:linear-gradient(var(--ember),transparent);transform-origin:top;width:1px;height:38px;animation:cue 2.2s var(--ease) infinite;display:block}@keyframes cue{0%{transform:scaleY(0)}55%{transform:scaleY(1)}to{opacity:0;transform:scaleY(1)}}html.gl .hero-copy{animation:rise 1.4s 2.2s var(--ease) both}@keyframes rise{0%{opacity:0;transform:translateY(16px)}}.node{position:relative}.panel{width:min(470px,100%);margin-inline:var(--gutter);padding:clamp(28px,6vh,64px) 0;position:relative}.panel.wide{width:min(720px,100%)}html.gl .node{min-height:150vh}html.gl .panel{opacity:0;will-change:opacity,translate;padding:0;position:sticky;top:50%;transform:translateY(-50%)}html.gl .panel:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(closest-side,#0c0807c7,#0c080780 60%,#0000);background:radial-gradient(closest-side,lab(2.46194% .843719 1.00812/.78),lab(2.46194% .843719 1.00812/.5) 60%,#0000);border-radius:50%;position:absolute;inset:-56px -72px}html.gl .panel:focus-within{opacity:1!important}html.gl .node[data-side=r] .panel{margin-left:auto;margin-right:clamp(28px,8vw,140px)}html.gl .node[data-side=l] .panel{margin-left:clamp(28px,8vw,140px)}.when{font:300 clamp(1.7rem,3.4vw,2.8rem)/1 var(--display);color:var(--ember);letter-spacing:-.01em;font-variant-numeric:tabular-nums}.when .to{color:var(--dim);margin-inline:.35em;font-size:.42em;font-weight:500}.panel h2{font:750 clamp(2rem,4.3vw,3.7rem)/.98 var(--display);letter-spacing:-.025em;text-wrap:balance;margin:.55rem 0 .35rem}.role{color:var(--bone);font-weight:650}.blurb{color:var(--dim);max-width:46ch;margin-top:.8rem}.projects{color:var(--dim);max-width:46ch;margin-top:1.3rem;padding:0;font-size:.95rem;list-style:none}.projects li{border-top:1px solid var(--line);padding:.5rem 0}.projects li:last-child{border-bottom:1px solid var(--line)}.stack{flex-wrap:wrap;gap:.45rem 1.1rem;margin-top:1.2rem;padding:0;font-size:.92rem;font-weight:600;list-style:none;display:flex}.stack li{align-items:center;gap:.5rem;display:flex}.stack li:before,.legend dt:before{content:"";background:var(--c,var(--bone));width:8px;height:8px;box-shadow:0 0 10px var(--c,transparent);border-radius:50%}[data-c=php]{--c:var(--ember)}[data-c=js]{--c:var(--bone)}[data-c=data]{--c:var(--steel)}[data-c=flow]{--c:var(--sage)}.legend{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.1rem 2.4rem;margin-top:1.6rem;display:grid}.legend dt{font:700 1.15rem/1.1 var(--display);align-items:center;gap:.6rem;display:flex}.legend dd{color:var(--dim);margin:.35rem 0 0 calc(8px + .6rem);font-size:.95rem}.actions{flex-wrap:wrap;gap:12px;margin-top:1.8rem;display:flex}.pill{border:1px solid var(--line);min-height:48px;transition:border-color .3s,background .3s,color .3s,transform .3s var(--ease);border-radius:99px;align-items:center;gap:.6em;margin-top:1.4rem;padding:0 1.4rem;font-weight:700;text-decoration:none;display:inline-flex}.actions .pill{margin-top:0}.pill:hover{border-color:var(--bone);transform:translateY(-2px)}.pill.solid{background:var(--bone);color:var(--bg);border-color:var(--bone)}.pill.solid:hover{background:var(--ember);border-color:var(--ember)}.fine{color:var(--dim);margin-top:1.6rem;font-size:.92rem}html:not(.gl) body{background:var(--bg)}html:not(.gl) .hero{min-height:80vh}html:not(.gl) .node{border-top:1px solid var(--line)}@media (max-width:860px){html.gl .node{min-height:140vh}html.gl .panel{width:auto;top:100svh;transform:translateY(calc(-100% - clamp(20px,5vh,44px)));margin-inline:var(--gutter)!important}.projects{font-size:.88rem}.projects li{padding:.35rem 0}html.gl .panel:before{background:linear-gradient(#0000,#0c0807bf 30%,#0c0807e6);background:linear-gradient(#0000,lab(2.46194% .843719 1.00812/.75) 30%,lab(2.46194% .843719 1.00812/.9));border-radius:40px;inset:-30px -28px}.panel h2{font-size:clamp(1.8rem,8vw,2.4rem)}.top nav a:first-child{display:none}html.gl .hero-copy:before{inset:-30px -24px -20px}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation:none!important}html{scroll-behavior:auto}html.gl .hero-copy{animation:none}}
