@font-face{font-family:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(../media/4f6667dd39116621-s.3p2_lha1f2xer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(../media/07935285219a259d-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(../media/f58031ded4338640-s.390ncx5urfkfu.woff2)format("woff2");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:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(../media/77814b00d5ca94a4-s.21jp631_3pja2.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:400;font-display:swap;src:url(../media/605ce01b664af129-s.p.0wgildi0cnwt9.woff2)format("woff2");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:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(../media/4f6667dd39116621-s.3p2_lha1f2xer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(../media/07935285219a259d-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(../media/f58031ded4338640-s.390ncx5urfkfu.woff2)format("woff2");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:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(../media/77814b00d5ca94a4-s.21jp631_3pja2.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:500;font-display:swap;src:url(../media/605ce01b664af129-s.p.0wgildi0cnwt9.woff2)format("woff2");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:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(../media/4f6667dd39116621-s.3p2_lha1f2xer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(../media/07935285219a259d-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(../media/f58031ded4338640-s.390ncx5urfkfu.woff2)format("woff2");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:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(../media/77814b00d5ca94a4-s.21jp631_3pja2.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:600;font-display:swap;src:url(../media/605ce01b664af129-s.p.0wgildi0cnwt9.woff2)format("woff2");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:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(../media/4f6667dd39116621-s.3p2_lha1f2xer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(../media/07935285219a259d-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(../media/f58031ded4338640-s.390ncx5urfkfu.woff2)format("woff2");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:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(../media/77814b00d5ca94a4-s.21jp631_3pja2.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:700;font-display:swap;src:url(../media/605ce01b664af129-s.p.0wgildi0cnwt9.woff2)format("woff2");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:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.hbIjkG_className{font-family:Geist,Geist Fallback;font-style:normal}.hbIjkG_variable{--font-sans:"Geist", "Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/b0c6b664fd57c2c6-s.31988l_ccedte.woff2)format("woff2");unicode-range:U+460-52F,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:500;font-display:swap;src:url(../media/6e342921ee4dcd9d-s.2tuy5pz7dlieh.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/2bb852295097cd96-s.2dbetqa9o8jxf.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:500;font-display:swap;src:url(../media/9eb5a876700c0028-s.1uyisp29ctx0d.woff2)format("woff2");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:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/2a04751c893bf294-s.1rgnod-3esatf.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/07a39a8a4660cc7c-s.p.0r6juujl39pe6.woff2)format("woff2");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:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/b0c6b664fd57c2c6-s.31988l_ccedte.woff2)format("woff2");unicode-range:U+460-52F,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:600;font-display:swap;src:url(../media/6e342921ee4dcd9d-s.2tuy5pz7dlieh.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/2bb852295097cd96-s.2dbetqa9o8jxf.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:600;font-display:swap;src:url(../media/9eb5a876700c0028-s.1uyisp29ctx0d.woff2)format("woff2");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:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/2a04751c893bf294-s.1rgnod-3esatf.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/07a39a8a4660cc7c-s.p.0r6juujl39pe6.woff2)format("woff2");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:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.TcHStq_className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.TcHStq_variable{--font-mono:"Geist Mono", "Geist Mono Fallback"}
@font-face{font-family:Unbounded;font-style:normal;font-weight:500;font-display:swap;src:url(../media/c0223f7849abe184-s.1gblpou06741c.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Unbounded;font-style:normal;font-weight:500;font-display:swap;src:url(../media/1becf8f6a59b9125-s.3m-o17zliaw7n.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Unbounded;font-style:normal;font-weight:500;font-display:swap;src:url(../media/b952ee94fe68a79b-s.2k26cpyd2noxh.woff2)format("woff2");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:Unbounded;font-style:normal;font-weight:500;font-display:swap;src:url(../media/b44016cd13ac2d70-s.2u5233oid6g9g.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Unbounded;font-style:normal;font-weight:500;font-display:swap;src:url(../media/ea7ac0f2854ddc96-s.p.0gralq2btnzex.woff2)format("woff2");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:Unbounded;font-style:normal;font-weight:600;font-display:swap;src:url(../media/c0223f7849abe184-s.1gblpou06741c.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Unbounded;font-style:normal;font-weight:600;font-display:swap;src:url(../media/1becf8f6a59b9125-s.3m-o17zliaw7n.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Unbounded;font-style:normal;font-weight:600;font-display:swap;src:url(../media/b952ee94fe68a79b-s.2k26cpyd2noxh.woff2)format("woff2");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:Unbounded;font-style:normal;font-weight:600;font-display:swap;src:url(../media/b44016cd13ac2d70-s.2u5233oid6g9g.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Unbounded;font-style:normal;font-weight:600;font-display:swap;src:url(../media/ea7ac0f2854ddc96-s.p.0gralq2btnzex.woff2)format("woff2");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:Unbounded Fallback;src:local(Arial);ascent-override:73.93%;descent-override:18.2%;line-gap-override:0.0%;size-adjust:134.59%}.FWPf3W_className{font-family:Unbounded,Unbounded Fallback;font-style:normal}.FWPf3W_variable{--font-display:"Unbounded", "Unbounded Fallback"}
:root{--paper:#f2f1ec;--ink:#18181c;--ink-2:#45443f;--ink-3:#5e5d58;--muted:#6a6963;--line:#dcdad3;--line-2:#e6e4dd;--card:#fff;--tangerine:#ff5a1f;--cobalt:#2e55ff;--lime:#c4f24b;--sans:var(--font-sans), system-ui, -apple-system, "Segoe UI", sans-serif;--display:var(--font-display), var(--sans);--mono:var(--font-mono), ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}*{box-sizing:border-box}html,body{background:var(--paper);color:var(--ink);margin:0;padding:0}body{font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.5}a{color:inherit}button{font:inherit;color:inherit}::selection{background:var(--tangerine);color:#fff}button:focus-visible:not(.layer),a:focus-visible:not(.layer){outline:2px solid var(--cobalt);outline-offset:3px}.disp{font-family:var(--display)}.b{color:var(--ink);font-weight:600}.app{background:var(--paper);width:100%;height:100dvh;position:relative;overflow:hidden}.app:not(.ready) .stage{visibility:hidden}.stage{transform-origin:50%;width:1280px;height:800px;position:absolute;top:50%;left:50%}.stage.portrait{width:430px;height:932px}.scene,.mv{width:1280px;height:800px;position:absolute;top:0;left:0}.bob{will-change:transform}.scene>svg,.layer svg,.conn{width:1280px;height:800px;display:block;position:absolute;top:0;left:0;overflow:visible}.conn{pointer-events:none}.iso{stroke:var(--ink);stroke-width:1.25px;stroke-linejoin:round}.iso text,.ns{stroke:none}.gl{fill:none;stroke:#e1dfd7;stroke-width:1px}.sa{stop-color:#fff;stop-opacity:1}.sb{stop-color:#fff;stop-opacity:.75}.sc{stop-color:#fff;stop-opacity:0}.tl{font:500 9.5px var(--sans);fill:var(--muted);text-anchor:middle}.lab{font:600 11px var(--sans);letter-spacing:.16em}.sub{font:500 9.5px var(--sans);letter-spacing:.14em;fill-opacity:.75}.lab-w{fill:#fff}.lab-k{fill:var(--ink)}.lab-m{fill:var(--muted)}.nolan{font:500 54px var(--display);fill:#fff;letter-spacing:-.04em}.ps{font:700 15px var(--sans);text-anchor:middle}.kat{font:600 25px var(--display);fill:#fff;text-anchor:middle}.kin{font:700 21px var(--sans);fill:var(--ink);text-anchor:middle;letter-spacing:-.02em}.cpt{font:500 11.5px var(--sans);fill:var(--ink)}.layer{pointer-events:none;-webkit-tap-highlight-color:transparent;background:0 0;border:0;width:1280px;height:800px;margin:0;padding:0;display:block;position:absolute;top:0;left:0}.layer:focus{outline:none}.hit{pointer-events:auto;cursor:pointer}.item:disabled .hit,.item.off .hit{pointer-events:none}.item{visibility:hidden;transition:visibility 0s .7s}.item.open{visibility:visible;transition-delay:0s}.slide{transition:transform .7s cubic-bezier(.2,.85,.25,1)}.peek .slide{transform:translate(13.9px,8px)}.open .slide{transform:translate(97px,56px)}.fx{stroke:var(--ink);stroke-width:3.5px;opacity:0;transition:opacity .2s}.d-contact .fx{stroke:var(--tangerine)}.layer:focus-visible .fx{opacity:1}.led{transition:fill .3s}.d-about.open .led{fill:#fff}.d-resume.open .led{fill:var(--lime)}.d-portfolio.open .led{fill:var(--tangerine)}.d-contact.open .led{fill:var(--lime)}.open .led{animation:1.4s step-end infinite ledp}.lift{transition:transform .35s cubic-bezier(.2,.85,.25,1)}.item:hover .lift,.item:focus-visible .lift,.item.sel .lift{transform:translateY(-8px)}.item:active .lift{transition-duration:80ms;transform:translateY(-2px)}.ring2{fill:none;stroke:var(--ink);stroke-width:2.5px;opacity:0;transition:opacity .25s}.item.sel .ring2,.item:hover .ring2,.item:focus-visible .ring2{opacity:1}.item.open .pop{animation:.6s cubic-bezier(.2,.85,.25,1) both pop}.gridln{fill:none;stroke:#6f86f0;stroke-width:1px;opacity:.6}.yr{font:600 8px var(--sans);fill:var(--ink);fill-opacity:.72;text-anchor:middle;letter-spacing:.02em}.yr-now{fill-opacity:1;font-weight:700}.rail{fill:none;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100px}.rail-b{stroke:var(--ink);stroke-width:5.5px}.rail-0{stroke:var(--cobalt);stroke-width:3px}.rail-1{stroke:#3c3c44;stroke-width:3px}.rail-2{stroke:var(--tangerine);stroke-width:3px}.item.open .rail{animation:.8s cubic-bezier(.6,0,.2,1) .35s forwards draw}.item.open .peg-in{animation:.5s cubic-bezier(.3,1.5,.5,1) both pegin;animation-delay:calc(.55s + var(--i,0) * 55ms)}.peg{cursor:pointer}.peg:focus{outline:none}.pk{transition:transform .3s cubic-bezier(.2,.85,.25,1)}.peg:hover .pk,.peg:focus-visible .pk{transform:translateY(-5px)}.peg.on .pk{transform:translateY(-9px)}.pk-top{transition:fill .25s}.peg.on .pk-top{fill:var(--lime)}.pk-ring{fill:none;stroke:var(--ink);stroke-width:2.5px;opacity:0;transition:opacity .2s}.peg.on .pk-ring,.peg:focus-visible .pk-ring{opacity:1}.pk-shadow{fill:var(--ink);stroke:none;opacity:0;transition:opacity .3s}.peg.on .pk-shadow,.peg:hover .pk-shadow{opacity:.2}.pole{fill:none;stroke-width:1.5px}.head-t{font:700 6.5px var(--mono);fill:#fff;text-anchor:middle;letter-spacing:.04em}.cap:hover .lift,.cap:focus-visible .lift{transform:translateY(-7px)}.bob{animation:3.6s ease-in-out infinite bob}.caret-r{animation:1.1s step-end infinite blink}.cable{fill:none;stroke-width:2px;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100px;animation:.75s cubic-bezier(.6,0,.2,1) .3s forwards draw}.pulse{fill:none;stroke-width:4.5px;stroke-linecap:round;stroke-dasharray:2.5 97.5;opacity:0;animation:.3s 1.05s forwards fadein,2.4s linear 1.05s infinite flow}.node{opacity:0;animation:.3s .35s forwards fadein}.cpill{opacity:0;animation:.4s .85s forwards fadein}.hint{border:1px solid var(--ink);pointer-events:none;background:#fff;align-items:center;gap:8px;padding:7px 12px;font-size:12.5px;font-weight:500;display:inline-flex;position:absolute;top:376px;left:590px}.ready .drop{animation:.95s cubic-bezier(.2,.85,.25,1) both drop}.ready .fade{animation:.4s 1.3s both fadein}.ready .floor-in{animation:1s both fadein}.ready .hint{animation:.5s 1.7s both fadein,2.4s ease-in-out 2.2s infinite nudge}.ready .e1{animation:.7s cubic-bezier(.2,.85,.25,1) .2s both enter}.ready .e2{animation:.7s cubic-bezier(.2,.85,.25,1) .3s both enter}.ready .e3{animation:.7s cubic-bezier(.2,.85,.25,1) .4s both enter}.ready .e4{animation:.7s cubic-bezier(.2,.85,.25,1) .5s both enter}.ready .enter{animation:.55s cubic-bezier(.2,.85,.25,1) .12s both enter}.ready .swap{animation:.45s cubic-bezier(.2,.85,.25,1) both enter}@keyframes drop{0%{opacity:0;transform:translateY(-90px)}to{opacity:1;transform:none}}@keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes enter{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes pop{0%{transform:translateY(14px)}to{transform:none}}@keyframes pegin{0%{opacity:0;transform:translateY(-24px)}to{opacity:1;transform:none}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes blink{50%{opacity:0}}@keyframes ledp{50%{opacity:.3}}@keyframes nudge{50%{transform:translate(7px)}}@keyframes draw{to{stroke-dashoffset:0}}@keyframes flow{0%{stroke-dashoffset:0}to{stroke-dashoffset:-100px}}@keyframes livering{0%{opacity:.55;transform:scale(1)}to{opacity:0;transform:scale(3.2)}}.topbar{z-index:5;align-items:center;gap:20px;height:48px;display:flex;position:absolute;top:18px;left:48px;right:48px}.brand{letter-spacing:-.01em;white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;min-height:44px;padding:0;font-size:16px;font-weight:600;display:inline-flex}.crumb{color:var(--muted);flex:1;justify-content:center;font-size:13px;font-weight:500;display:flex}.crumb>span{border:1px solid var(--line);background:#ffffffbf;border-radius:999px;padding:7px 13px}.crumb-here{color:var(--ink)}.cblink{color:var(--tangerine);animation:1.05s step-end infinite blink}.topbar-icons{gap:8px;margin-left:auto;display:flex}.ib{border:1px solid var(--line);width:44px;height:44px;color:var(--ink);background:#fff;justify-content:center;align-items:center;transition:border-color .15s;display:inline-flex}.ib:hover{border-color:var(--ink)}.panel{z-index:4;width:494px;height:690px;padding:14px 24px 0 0;position:absolute;top:92px;left:48px}.intro{flex-direction:column;align-items:flex-start;gap:28px;padding-top:62px;display:flex}.intro nav{width:100%;margin-top:10px}.live{background:var(--tangerine);border-radius:50%;flex:none;width:8px;height:8px;position:relative}.live:after{content:"";background:inherit;border-radius:50%;animation:2s ease-out infinite livering;position:absolute;inset:0}.intro-h1{letter-spacing:-.05em;margin:0;font-size:72px;font-weight:500;line-height:.98}.intro-h1>span{display:block}.caret{background:var(--tangerine);vertical-align:-.02em;width:.1em;height:.72em;margin-left:.08em;animation:1.05s step-end infinite blink;display:inline-block}.intro-spec{border-top:1.5px solid var(--ink);width:100%;margin:0;padding-top:14px;display:flex}.intro-spec>div{min-width:0;padding:0 18px}.intro-spec>div:first-child{flex:1.45;padding-left:0}.intro-spec>div:nth-child(2){flex:.9}.intro-spec>div:nth-child(3){flex:1.15;padding-right:0}.intro-spec>div+div{border-left:1px solid var(--line)}.intro-spec dt{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:11.5px;font-weight:600}.intro-spec dd{letter-spacing:-.01em;white-space:nowrap;align-items:center;gap:8px;margin:6px 0 0;font-size:19px;font-weight:500;display:flex}.legend{flex-direction:column;gap:6px;display:flex}.lg{border:1px solid var(--line);text-align:left;cursor:pointer;background:#fff;align-items:center;gap:14px;width:100%;min-height:52px;padding:0 16px 0 14px;transition:border-color .2s,transform .3s cubic-bezier(.2,.85,.25,1);display:flex}.lg:hover,.lg.hot{border-color:var(--ink);transform:translate(6px)}.lg-label{font-size:16px;font-weight:500}.lg-note{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:13px}.card{background:var(--card);border:1px solid var(--ink);padding:20px 26px 24px;position:relative}.edge{border:1px solid var(--ink);position:absolute}.edge-t{transform-origin:0 100%;border-bottom:0;height:13px;bottom:calc(100% + 1px);left:-1px;right:-1px;transform:skew(-60deg)}.edge-r{transform-origin:0 0;border-left:0;width:22.5px;top:-1px;bottom:-1px;left:calc(100% + 1px);transform:skewY(-30deg)}.card-about .edge-t{background:#ff9a6b}.card-about .edge-r{background:#ff5a1f}.card-resume .edge-t{background:#8ea4ff}.card-resume .edge-r{background:#2e55ff}.card-portfolio .edge-t{background:#e2ffa0}.card-portfolio .edge-r{background:#c4f24b}.card-contact .edge-t{background:#3c3c44}.card-contact .edge-r{background:#1e1e23}.card-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.card-crumb{color:var(--muted);align-items:center;gap:10px;font-size:13px;font-weight:500;display:inline-flex}.x{cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;width:44px;height:44px;margin:-8px -12px -8px 0;transition:border-color .15s;display:inline-flex}.x:hover{border-color:var(--ink)}.card-title{letter-spacing:-.035em;margin:12px 0 0;font-size:30px;font-weight:500;line-height:1.1}.about-row{align-items:flex-start;gap:18px;margin-top:16px;display:flex}.about-photo{object-fit:cover;object-position:center 30%;border:1px solid var(--ink);background:var(--paper);flex:none;width:110px;height:146px;display:block}.spec{border-top:1px solid var(--ink);flex:1;min-width:0;margin:0;font-size:14px}.spec-row{border-bottom:1px solid var(--line-2);justify-content:space-between;gap:12px;padding:11px 0;display:flex}.spec dt{color:var(--muted)}.spec dd{text-align:right;margin:0;font-weight:500}.prose{color:var(--ink-2);flex-direction:column;gap:11px;margin-top:18px;font-size:14.5px;line-height:1.58;display:flex}.prose p{text-wrap:pretty;margin:0}.tabs{gap:6px;margin-top:16px;display:grid}.tabs-2{grid-template-columns:repeat(2,minmax(0,1fr))}.tab{border:1px solid var(--line);cursor:pointer;background:#fff;min-height:44px;padding:0 6px;font-size:13.5px;font-weight:600;transition:background-color .2s,color .2s,border-color .2s}.tab:hover{border-color:var(--ink)}.tab.on{background:var(--ink);color:#fff;border-color:var(--ink)}.tab-mono{font-family:var(--mono);justify-content:center;align-items:center;gap:8px;font-size:13px;display:inline-flex}.scroll{scrollbar-width:thin;scrollbar-color:#cfcdc5 transparent;padding:2px 6px 2px 0;overflow-y:auto}.projects{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex;position:relative}.tl-btn{border:1px solid var(--line);text-align:left;cursor:pointer;background:#fff;flex-direction:column;align-items:flex-start;gap:3px;width:100%;min-height:58px;padding:10px 40px 10px 14px;transition:border-color .2s;display:flex;position:relative}.tl-btn:hover,.on>.tl-btn{border-color:var(--ink)}.tl-btn .chev{transition:transform .3s cubic-bezier(.2,.85,.25,1);position:absolute;top:21px;right:14px}.on>.tl-btn .chev{transform:rotate(180deg)}.tl-when{color:var(--muted);font-variant-numeric:tabular-nums;margin:0;font-size:12.5px}.tl-what{font-size:15px;font-weight:600;line-height:1.3}.rlog-title{justify-content:space-between;align-items:baseline;gap:12px;margin-top:12px;display:flex}.rlog-title .card-title{margin:0}.rlog-prompt{font:500 12px/1.4 var(--mono);color:var(--ink-3);white-space:nowrap}.rlog-tilde{color:var(--cobalt)}.rlog-caret{color:var(--tangerine);margin-left:1px;animation:1.05s step-end infinite blink}.lanes-key{font:500 12px/1.4 var(--mono);color:var(--ink-3);gap:18px;margin:14px 0 0;padding:0;list-style:none;display:flex}.lanes-key li{align-items:center;gap:7px;display:inline-flex}.lk{width:14px;height:3px}.lk-0{background:var(--cobalt)}.lk-1{background:var(--ink)}.lk-2{background:var(--tangerine)}.log-wrap{max-height:440px;margin-top:8px;padding:0 6px 28px 0;-webkit-mask-image:linear-gradient(#000 calc(100% - 30px),#0000);mask-image:linear-gradient(#000 calc(100% - 30px),#0000)}.log{margin:0;padding:0;list-style:none}.cm{align-items:stretch;display:flex;position:relative}.cm-graph{flex:none;width:52px;position:relative}.ln{transform-origin:50% 0;width:2px;position:absolute}.ln-0{background:var(--cobalt);left:8px}.ln-1{background:var(--ink);left:24px}.ln-2{background:var(--tangerine);left:40px}.ln.up{height:19px;top:0}.ln.dn{top:19px;bottom:0}.mg{background:var(--ink);transform-origin:100%;width:16px;height:2px;position:absolute;top:18px;left:9px}.nd{box-sizing:border-box;background:#fff;border:2.5px solid;border-radius:50%;width:14px;height:14px;margin-left:-7px;transition:background-color .25s;position:absolute;top:12px}.nd-0{border-color:var(--cobalt);left:9px}.nd-1{border-color:var(--ink);left:25px}.nd-2{border-color:var(--tangerine);left:41px}.cm.on .nd-0{background:var(--cobalt)}.cm.on .nd-1{background:var(--ink)}.cm.on .nd-2{background:var(--tangerine)}.cm-body{border-bottom:1px solid #ebe9e2;flex:1;min-width:0}.cm-btn{text-align:left;cursor:pointer;background:0 0;border:0;width:100%;min-height:44px;padding:9px 0 10px;display:block}.cm-meta{font:500 11.5px/16px var(--mono);color:var(--muted);align-items:center;gap:8px;display:flex}.cm-head{background:var(--cobalt);color:#fff;padding:0 6px;font-weight:600}.cm-date{white-space:nowrap;margin-left:auto}.cm-msg{margin-top:3px;font-size:14.5px;line-height:1.35;display:block}.cm-type{font:600 12.5px var(--mono)}.ct-0{color:var(--cobalt)}.ct-1{color:var(--ink)}.ct-2{color:#b93d0b}.cm-title{font-weight:600;transition:color .2s}.cm-btn:hover .cm-title{color:var(--cobalt)}.cm-detail{color:var(--ink-3)}.cm-drawer{grid-template-rows:0fr;transition:grid-template-rows .45s cubic-bezier(.2,.85,.25,1);display:grid}.cm.on .cm-drawer{grid-template-rows:1fr}.cm-inner{min-height:0;overflow:hidden}.diff{border:1px solid var(--line);background:#fbfbf8;margin:0 0 12px}.diff-head{border-bottom:1px solid var(--line-2);background:var(--paper);font:500 11.5px/1.4 var(--mono);color:var(--ink-3);justify-content:space-between;gap:12px;padding:6px 10px;display:flex}.diff-add{color:#1a6b30}.diff-lines{margin:0;padding:4px 0;list-style:none}.diff-lines li{color:#3f3e3a;opacity:0;background:#effae6;border-bottom:1px solid #fff;gap:10px;padding:5px 12px 5px 10px;font-size:13.5px;line-height:1.55;transition:opacity .3s,transform .35s cubic-bezier(.2,.85,.25,1);display:flex;transform:translate(-6px)}.cm.on .diff-lines li{opacity:1;transition-delay:calc(.12s + var(--j,0) * 70ms);transform:none}.diff-plus{font:600 13px/1.55 var(--mono);color:#1a6b30;flex:none}.diff-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px 10px;display:flex}.diff-tags{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.diff-tags li{font:500 11px/1 var(--mono);border:1px solid var(--line);color:var(--ink-2);background:#fff;padding:5px 7px}.diff-link{background:var(--ink);color:#fff;cursor:pointer;border:0;align-items:center;gap:6px;min-height:44px;padding:0 14px;font-size:13px;font-weight:500;transition:background-color .15s;display:inline-flex}.diff-link:hover{background:var(--cobalt)}.log-end{font:500 12px/1.4 var(--mono);color:var(--ink-3);align-items:center;gap:12px;margin:14px 0 0;display:flex}.log-end-tag{background:var(--ink);color:#fff;padding:2px 6px}.log[data-armed] .cm{opacity:0;transition:opacity .5s ease-out,transform .6s cubic-bezier(.2,.85,.25,1);transition-delay:var(--d,0s);transform:translateY(14px)}.log[data-armed] .cm[data-in]{opacity:1;transform:none}.log[data-armed] .ln{transition:transform .35s ease-out;transform:scaleY(0)}.log[data-armed] .cm[data-in] .ln{transform:none}.log[data-armed] .cm[data-in] .ln.up{transition-delay:calc(var(--d,0s) + 60ms)}.log[data-armed] .cm[data-in] .ln.dn{transition-delay:calc(var(--d,0s) + .34s)}.log[data-armed] .nd{transition:transform .45s cubic-bezier(.3,1.7,.5,1),background-color .25s;transform:scale(0)}.log[data-armed] .cm[data-in] .nd{transition-delay:calc(var(--d,0s) + .22s), 0s;transform:none}.log[data-armed] .mg{transition:transform .3s ease-out;transform:scaleX(0)}.log[data-armed] .cm[data-in] .mg{transition-delay:calc(var(--d,0s) + .3s);transform:none}.skills-wrap{max-height:480px;margin-top:14px}.json{border:1px solid var(--line);font:500 13px/1.9 var(--mono);color:var(--muted);background:#fbfbf8}.json-head{border-bottom:1px solid var(--line-2);background:var(--paper);color:var(--ink-3);justify-content:space-between;gap:12px;padding:6px 12px;font-size:11.5px;line-height:1.5;display:flex}.json-body{padding:12px 16px 16px}.json-in{padding-left:18px}.json-key{color:#2340c9}.json-str{color:#a63a0b}.json-items{flex-wrap:wrap;column-gap:10px;margin:0;padding:0 0 0 36px;list-style:none;display:flex}.json-items li{animation:.3s ease-out both fadein;animation-delay:calc(.12s + var(--k,0) * 22ms)}.projects-wrap{max-height:486px;margin-top:16px}.pj-btn{flex-direction:row;align-items:center;gap:12px;min-height:60px;padding:10px 40px 10px 12px}.pj-btn .chev{top:22px}.pj-icon{object-fit:cover;border-radius:7px;flex:none;width:32px;height:32px;display:block;box-shadow:0 0 0 1px #18181c1f}.pj-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.pj-body{padding:12px 4px 6px 2px}.pj-body>p{color:#3f3e3a;margin:0;font-size:14px;line-height:1.55}.pill{font:500 11.5px/1 var(--sans);flex:none;align-items:center;gap:6px;padding:5px 8px;display:inline-flex}.pill:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.pill-wip{color:#a8330a;background:#ffede5}.pill-live{color:#1a6b30;background:#e7f6ea}.pill-beta{color:#2340c9;background:#e6ecff}.tags{flex-wrap:wrap;gap:6px;margin:12px 0 0;padding:0;list-style:none;display:flex}.tag{font:500 12px/1 var(--sans);background:var(--paper);padding:6px 8px}.btn{cursor:pointer;border:0;align-items:center;gap:8px;min-height:44px;margin-top:16px;padding:0 16px;font-size:14px;font-weight:500;text-decoration:none;transition:transform .15s,background-color .15s;display:inline-flex}.btn:hover{transform:translateY(-1px)}.pj-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;display:flex}.pj-actions .btn{margin-top:0}.soc{border:1px solid var(--line);background:#fff;align-items:center;gap:8px;min-height:44px;padding:0 14px 0 12px;font-size:14px;font-weight:500;text-decoration:none;transition:border-color .15s,transform .15s;display:inline-flex}.soc:hover{border-color:var(--ink);transform:translateY(-1px)}.btn-ink{background:var(--ink);color:#fff}.btn-ink:hover{background:var(--cobalt);color:#fff}.btn-brand:hover{filter:brightness(1.15)}.contact-list{flex-direction:column;gap:8px;margin:20px 0 0;padding:0;list-style:none;display:flex}.contact-email{align-items:stretch;gap:8px;display:flex}.row{border:1px solid var(--line);flex:1;align-items:center;gap:14px;min-width:0;min-height:66px;padding:0 16px;text-decoration:none;transition:border-color .15s;display:flex}.row:hover{border-color:var(--ink)}.row>svg:first-child{flex:none}.row-text{flex-direction:column;gap:2px;min-width:0;display:flex}.row-label{color:var(--muted);font-size:12.5px}.row-handle{text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:500;overflow:hidden}.copy{background:var(--tangerine);border:1px solid var(--ink);cursor:pointer;flex:none;justify-content:center;align-items:center;gap:8px;min-width:104px;min-height:66px;padding:0 14px;font-size:14px;font-weight:600;transition:background-color .15s;display:inline-flex}.copy:hover{background:#ff7a47}.stage.portrait .scene{transform-origin:0 0;transform:translate(-301px,4px)scale(.56)}.stage.portrait .panel{width:420px;height:514px;padding:16px 26px 24px 2px;top:408px;left:10px;overflow-y:auto}.stage.portrait .topbar{top:6px;left:16px;right:16px}.stage.portrait .crumb,.stage.portrait .conn,.stage.portrait .hint{display:none}.stage.portrait .intro{gap:14px;padding-top:4px}.stage.portrait .intro-h1{font-size:46px}.stage.portrait .intro-spec>div{padding:0 12px}.stage.portrait .intro-spec>div:first-child{padding-left:0}.stage.portrait .intro-spec dd{font-size:16px}.stage.portrait .scroll{max-height:none;overflow:visible}.stage.portrait .log-wrap{padding-bottom:8px;-webkit-mask-image:none;mask-image:none}.stage.portrait .rlog-prompt{display:none}@media (prefers-reduced-motion:reduce){*,:after{transition-duration:10ms!important;transition-delay:0s!important;animation:none!important}.cable,.rail{stroke-dashoffset:0}.node,.cpill{opacity:1}.pulse{display:none}}.board{background:var(--paper);min-height:100dvh}.board-face{flex-direction:column;max-width:860px;margin:0 auto;padding:40px 24px 80px;display:flex}.crumb-link{letter-spacing:.12em;align-items:center;gap:8px;min-height:44px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.crumb-link:hover{color:var(--cobalt)}.ref{color:var(--muted);font-size:13px}.page-title{font-family:var(--display);letter-spacing:-.04em;margin:0;font-size:clamp(38px,6vw,56px);font-weight:500;line-height:1.05}.chip{border:1px solid var(--ink);background:#fff}.panel-box{padding:28px}.post-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.post-row{border-color:var(--line);justify-content:space-between;gap:20px;padding:18px 20px;text-decoration:none;transition:border-color .15s;display:flex}.post-row:hover{border-color:var(--ink)}.post-body{flex-direction:column;gap:6px;display:flex}.post-title{font-size:18px;font-weight:600}.post-dek{color:var(--ink-3);font-size:14.5px}.post-meta{color:var(--muted);text-align:right;font-variant-numeric:tabular-nums;flex:none;font-size:12.5px}.post-content{color:var(--ink-2);font-size:17px;line-height:1.7}.post-content img{max-width:100%;height:auto}.post-content a{color:var(--cobalt)}
