@font-face{font-family:Sora;font-style:normal;font-weight:500;font-display:swap;src:url(../media/3dbe685087e51055-s.7d71229e.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6bd983bd58a87a3d-s.p.cf80dd39.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:Sora;font-style:normal;font-weight:600;font-display:swap;src:url(../media/3dbe685087e51055-s.7d71229e.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6bd983bd58a87a3d-s.p.cf80dd39.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:Sora;font-style:normal;font-weight:700;font-display:swap;src:url(../media/3dbe685087e51055-s.7d71229e.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sora;font-style:normal;font-weight:700;font-display:swap;src:url(../media/6bd983bd58a87a3d-s.p.cf80dd39.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:Sora Fallback;src:local(Arial);ascent-override:85.29%;descent-override:25.5%;line-gap-override:0.0%;size-adjust:113.73%}.sora_589d83e9-module__fYc6wq__className{font-family:Sora,Sora Fallback;font-style:normal}.sora_589d83e9-module__fYc6wq__variable{--font-display:"Sora","Sora Fallback"}
@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/a342834df7752944-s.bb140f9f.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:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.50575af1.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.78d1a7ae.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.247c8473.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:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.18d7c7dc.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.71e1367e.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:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a342834df7752944-s.bb140f9f.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:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.50575af1.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.78d1a7ae.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.247c8473.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:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.18d7c7dc.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.71e1367e.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:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/a342834df7752944-s.bb140f9f.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:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.50575af1.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.78d1a7ae.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.247c8473.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:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.18d7c7dc.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.71e1367e.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:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(../media/a342834df7752944-s.bb140f9f.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:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.50575af1.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.78d1a7ae.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.247c8473.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:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.18d7c7dc.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.71e1367e.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:Manrope;font-style:normal;font-weight:800;font-display:swap;src:url(../media/a342834df7752944-s.bb140f9f.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:Manrope;font-style:normal;font-weight:800;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.50575af1.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:800;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.78d1a7ae.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:800;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.247c8473.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:Manrope;font-style:normal;font-weight:800;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.18d7c7dc.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:800;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.71e1367e.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:Manrope Fallback;src:local(Arial);ascent-override:103.31%;descent-override:29.07%;line-gap-override:0.0%;size-adjust:103.19%}.manrope_35f6db5-module__4-tucG__className{font-family:Manrope,Manrope Fallback;font-style:normal}.manrope_35f6db5-module__4-tucG__variable{--font-body:"Manrope","Manrope Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/04c5164763c40239-s.690580e8.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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/26f284dcc38c84c0-s.303a03d6.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/7e7f32a39836f228-s.0b4edfe7.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/fa39153a3fc630ba-s.bff0868b.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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6a5386fd6038edbe-s.719084df.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/051742360c26797e-s.p.102b7f24.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:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/04c5164763c40239-s.690580e8.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:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/26f284dcc38c84c0-s.303a03d6.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/7e7f32a39836f228-s.0b4edfe7.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/fa39153a3fc630ba-s.bff0868b.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:JetBrains Mono;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6a5386fd6038edbe-s.719084df.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-20C0,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(../media/051742360c26797e-s.p.102b7f24.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:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/04c5164763c40239-s.690580e8.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:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/26f284dcc38c84c0-s.303a03d6.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/7e7f32a39836f228-s.0b4edfe7.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/fa39153a3fc630ba-s.bff0868b.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:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/6a5386fd6038edbe-s.719084df.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/051742360c26797e-s.p.102b7f24.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:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}.jetbrains_mono_baa82d29-module__ZBotsG__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_baa82d29-module__ZBotsG__variable{--font-mono:"JetBrains Mono","JetBrains Mono Fallback"}
:root{--paper:#fbfcfc;--mist:#eef4f6;--ink:#172126;--muted:#5c6a70;--line:#c8d5da;--survey-blue:#1f9bcf;--signal-green:#7f9c45;--work-orange:#d96b2b;--white:#fff;--grid:#1f9bcf14;--grid-ink:#17212614;--focus:#1f9bcf6b;--shadow:0 24px 80px #1721261f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--paper:#0f171b;--mist:#172126;--ink:#eef6f8;--muted:#a8b9c0;--line:#31464f;--survey-blue:#58bde4;--signal-green:#b1c76f;--work-orange:#f19a62;--white:#152026;--grid:#58bde414;--grid-ink:#eef6f814;--focus:#58bde47a;--shadow:0 28px 90px #00000047;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--font-body),ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;margin:0;transition:background-color .24s,color .24s}a{color:inherit;text-decoration:none}button{font:inherit}img{max-width:100%;display:block}::selection{background:#1f9bcf38}.portfolio-shell{min-height:100vh;overflow:hidden}.section-pad{padding:96px max(24px,50vw - 590px)}.site-header{z-index:20;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--paper)88%,transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);justify-content:space-between;align-items:center;gap:18px;padding:16px max(24px,50vw - 590px);display:flex;position:sticky;top:0}.wordmark{border:1px solid var(--ink);width:44px;height:44px;font-family:var(--font-mono),"SFMono-Regular",Consolas,"Liberation Mono",monospace;letter-spacing:0;border-radius:8px;place-items:center;font-size:13px;font-weight:700;display:inline-grid}.site-header nav{color:var(--muted);gap:22px;margin-left:auto;font-size:14px;font-weight:700;display:flex}.site-header nav a{position:relative}.site-header nav a:after{content:"";background:var(--survey-blue);transform-origin:50%;height:2px;transition:transform .18s;position:absolute;bottom:-8px;left:0;right:0;transform:scaleX(0)}.site-header nav a:hover:after{transform:scaleX(1)}.site-header nav a:focus-visible,.button-primary:focus-visible,.button-secondary:focus-visible,.theme-toggle:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.theme-toggle{border:1px solid var(--line);background:color-mix(in srgb,var(--white)82%,transparent);min-height:40px;color:var(--ink);cursor:pointer;border-radius:999px;align-items:center;gap:9px;padding:5px 10px 5px 6px;font-size:13px;font-weight:800;transition:border-color .18s,background-color .18s,transform .18s;display:inline-flex}.theme-toggle:hover{border-color:var(--survey-blue);transform:translateY(-1px)}.toggle-track{background:var(--ink);border-radius:999px;width:42px;height:26px;position:relative}.toggle-thumb{background:var(--paper);border-radius:50%;width:18px;height:18px;transition:transform .22s;position:absolute;top:4px;left:4px}[data-theme=dark] .toggle-thumb{transform:translate(16px)}.toggle-label{min-width:36px;font-family:var(--font-mono),"SFMono-Regular",Consolas,"Liberation Mono",monospace;font-size:11px}.hero-section{--spotlight-x:72%;--spotlight-y:26%;--map-shift-x:0px;--map-shift-y:0px;isolation:isolate;background:linear-gradient(90deg,var(--grid)1px,transparent 1px),linear-gradient(0deg,var(--grid)1px,transparent 1px),radial-gradient(circle at 88% 18%,color-mix(in srgb,var(--signal-green)18%,transparent),transparent 30%),var(--paper);background-size:56px 56px,56px 56px,auto,auto;grid-template-columns:minmax(0,.95fr) minmax(420px,1.05fr);align-items:center;gap:64px;min-height:calc(100vh - 77px);display:grid;position:relative}.hero-section:before{z-index:-1;content:"";background:radial-gradient(460px circle at var(--spotlight-x)var(--spotlight-y),color-mix(in srgb,var(--survey-blue)18%,transparent),transparent 62%),radial-gradient(340px circle at calc(var(--spotlight-x) + 120px)calc(var(--spotlight-y) + 80px),color-mix(in srgb,var(--work-orange)10%,transparent),transparent 70%);opacity:.95;pointer-events:none;transition:opacity .22s;position:absolute;inset:0}.hero-copy{max-width:620px}.eyebrow{color:var(--survey-blue);font-family:var(--font-mono),"SFMono-Regular",Consolas,"Liberation Mono",monospace;letter-spacing:0;text-transform:uppercase;margin:0 0 14px;font-size:12px;font-weight:700}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--font-display),var(--font-body),ui-sans-serif,system-ui,sans-serif;font-weight:650}h1{letter-spacing:0;max-width:680px;margin-bottom:22px;font-size:clamp(42px,5.6vw,72px);line-height:1.02}.hero-lede{max-width:590px;color:var(--muted);margin-bottom:28px;font-size:18px;line-height:1.58}.hero-actions,.contact-actions{flex-wrap:wrap;gap:12px;display:flex}.button-primary,.button-secondary{border-radius:8px;justify-content:center;align-items:center;min-height:46px;padding:0 18px;font-size:14px;font-weight:800;transition:border-color .18s,background-color .18s,color .18s,transform .18s;display:inline-flex}.button-primary{background:var(--ink);color:var(--white)}.button-secondary{border:1px solid var(--line);background:color-mix(in srgb,var(--white)78%,transparent);color:var(--ink)}.button-primary:hover,.button-secondary:hover{transform:translateY(-2px)}.fit-map{border:1px solid var(--line);background:linear-gradient(90deg,var(--grid-ink)1px,transparent 1px),linear-gradient(0deg,var(--grid-ink)1px,transparent 1px),var(--white);min-height:520px;box-shadow:var(--shadow);background-size:42px 42px;border-radius:8px;position:relative}.fit-map:before,.fit-map:after{content:"";pointer-events:none;border-radius:999px;position:absolute}.fit-map:before{border:1px dashed color-mix(in srgb,var(--survey-blue)52%,transparent);animation:5.8s ease-in-out infinite orbitPulse;inset:72px}.fit-map:after{border:1px solid color-mix(in srgb,var(--signal-green)44%,transparent);animation:5.8s ease-in-out .9s infinite orbitPulse;inset:150px}.map-grid{border:1px solid color-mix(in srgb,var(--line)88%,transparent);transform:translate3d(calc(var(--map-shift-x)*.16),calc(var(--map-shift-y)*.16),0);border-radius:8px;transition:transform .18s;position:absolute;inset:22px}.profile-pin{z-index:2;text-align:center;justify-items:center;gap:12px;width:180px;transition:transform .18s;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.hero-section:hover .profile-pin{transform:translate(calc(-50% + (var(--map-shift-x)*-.18)),calc(-50% + (var(--map-shift-y)*-.18)))}.profile-pin img{border:4px solid var(--white);object-fit:cover;border-radius:50%;width:136px;height:136px;transition:transform .22s;box-shadow:0 16px 48px #17212633}.fit-map:hover .profile-pin img{transform:scale(1.035)}.profile-pin span,.map-node{border:1px solid var(--line);background:color-mix(in srgb,var(--paper)92%,transparent);font-family:var(--font-mono),"SFMono-Regular",Consolas,"Liberation Mono",monospace;border-radius:8px;font-size:12px;font-weight:700;box-shadow:0 12px 28px #1721261f}.profile-pin span{padding:8px 10px}.map-node{z-index:3;padding:9px 11px;transition:transform .18s,border-color .18s,background-color .18s;position:absolute}.map-node:hover{border-color:var(--survey-blue);transform:translateY(-3px)}.node-1{border-color:color-mix(in srgb,var(--survey-blue)50%,var(--line));transform:translate3d(calc(var(--map-shift-x)*-.22),calc(var(--map-shift-y)*-.18),0);top:62px;left:64px}.node-2{border-color:color-mix(in srgb,var(--signal-green)50%,var(--line));transform:translate3d(calc(var(--map-shift-x)*.2),calc(var(--map-shift-y)*-.16),0);top:116px;right:44px}.node-3{border-color:color-mix(in srgb,var(--work-orange)50%,var(--line));transform:translate3d(calc(var(--map-shift-x)*.18),calc(var(--map-shift-y)*.22),0);bottom:120px;right:76px}.node-4{border-color:color-mix(in srgb,var(--survey-blue)50%,var(--line));transform:translate3d(calc(var(--map-shift-x)*-.18),calc(var(--map-shift-y)*.2),0);bottom:58px;left:82px}.node-5{border-color:color-mix(in srgb,var(--signal-green)50%,var(--line));transform:translate3d(calc(var(--map-shift-x)*-.12),calc(var(--map-shift-y)*.08),0);top:252px;left:32px}.section-heading{grid-template-columns:minmax(240px,.45fr) minmax(0,.55fr);align-items:start;gap:48px;margin-bottom:42px;display:grid}.section-heading.compact{grid-template-columns:1fr;max-width:760px}.section-heading h2,.contact-section h2{letter-spacing:0;margin:0;font-size:clamp(30px,4.1vw,54px);line-height:1.04}.fit-section,.work-section,.experience-section{background:var(--paper)}.signal-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;display:grid}.signal-card,.work-card,.capability-card,.timeline-item,.archive-card{border:1px solid var(--line);background:var(--white);border-radius:8px}.signal-card,.capability-card,.archive-card,.timeline-item{transition:transform .18s,border-color .18s}.signal-card:hover,.capability-card:hover,.archive-card:hover,.timeline-item:hover{border-color:color-mix(in srgb,var(--survey-blue)62%,var(--line));transform:translateY(-3px)}.signal-card{min-height:210px;padding:20px}.signal-card p,.work-context,.timeline-item>div>p{color:var(--work-orange);font-family:var(--font-mono),"SFMono-Regular",Consolas,"Liberation Mono",monospace;text-transform:uppercase;font-size:12px;font-weight:700}.signal-card h3{margin-bottom:16px;font-size:24px;line-height:1.12}.signal-card span,.archive-card p,.timeline-item li,.work-body p,.need-card p,.role-intro p{color:var(--muted);line-height:1.6}.role-section,.capability-section,.archive-section{background:var(--mist)}.role-panel{border:1px solid var(--line);background:radial-gradient(circle at 80% 24%,color-mix(in srgb,var(--signal-green)15%,transparent),transparent 28%),linear-gradient(90deg,var(--grid)1px,transparent 1px),linear-gradient(0deg,var(--grid)1px,transparent 1px),var(--white);box-shadow:var(--shadow);background-size:34px 34px;border-radius:8px;grid-template-columns:minmax(0,.68fr) minmax(220px,.32fr);align-items:stretch;gap:32px;margin-bottom:16px;display:grid;position:relative;overflow:hidden}.role-panel:after{content:"";background:radial-gradient(circle,color-mix(in srgb,var(--survey-blue)22%,transparent),transparent 66%);pointer-events:none;width:min(460px,48vw);height:320px;position:absolute;bottom:-58%;right:-10%}.role-intro{z-index:1;padding:38px;position:relative}.role-intro h2{max-width:650px;margin-bottom:18px;font-size:clamp(30px,3.8vw,50px);line-height:1.04}.role-intro p:last-child{max-width:610px;margin-bottom:0;font-size:17px}.role-orbit{border-left:1px solid var(--line);background:linear-gradient(135deg,transparent 0 49%,color-mix(in srgb,var(--line)70%,transparent)50%,transparent 51%),linear-gradient(45deg,transparent 0 49%,color-mix(in srgb,var(--line)55%,transparent)50%,transparent 51%);min-height:270px;position:relative}.role-orbit:before,.role-orbit:after{content:"";border-radius:50%;position:absolute;inset:42px}.role-orbit:before{border:1px dashed color-mix(in srgb,var(--survey-blue)45%,transparent);animation:6s ease-in-out infinite orbitPulse}.role-orbit:after{border:1px solid color-mix(in srgb,var(--signal-green)42%,transparent);inset:78px}.orbit-core{z-index:2;border:1px solid var(--line);background:color-mix(in srgb,var(--paper)86%,var(--white));width:76px;height:76px;color:var(--ink);font-family:var(--font-mono),"SFMono-Regular",Consolas,"Liberation Mono",monospace;border-radius:50%;place-items:center;font-weight:800;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.orbit-dot{z-index:3;border:3px solid var(--paper);background:var(--survey-blue);border-radius:50%;width:14px;height:14px;position:absolute;box-shadow:0 10px 24px #1721262e}.dot-a{top:52px;left:48%}.dot-b{background:var(--signal-green);bottom:92px;right:56px}.dot-c{background:var(--work-orange);bottom:64px;left:52px}.needs-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.need-card{border:1px solid var(--line);background:var(--white);border-radius:8px;min-height:230px;padding:20px;transition:transform .18s,border-color .18s,box-shadow .18s;position:relative;overflow:hidden}.need-card:before{content:"";background:linear-gradient(90deg,var(--line),transparent);height:1px;transition:background-color .18s,transform .18s;position:absolute;bottom:20px;left:20px;right:20px}.need-card:after{content:"";border:1px solid color-mix(in srgb,var(--survey-blue)28%,transparent);opacity:.9;border-radius:50%;width:170px;height:170px;transition:border-color .18s,transform .18s;position:absolute;top:-70px;right:-60px}.need-card:hover{border-color:color-mix(in srgb,var(--survey-blue)62%,var(--line));transform:translateY(-3px);box-shadow:0 18px 45px #17212614}.need-card:hover:before{background:linear-gradient(90deg,var(--survey-blue),transparent);transform:translate(8px)}.need-card:hover:after{border-color:color-mix(in srgb,var(--work-orange)42%,transparent);transform:scale(1.08)}.need-label{z-index:1;color:var(--work-orange);font-family:var(--font-mono),"SFMono-Regular",Consolas,"Liberation Mono",monospace;text-transform:uppercase;margin-bottom:42px;font-size:12px;font-weight:800;display:inline-flex;position:relative}.need-mark{z-index:1;border:1px solid color-mix(in srgb,var(--line)86%,transparent);background:linear-gradient(90deg,transparent 47%,color-mix(in srgb,var(--survey-blue)58%,transparent)48% 52%,transparent 53%),linear-gradient(0deg,transparent 47%,color-mix(in srgb,var(--survey-blue)58%,transparent)48% 52%,transparent 53%),var(--paper);border-radius:50%;width:34px;height:34px;transition:border-color .18s,transform .18s;position:absolute;top:19px;right:18px}.need-card:nth-child(2n) .need-mark{background:linear-gradient(90deg,transparent 47%,color-mix(in srgb,var(--signal-green)58%,transparent)48% 52%,transparent 53%),linear-gradient(0deg,transparent 47%,color-mix(in srgb,var(--signal-green)58%,transparent)48% 52%,transparent 53%),var(--paper)}.need-card:nth-child(3n) .need-mark{background:linear-gradient(90deg,transparent 47%,color-mix(in srgb,var(--work-orange)58%,transparent)48% 52%,transparent 53%),linear-gradient(0deg,transparent 47%,color-mix(in srgb,var(--work-orange)58%,transparent)48% 52%,transparent 53%),var(--paper)}.need-card:hover .need-mark{border-color:color-mix(in srgb,var(--survey-blue)68%,var(--line));transform:rotate(45deg)}.need-card h3{z-index:1;max-width:260px;margin-bottom:12px;font-size:24px;line-height:1.08;position:relative}.need-card p{z-index:1;margin:0;font-size:15px;position:relative}.featured-grid{gap:18px;display:grid}.work-card{grid-template-columns:minmax(280px,.42fr) minmax(0,.58fr);transition:transform .22s,box-shadow .22s;display:grid;overflow:hidden}.work-card:hover{box-shadow:var(--shadow);transform:translateY(-4px)}.work-image{border-right:1px solid var(--line);background:linear-gradient(90deg,var(--grid)1px,transparent 1px),linear-gradient(0deg,var(--grid)1px,transparent 1px),color-mix(in srgb,var(--paper)75%,var(--survey-blue)6%);background-size:34px 34px;place-items:center;min-height:350px;display:grid}.work-image img{object-fit:contain;width:min(78%,440px);max-height:310px}.work-body{padding:34px}.work-body h3{margin-bottom:14px;font-size:clamp(28px,3vw,44px);line-height:1}.work-body strong{color:var(--ink);margin-top:24px;font-size:16px;line-height:1.5;display:block}.tag-row,.chip-list{flex-wrap:wrap;gap:8px;display:flex}.tag-row{margin-top:18px}.tag-row span,.chip-list span{border:1px solid var(--line);background:var(--paper);color:var(--ink);font-family:var(--font-mono),"SFMono-Regular",Consolas,"Liberation Mono",monospace;border-radius:999px;padding:7px 10px;font-size:12px;font-weight:650}.capability-grid,.archive-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;display:grid}.capability-card,.archive-card{padding:22px}.capability-card h3,.archive-card h3{margin-bottom:18px;font-size:22px}.timeline{gap:14px;display:grid}.timeline-item{grid-template-columns:minmax(250px,.36fr) minmax(0,.64fr);gap:32px;padding:26px;display:grid}.timeline-item h3{margin-bottom:8px;font-size:24px}.timeline-item>div>span{color:var(--muted)}.timeline-item ul{margin:0;padding-left:20px}.timeline-item li+li{margin-top:10px}.archive-card{min-height:230px}.contact-section{background:var(--ink);color:var(--white);grid-template-columns:minmax(0,.66fr) minmax(280px,.34fr);align-items:end;gap:40px;display:grid}.contact-section .eyebrow{color:#8bd0ec}.contact-section .button-primary{background:var(--white);color:var(--ink)}.contact-section .button-secondary{border-color:color-mix(in srgb,var(--white)22%,transparent);background:color-mix(in srgb,var(--white)8%,transparent);color:var(--white)}[data-reveal]{opacity:0;transition:opacity .52s,transform .52s;transform:translateY(18px)}[data-reveal].is-visible{opacity:1;transform:translateY(0)}@keyframes orbitPulse{0%,to{opacity:.68;transform:scale(1)}50%{opacity:1;transform:scale(1.025)}}@media (max-width:980px){.section-pad{padding-top:72px;padding-bottom:72px}.hero-section,.section-heading,.role-panel,.work-card,.timeline-item,.contact-section{grid-template-columns:1fr}.hero-section{min-height:auto}.fit-map{min-height:480px}.signal-grid,.needs-list,.capability-grid,.archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.role-orbit{border-top:1px solid var(--line);border-left:0;min-height:220px}.work-image{border-right:0;border-bottom:1px solid var(--line)}}@media (max-width:640px){.site-header{flex-wrap:nowrap;align-items:center;gap:10px;padding:12px 14px}.wordmark{flex:none;width:40px;height:40px;font-size:12px}.site-header nav{overscroll-behavior-x:contain;scrollbar-width:none;white-space:nowrap;flex:auto;justify-content:center;gap:12px;min-width:0;margin-left:0;font-size:13px;overflow-x:auto}.site-header nav::-webkit-scrollbar{display:none}.theme-toggle{flex:none;gap:0;min-height:36px;margin-left:0;padding:5px}.toggle-track{width:36px;height:22px}.toggle-thumb{width:16px;height:16px;top:3px;left:3px}[data-theme=dark] .toggle-thumb{transform:translate(14px)}.toggle-label{display:none}.hero-section{gap:40px}h1{font-size:40px}.hero-lede{font-size:18px}.fit-map{min-height:420px}.profile-pin img{width:104px;height:104px}.map-node{padding:7px 8px;font-size:11px}.node-1{top:42px;left:24px}.node-2{top:96px;right:18px}.node-3{bottom:92px;right:26px}.node-4{bottom:40px;left:28px}.node-5{top:210px;left:16px}.signal-grid,.needs-list,.capability-grid,.archive-grid{grid-template-columns:1fr}.role-intro{padding:24px}.role-orbit{display:none}.need-card{min-height:auto}.work-body{padding:24px}.work-image{min-height:280px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
