@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/32687112bd2dd8db-s.0v2ipp7s07_p9.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:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/28868e710e86be81-s.44ks8kcggj012.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:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.1ii7211jqpzi_.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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/32687112bd2dd8db-s.0v2ipp7s07_p9.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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/28868e710e86be81-s.44ks8kcggj012.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:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.1ii7211jqpzi_.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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../media/32687112bd2dd8db-s.0v2ipp7s07_p9.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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../media/28868e710e86be81-s.44ks8kcggj012.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:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.1ii7211jqpzi_.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:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_84fdbdbd-module__QXPjhq__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_84fdbdbd-module__QXPjhq__variable{--font-sans:"Space Grotesk", "Space Grotesk Fallback"}
@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/4ba802ed8e67eac5-s.341_rbs6dql3t.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:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d7a0600e467cf0bd-s.40d3ll7mho212.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:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/dc0d9adbac686440-s.p.3-4lwpipb4a4k.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:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/b8f2b92a9960dd69-s.37aqrzupgb8zi.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:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/28e60ca39c9ae554-s.0e_5-ojqbtsw9.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:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/8d05cfa5faa8406c-s.p.2p-978ij53_v6.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:Space Mono Fallback;src:local(Arial);ascent-override:81.58%;descent-override:26.3%;line-gap-override:0.0%;size-adjust:137.28%}.space_mono_b63236bf-module__gQ-cPq__className{font-family:Space Mono,Space Mono Fallback;font-style:normal}.space_mono_b63236bf-module__gQ-cPq__variable{--font-mono:"Space Mono", "Space Mono Fallback"}
:root{--navy:#0b0b0c;--navy-hover:#1a1a1c;--mint:#78fa9c;--mint-hover:#a3fcbb;--blue:#0b52d9;--white:#fff;--muted:#c4c4c4;--line:#2a2a2d;--tag-line:#505055;--mono:var(--font-mono), ui-monospace, monospace;--sans:var(--font-sans), system-ui, sans-serif;--u:48px}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--navy);color:var(--white);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit}a:hover{opacity:.8}h1,h2,p{margin:0}.mono{font-family:var(--mono);font-weight:400}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.band{background:var(--navy)}.band.light{background:var(--white);color:var(--navy)}.page{max-width:1280px;margin:0 auto;position:relative}.d,.d-only{display:none!important}.px{width:var(--u);height:var(--u);display:block;position:absolute}.white{background:var(--white)}.mint{background:var(--mint)}.blue{background:var(--blue)}.navy{background:var(--navy)}.btn-mint,.btn-navy{font-weight:500;text-decoration:none}.btn-mint{background:var(--mint);color:var(--navy);padding:10px 20px}.btn-navy{background:var(--navy);color:var(--white)}.nav{justify-content:space-between;align-items:center;height:64px;padding-right:20px;display:flex}.nav-brand{align-items:center;height:100%;text-decoration:none;display:flex}.nav-brand:hover{opacity:1}.logo{background:var(--mint);width:64px;height:64px}.nav-name{font-family:var(--mono);align-items:center;padding-left:24px;font-size:18px;display:none}.typed{white-space:nowrap;width:calc(var(--chars) * 1ch);animation:typing 1.4s steps(var(--chars)) .3s both;display:inline-block;overflow:hidden}.nav-name:after{content:"";background:var(--mint);width:.6ch;height:1.1em;margin-left:4px;animation:1s step-end infinite caret}@keyframes typing{0%{width:0}}@keyframes caret{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.typed,.nav-name:after{animation:none}}.nav-toggle{cursor:pointer;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:flex-end;gap:6px;width:44px;height:44px;padding:0;display:flex}.nav-toggle>span{background:var(--white);height:2px;transition:transform .2s,width .2s;display:block}.nav-toggle>span:first-child{width:24px}.nav-toggle>span:last-child{width:16px}.nav-toggle[aria-expanded=true]>span:first-child{transform:translateY(4px)rotate(45deg)}.nav-toggle[aria-expanded=true]>span:last-child{width:24px;transform:translateY(-4px)rotate(-45deg)}.nav-links{z-index:10;background:var(--navy);border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-direction:column;gap:20px;padding:24px;font-size:18px;display:none;position:absolute;top:64px;left:0;right:0}.nav-links.open{display:flex}.nav-links a{text-decoration:none}.nav-links .nav-cv{align-self:flex-start}.hero-art{height:320px;position:relative}.hero-photo{background:var(--white);width:180px;height:240px;position:absolute;top:40px;left:calc(50% - 75px)}.slot{justify-content:center;align-items:center;display:flex;overflow:hidden}.slot-img{object-fit:cover}.slot-label{color:#0b0b0c73;font-size:13px}.hero-text{flex-direction:column;gap:20px;padding:24px 24px 40px;display:flex}.hero-text h1{letter-spacing:-.03em;font-size:48px;line-height:1}.role{background:var(--mint);height:48px;color:var(--navy);letter-spacing:.04em;justify-content:center;align-items:center;font-size:16px;font-weight:500;display:flex}.hero-text p{color:var(--muted);text-wrap:pretty;font-size:16px;line-height:1.55}.hero-links{flex-wrap:wrap;gap:12px 28px;font-size:15px;display:flex}.projects{padding:32px 24px}.section-head{margin-bottom:24px}.section-head h2{font-size:32px}.count{color:var(--mint);font-size:15px;display:none}.project-grid{grid-template-columns:1fr;gap:16px;display:grid}.project{border:1px solid var(--line);flex-direction:column;gap:12px;padding:16px;text-decoration:none;transition:background .15s;display:flex}.project:hover{opacity:1;background:var(--navy-hover)}.thumb{height:160px;position:relative;overflow:hidden}.project-title{justify-content:space-between;align-items:baseline;font-size:20px;display:flex}.project-title .num{color:var(--mint);font-size:16px}.project-desc{color:var(--muted);font-size:15px;line-height:1.5}.live-badge{background:var(--navy);color:var(--mint);text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:flex;position:absolute;bottom:12px;left:12px}.live-badge:before{content:"";background:var(--mint);width:8px;height:8px;animation:1.6s step-end infinite live-blink}@keyframes live-blink{50%{opacity:.25}}@media (prefers-reduced-motion:reduce){.live-badge:before{animation:none}}.tags{gap:8px;font-size:13px;display:none}.tags>span{border:1px solid var(--tag-line);padding:4px 10px}.about{padding:40px 24px}.about-grid{grid-template-columns:minmax(0,1fr);gap:40px;display:grid}.about-intro{flex-direction:column;gap:20px;display:flex}.about-intro h2{font-size:32px}.about-intro p{text-wrap:pretty;font-size:16px;line-height:1.6}.skills{flex-wrap:wrap;gap:8px;font-size:14px;font-weight:500;display:flex}.skills>span{padding:6px 12px}.skills>.navy,.skills>.blue{color:var(--white)}.timeline{flex-direction:column;display:flex}.tl-row{border-top:2px solid var(--navy);grid-template-columns:120px 1fr;gap:16px;padding:20px 0;display:grid}.tl-row:last-of-type{border-bottom:2px solid var(--navy)}.tl-date{font-size:14px}.tl-title{font-size:18px;font-weight:700}.tl-sub{color:var(--tag-line);margin-top:4px;font-size:15px}.cv-btn{align-self:flex-start;margin-top:32px;padding:14px 24px}.contact-band{background:var(--white);color:var(--navy)}.contact{flex-direction:column;gap:16px;padding:88px 24px 40px;display:flex}.contact h2{font-size:32px}.contact-form,.contact-row{flex-direction:column;gap:12px;display:flex}.contact-form input:not([type=checkbox]),.contact-form textarea{border:1px solid var(--tag-line);width:100%;min-width:0;font:16px var(--sans);background:var(--white);color:var(--navy);border-radius:0;outline:none;padding:14px 16px}.contact-form textarea{resize:vertical;min-height:140px;line-height:1.5}.contact-form input:focus-visible,.contact-form textarea:focus-visible{box-shadow:inset 0 0 0 2px var(--blue)}.contact-actions{flex-direction:column;gap:12px;display:flex}.contact-form button{background:var(--navy);height:52px;color:var(--white);font:500 16px var(--sans);cursor:pointer;border:0;border-radius:0;padding:0 32px}.contact-form button:disabled{opacity:.6;cursor:wait}.contact-status{font-size:15px;line-height:1.5}.contact-status:empty{display:none}.contact-links{color:var(--tag-line);flex-wrap:wrap;gap:12px 24px;margin-top:16px;font-size:14px;display:flex}@media (min-width:720px){.project-grid{grid-template-columns:1fr 1fr}.about-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)}.projects,.about,.contact{padding-left:48px;padding-right:48px}.contact-row{flex-direction:row}.contact-actions{flex-direction:row;align-items:center;gap:24px}.hero-text{padding-left:48px;padding-right:48px}}@media (min-width:1220px){:root{--u:80px}.d,.d-only{display:revert!important}.px.d{display:block!important}.m,.m-only{display:none!important}.nav{height:80px;padding-right:80px}.logo{width:80px;height:80px}.nav-name{display:inline-flex}.nav-toggle{display:none}.nav-links,.nav-links.open{background:0 0;border:0;flex-direction:row;align-items:center;gap:40px;padding:0;font-size:16px;display:flex;position:static}.nav-links .nav-cv{align-self:auto}.hero{height:560px}.hero-art{height:auto;position:absolute;inset:0}.hero-photo{width:240px;height:320px;top:80px;left:auto;right:160px}.hero-text{gap:32px;padding:0;position:absolute;top:72px;left:240px}.hero-text h1{font-size:96px}.role{width:560px;height:64px;font-size:22px}.hero-text p{max-width:520px;font-size:18px}.hero-links{font-size:17px}.projects{padding:120px 80px 120px 240px}.section-head{justify-content:space-between;align-items:baseline;margin-bottom:48px;display:flex}.section-head h2{letter-spacing:-.02em;font-size:56px}.count{display:inline}.project-grid{background:var(--line);gap:2px}.project{background:var(--navy);border:0;gap:20px;padding:32px}.thumb{height:220px}.project-title{font-size:24px}.project-desc{font-size:16px}.tags{display:flex}.about{padding:120px 80px 120px 240px}.about-grid{gap:80px}.about-intro{gap:24px}.about-intro h2{letter-spacing:-.02em;font-size:56px}.about-intro p{font-size:18px}.tl-row{grid-template-columns:160px 1fr;gap:24px;padding:24px 0}.tl-date{font-size:15px}.tl-title{font-size:20px}.tl-sub{font-size:16px}.contact-band{background:var(--navy);color:var(--white)}.contact{padding:120px 80px 160px 240px;display:block}.contact h2{letter-spacing:-.03em;margin-bottom:40px;font-size:72px;line-height:1.05}.contact-form{gap:16px;max-width:720px}.contact-row{gap:16px}.contact-form input:not([type=checkbox]),.contact-form textarea{border:0;padding:20px 24px;font-size:18px}.contact-form input:not([type=checkbox]){height:64px}.contact-form input:focus-visible,.contact-form textarea:focus-visible{box-shadow:inset 0 0 0 3px var(--blue)}.contact-form button{background:var(--mint);height:64px;color:var(--navy);flex-shrink:0;font-size:18px}.contact-form button:hover{background:var(--mint-hover)}.contact-status{color:var(--muted);font-size:16px}.contact-status a{color:var(--white)}.contact-links{color:var(--muted);gap:40px;margin-top:48px;font-size:16px}}
