@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2c55a0e60120577a-s.0-dom-5bn10r2.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:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/5476f68d60460930-s.2uwcyprjm3xu3.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:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2bbe8d2671613f1f-s.0k62hbripvv8p.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:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/1bffadaabf893a1e-s.3-6t-g6q0vh0a.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:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/2c55a0e60120577a-s.0-dom-5bn10r2.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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5476f68d60460930-s.2uwcyprjm3xu3.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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/2bbe8d2671613f1f-s.0k62hbripvv8p.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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/1bffadaabf893a1e-s.3-6t-g6q0vh0a.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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.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:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/2c55a0e60120577a-s.0-dom-5bn10r2.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:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/5476f68d60460930-s.2uwcyprjm3xu3.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:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/2bbe8d2671613f1f-s.0k62hbripvv8p.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:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/1bffadaabf893a1e-s.3-6t-g6q0vh0a.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:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.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:Inter Fallback;src:local(Arial);ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.0%;size-adjust:107.12%}.inter_1458fbb4-module__RhIzHa__className{font-family:Inter,Inter Fallback;font-style:normal}.inter_1458fbb4-module__RhIzHa__variable{--font-display:"Inter", "Inter Fallback"}
@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/c7f47671e39f7787-s.0klc_mi0-5f4_.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:Instrument Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/f06bf9da926bae75-s.p.2874ccu1_u7jf.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:Instrument Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/c7f47671e39f7787-s.0klc_mi0-5f4_.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:Instrument Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/f06bf9da926bae75-s.p.2874ccu1_u7jf.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:Instrument Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/c7f47671e39f7787-s.0klc_mi0-5f4_.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:Instrument Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/f06bf9da926bae75-s.p.2874ccu1_u7jf.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:Instrument Sans Fallback;src:local(Arial);ascent-override:94.42%;descent-override:24.33%;line-gap-override:0.0%;size-adjust:102.74%}.instrument_sans_9f6443b6-module__mvKRMG__className{font-family:Instrument Sans,Instrument Sans Fallback;font-style:normal}.instrument_sans_9f6443b6-module__mvKRMG__variable{--font-text:"Instrument Sans", "Instrument Sans Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/04c5164763c40239-s.1kd-r_s9smv5m.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:400;font-display:swap;src:url(../media/26f284dcc38c84c0-s.3hlisc-pwq13z.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:400;font-display:swap;src:url(../media/7e7f32a39836f228-s.0-oo9_1x_xmvg.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:400;font-display:swap;src:url(../media/fa39153a3fc630ba-s.36fqqi66-3tjb.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:400;font-display:swap;src:url(../media/6a5386fd6038edbe-s.3_z45zcoc-xoz.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:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/051742360c26797e-s.p.1bkzbscqrt8rl.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:500;font-display:swap;src:url(../media/04c5164763c40239-s.1kd-r_s9smv5m.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.3hlisc-pwq13z.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.0-oo9_1x_xmvg.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.36fqqi66-3tjb.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.3_z45zcoc-xoz.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:JetBrains Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/051742360c26797e-s.p.1bkzbscqrt8rl.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_964e2806-module__h6Ln4a__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_964e2806-module__h6Ln4a__variable{--font-mono:"JetBrains Mono", "JetBrains Mono Fallback"}
@font-face{font-family:Instrument Serif;font-style:italic;font-weight:400;font-display:swap;src:url(../media/fc0a7394b875fa43-s.2ytmazkdrg7t9.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:Instrument Serif;font-style:italic;font-weight:400;font-display:swap;src:url(../media/7ebf22b5a21034f8-s.p.3j3877k49yy0l.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:Instrument Serif Fallback;src:local(Times New Roman);ascent-override:117.94%;descent-override:36.93%;line-gap-override:0.0%;size-adjust:83.94%}.instrument_serif_dc62267-module__oZsM0a__className{font-family:Instrument Serif,Instrument Serif Fallback;font-style:italic;font-weight:400}.instrument_serif_dc62267-module__oZsM0a__variable{--font-serif:"Instrument Serif", "Instrument Serif Fallback"}
:root{--bone:#f5f4f0;--surface:#fbfaf7;--ink:#0a0a0a;--ink-soft:#161616;--accent:#ef4b12;--text-muted:#0a0a0a8f;--text-faint:#0a0a0a66;--line:#0a0a0a1a;--line-strong:#0a0a0a38;--bone-muted:#f5f4f09e;--bone-faint:#f5f4f066;--line-dark:#f5f4f01f;--gutter:clamp(16px, 3vw, 48px);--section-y:clamp(88px, 10vw, 168px);--stack-sm:clamp(1.25rem, 1.8vw, 2rem);--stack-md:clamp(2rem, 3.2vw, 3.5rem);--stack-lg:clamp(4rem, 7vw, 7.5rem);--radius:.75rem;--radius-lg:1.25rem;--frame:clamp(8px, .6vw, 12px);--ease:cubic-bezier(.22, 1, .36, 1);--font-display-stack:var(--font-display), "Inter", sans-serif;--font-text-stack:var(--font-text), "Instrument Sans", sans-serif;--font-mono-stack:var(--font-mono), ui-monospace, monospace;--font-serif-stack:var(--font-serif), Georgia, serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;background-color:var(--bone);color:var(--ink)}body{font-family:var(--font-text-stack);background-color:var(--bone);color:var(--ink);font-size:16px;line-height:1.5;overflow-x:hidden}a{color:inherit;text-decoration:none}ul,ol{list-style:none}button{font:inherit;color:inherit}em{font-family:var(--font-serif-stack);letter-spacing:-.01em;font-style:italic;font-weight:400}::selection{background:var(--accent);color:var(--bone)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-stopped{overflow:hidden}.js [data-reveal]{opacity:0;transition:opacity .55s var(--ease) calc(var(--d,0s) * .6), transform .55s var(--ease) calc(var(--d,0s) * .6);transform:translateY(14px)}.js [data-reveal][data-in],.js [data-reveal=split]{opacity:1;transform:none}.w{vertical-align:top;margin:0 -.06em -.14em;padding:0 .06em .14em;display:inline-block;overflow:hidden}.w>span{display:inline-block}.js [data-reveal=split] .w>span{transition:transform .65s var(--ease) calc(var(--d,0s) * .6 + var(--i,0) * 33ms);transform:translateY(110%)}.js [data-reveal=split][data-in] .w>span{transform:none}.focus-item:before,.exp-item:before,.skill-group:before{content:"";background:var(--line);transform-origin:0;height:1px;transition:transform .85s var(--ease) calc(var(--d,0s) * .6 + 60ms);position:absolute;top:0;left:0;right:0}.js [data-reveal]:not([data-in]).focus-item:before,.js [data-reveal]:not([data-in]).exp-item:before,.js [data-reveal]:not([data-in]).skill-group:before{transform:scaleX(0)}.scroll-progress{z-index:101;background:var(--accent);height:2px;transform:scaleX(var(--page,0));transform-origin:0;pointer-events:none;position:fixed;top:0;left:0;right:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.label{font-family:var(--font-mono-stack);letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);font-size:.7rem}.eyebrow{font-family:var(--font-mono-stack);letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap;font-size:.72rem}.pill{border:1px solid var(--line);color:#0a0a0abf;background:0 0;border-radius:99px;align-items:center;padding:.42em .95em;font-size:.82rem;line-height:1.3;transition:border-color .3s,color .3s;display:inline-flex}.pill:hover{border-color:var(--line-strong);color:var(--ink)}.btn{white-space:nowrap;cursor:pointer;border:1px solid #0000;border-radius:99px;align-items:center;gap:.6em;padding:.85em 1.35em;font-size:.85rem;font-weight:500;line-height:1;transition:background-color .3s,border-color .3s,color .3s;display:inline-flex}.btn:has(.btn-icon){padding:.4em .4em .4em 1.35em}.icon{flex-shrink:0;width:1em;height:1em}.btn-icon{background:var(--ink);width:2.1em;height:2.1em;color:var(--bone);transition:background-color .3s ease, transform .4s var(--ease);border-radius:50%;justify-content:center;align-items:center;font-size:.95em;display:inline-flex;position:relative;overflow:hidden}.btn--ghost .btn-icon{background:#f5f4f01f}.btn:hover .btn-icon{transform:scale(1.06)}.btn-icon--slide .icon{transition:transform .5s var(--ease);position:absolute}.btn-icon--slide .icon:last-child{transform:translate(-180%)}.btn:hover .btn-icon--slide .icon:first-child{transform:translate(180%)}.btn:hover .btn-icon--slide .icon:last-child{transform:none}.btn-icon--drop .icon{transition:transform .4s var(--ease)}.btn:hover .btn-icon--drop .icon{transform:translateY(2px)}.btn--dark{background:var(--ink);color:var(--bone)}.btn--dark:hover{background:#2a2a2a}.btn--light{background:var(--bone);color:var(--ink)}.btn--light:hover{background:#fff}.btn--ghost{border-color:var(--line-dark);color:var(--bone)}.btn--ghost:hover{border-color:var(--bone-faint);background:#f5f4f00f}#navbar.navbar-nfinite{z-index:100;padding:1.25rem var(--gutter);pointer-events:auto;transition:transform .5s var(--ease), background-color .4s ease, border-color .4s ease, backdrop-filter .4s ease;background:0 0;justify-content:space-between;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}#navbar.navbar-nfinite.navbar--scrolled{-webkit-backdrop-filter:blur(18px);padding:.95rem var(--gutter);background-color:#0a0c10e0;border-bottom:1px solid #ffffff14}#navbar.navbar-nfinite.navbar--hidden{transform:translateY(-100%)}.navbar-brand-nfinite{cursor:pointer;z-index:102;align-items:center;text-decoration:none;display:inline-flex}.navbar-logo-img{object-fit:contain;width:auto;height:clamp(30px,2.8vw,42px);transition:transform .3s;display:block}.navbar-brand-nfinite:hover .navbar-logo-img{transform:scale(1.05)}.navbar-brand-logo{color:#fff;align-items:center;gap:.75rem;display:inline-flex}.brand-mark-svg{fill:#fff;flex-shrink:0;width:38px;height:24px;transition:transform .3s;display:block}.navbar-brand-nfinite:hover .brand-mark-svg{transform:scale(1.08)}.brand-text-block{flex-direction:column;line-height:1.15;display:flex}.brand-name{font-family:var(--font-display-stack);letter-spacing:.12em;text-transform:uppercase;color:#fff;white-space:nowrap;font-size:1.05rem;font-weight:700}.brand-sub{font-family:var(--font-mono-stack);letter-spacing:.16em;text-transform:uppercase;color:#f5f4f08c;font-size:.62rem;font-weight:500}.navbar-right-group{align-items:center;gap:clamp(1.4rem,2.8vw,3rem);display:flex}.navbar-links{align-items:center;gap:clamp(1.2rem,2.2vw,2.5rem);display:flex}.navbar-link{font-family:var(--font-text-stack);letter-spacing:.01em;color:#ffffffd1;font-size:.9rem;font-weight:400;text-decoration:none;transition:color .25s}.navbar-link:hover{color:#fff}.navbar-link--mobile{display:none}.navbar-contact-btn{color:#0b0d11;font-family:var(--font-text-stack);letter-spacing:.01em;white-space:nowrap;background-color:#eaf4f7;border-radius:8px;justify-content:center;align-items:center;padding:.62rem 1.4rem;font-size:.88rem;font-weight:500;text-decoration:none;transition:background-color .25s,transform .2s,box-shadow .25s;display:inline-flex}.navbar-contact-btn:hover{background-color:#fff;transform:translateY(-1px);box-shadow:0 4px 16px #eaf4f740}.navbar-toggle{cursor:pointer;z-index:102;background:#ffffff0f;border:1px solid #ffffff26;border-radius:8px;justify-content:center;align-items:center;width:38px;height:38px;transition:background-color .25s;display:none}.navbar-toggle:hover{background:#ffffff1f}.navbar-toggle span{width:16px;height:1.5px;transition:transform .4s var(--ease);background:#fff;display:block}.navbar-toggle span:first-child{margin-bottom:5px}.navbar--open .navbar-toggle span:first-child{margin-bottom:0;transform:translateY(3.25px)rotate(45deg)}.navbar--open .navbar-toggle span:last-child{transform:translateY(-3.25px)rotate(-45deg)}@media (max-width:900px){.navbar-toggle{flex-direction:column;display:inline-flex}.navbar-links{-webkit-backdrop-filter:blur(24px);opacity:0;visibility:hidden;z-index:101;background:#0a0c10fa;flex-direction:column;justify-content:center;align-items:center;gap:1.8rem;height:100dvh;padding:2rem;transition:opacity .35s,visibility .35s;position:fixed;top:0;left:0;right:0}.navbar--open .navbar-links{opacity:1;visibility:visible}.navbar-links .navbar-link{color:#fff;font-size:1.4rem}.navbar-link--mobile{align-items:center;gap:.35em;display:inline-flex}.navbar-contact-btn{display:none}}.hero{padding:var(--frame)}.hero-card{height:calc(100svh - 2 * var(--frame));border-radius:var(--radius-lg);color:#fff;background:#08090b;align-items:flex-end;min-height:560px;display:flex;position:relative;overflow:hidden}.hero-media{position:absolute;inset:0}.js .hero-media[data-reveal]{transition:opacity .85s ease, transform 1.3s var(--ease);transform:scale(1.05)}.js .hero-media[data-reveal][data-in]{transform:none}.hero-media-img{object-fit:cover;object-position:center;scale:calc(1.02 + var(--exit,0) * .03);translate:0 calc(var(--exit,0) * 2.4%)}.hero-media:after{content:"";background:linear-gradient(#08090b59 0%,#08090b26 45%,#08090bcc 100%),linear-gradient(90deg,#08090b8c 0%,#0000 65%);position:absolute;inset:0}.hero-content{z-index:1;justify-content:space-between;align-items:flex-end;gap:2rem;width:100%;padding:0 clamp(20px,3.4vw,64px);display:flex;position:relative}.hero-display{font-family:var(--font-display-stack);letter-spacing:-.055em;translate:0 calc(var(--exit,0) * -3.6vh);flex-direction:column;margin-bottom:clamp(20px,2.2vw,40px);padding-bottom:.04em;font-size:clamp(3.75rem,9.6vw,11.5rem);font-weight:600;line-height:.86;display:flex}.hero-line{opacity:calc(1 - var(--exit,0) * 1.1);display:block}.local-time{font-variant-numeric:tabular-nums}.section{padding:var(--section-y) var(--gutter)}.section--dark{margin:0 var(--frame);border-radius:var(--radius-lg);background:var(--ink);color:var(--bone)}.section--dark .eyebrow,.section--dark .section-meta,.section--dark .label{color:var(--bone-faint)}.section-header{margin-bottom:var(--stack-lg);grid-template-columns:repeat(12,1fr);align-items:start;gap:1.25rem 1.5rem;display:grid}.section-header .eyebrow{grid-column:1/span 3;padding-top:.9em}.section-title{font-family:var(--font-display-stack);letter-spacing:-.045em;grid-column:4/span 7;font-size:clamp(2.5rem,5.6vw,6rem);font-weight:500;line-height:.98}.section-meta{font-family:var(--font-mono-stack);letter-spacing:.04em;text-transform:uppercase;text-align:right;color:var(--text-muted);grid-column:11/span 2;place-self:end;font-size:.72rem}.focus-intro{grid-template-columns:repeat(12,1fr);column-gap:1.5rem;display:grid}.focus-lead{font-family:var(--font-display-stack);letter-spacing:-.03em;grid-column:4/span 8;font-size:clamp(1.5rem,2.7vw,2.75rem);font-weight:400;line-height:1.18}.focus-lead em{color:var(--accent)}.focus-list{margin-top:var(--stack-lg);border-bottom:1px solid var(--line-dark)}.focus-item{grid-template-columns:repeat(12,1fr);align-items:baseline;column-gap:1.5rem;padding:clamp(1.75rem,2.4vw,2.5rem) 0;display:grid;position:relative}.focus-item:before{background:var(--line-dark)}.focus-index{font-family:var(--font-mono-stack);letter-spacing:.04em;color:var(--bone-faint);grid-column:1/span 3;font-size:.72rem;transition:color .4s}.focus-title{font-family:var(--font-display-stack);letter-spacing:-.03em;transition:transform .5s var(--ease);grid-column:4/span 4;font-size:clamp(1.35rem,2vw,2rem);font-weight:500;line-height:1.1}.focus-desc{max-width:46ch;color:var(--bone-muted);grid-column:8/span 5;font-size:.95rem;line-height:1.6}.focus-item:hover .focus-index{color:var(--accent)}.focus-item:hover .focus-title{transform:translate(8px)}.projects{gap:var(--stack-sm);flex-direction:column;display:flex}.project{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);grid-template-columns:repeat(12,1fr);gap:2.5rem 1.5rem;padding:clamp(24px,3vw,48px);display:grid}.project-side{flex-direction:column;grid-column:1/span 5;gap:1rem;display:flex}.project-title{max-width:16ch;font-family:var(--font-display-stack);letter-spacing:-.04em;font-size:clamp(1.75rem,2.8vw,2.9rem);font-weight:500;line-height:1.04}.project-context{color:var(--text-muted);font-size:.9rem}.project-tags{flex-wrap:wrap;gap:.4rem;margin-top:auto;padding-top:1.5rem;display:flex}.project-main{gap:var(--stack-md);flex-direction:column;grid-column:7/span 6;display:flex}.pipeline{grid-template-columns:repeat(5,1fr);gap:.4rem;display:grid}.pipeline-step{border-top:2px solid var(--line);font-family:var(--font-mono-stack);letter-spacing:.02em;text-transform:uppercase;flex-direction:column;gap:.35rem;padding-top:.75rem;font-size:.68rem;line-height:1.35;display:flex;position:relative}.pipeline-num{color:var(--text-faint)}.pipeline-step:before{content:"";background:var(--ink);height:2px;position:absolute;top:-2px;left:0;right:0}.pipeline-step:last-child{color:var(--accent)}.pipeline-step:last-child:before{background:var(--accent)}.project-summary{letter-spacing:-.01em;color:#0a0a0ac7;max-width:46ch;font-size:clamp(1.05rem,1.25vw,1.25rem);line-height:1.5}.exp-points li{color:#0a0a0ab8;padding-left:1.5rem;font-size:.95rem;line-height:1.6;position:relative}.exp-points li:before{content:"";background:var(--text-faint);width:.6rem;height:1px;position:absolute;top:.8em;left:0}.exp-list{border-bottom:1px solid var(--line)}.exp-item{position:relative}.exp-row,.exp-panel-inner{grid-template-columns:repeat(12,1fr);column-gap:1.5rem;display:grid}.exp-period{grid-column:1/span 3}.exp-main{grid-column:4/span 6}.exp-location{grid-column:10/span 2}.exp-icon{grid-column:12}.exp-row{text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;width:100%;padding:clamp(1.5rem,2.5vw,2.25rem) 0}.exp-period,.exp-location{font-family:var(--font-mono-stack);letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);font-size:.72rem}.exp-main{flex-direction:column;gap:.35rem;display:flex}.exp-company{font-family:var(--font-display-stack);letter-spacing:-.04em;transition:transform .5s var(--ease);font-size:clamp(1.6rem,2.8vw,2.75rem);font-weight:500;line-height:1.05}.exp-role{color:var(--text-muted);font-size:.9rem}.exp-row:hover .exp-company{transform:translate(8px)}.exp-icon{border:1px solid var(--line);border-radius:50%;justify-self:end;width:36px;height:36px;transition:background-color .4s,border-color .4s;position:relative}.exp-icon:before,.exp-icon:after{content:"";width:12px;height:1.5px;transition:transform .4s var(--ease);background:currentColor;margin:-.75px 0 0 -6px;position:absolute;top:50%;left:50%}.exp-icon:after{transform:rotate(90deg)}.exp-row:hover .exp-icon{border-color:var(--line-strong)}.exp-item--open .exp-icon{background:var(--ink);border-color:var(--ink);color:var(--bone)}.exp-item--open .exp-icon:after{transform:rotate(0)}.exp-panel{transition:grid-template-rows .6s var(--ease);grid-template-rows:0fr;display:grid}.exp-item--open .exp-panel{grid-template-rows:1fr}.exp-panel-inner{min-height:0;overflow:hidden}.exp-points{opacity:0;flex-direction:column;grid-column:4/span 8;gap:.75rem;padding-bottom:2.25rem;transition:opacity .4s;display:flex}.exp-item--open .exp-points{opacity:1;transition-delay:.15s}.skills{grid-template-columns:repeat(3,1fr);gap:1.5rem;display:grid}.skill-group{padding-top:1.25rem;position:relative}.skill-group:before{background:var(--ink)}.skill-title{font-family:var(--font-display-stack);letter-spacing:-.03em;align-items:baseline;gap:.75rem;margin-bottom:1.5rem;font-size:1.35rem;font-weight:500;display:flex}.skill-items{flex-wrap:wrap;gap:.5rem;display:flex}.edu{margin-top:var(--stack-lg)}.edu-grid{margin-top:var(--stack-md);grid-template-columns:repeat(2,1fr);gap:1rem;display:grid}.edu-card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);flex-direction:column;padding:clamp(22px,2.5vw,36px);display:flex}.edu-top{justify-content:space-between;align-items:baseline;margin-bottom:clamp(1.25rem,2vw,2rem);display:flex}.edu-year{font-family:var(--font-display-stack);letter-spacing:-.05em;font-size:clamp(2.5rem,4vw,4rem);font-weight:500;line-height:1}.edu-degree{font-family:var(--font-display-stack);letter-spacing:-.03em;font-size:1.4rem;font-weight:500}.edu-school{color:var(--text-muted);margin-top:.2rem;font-size:.9rem}.contact{padding:var(--gutter);background:var(--bone)}.contact-panel{min-height:calc(100svh - 2 * var(--gutter));border-radius:var(--radius-lg);background:var(--ink);color:var(--bone);flex-direction:column;padding:clamp(28px,4vw,64px);display:flex;position:relative;overflow:hidden}.contact-top{z-index:1;flex-direction:column;align-items:flex-start;margin-bottom:clamp(4rem,8vw,8rem);display:flex;position:relative}.contact .eyebrow{color:var(--bone-faint)}.contact-line{display:block}.contact-title{font-family:var(--font-display-stack);letter-spacing:-.05em;margin-top:clamp(2rem,4vw,4rem);font-size:clamp(3rem,7.6vw,8.5rem);font-weight:500;line-height:.94}.contact-desc{max-width:44ch;color:var(--bone-muted);margin-top:2rem;font-size:1rem;line-height:1.6}.contact-email{max-width:100%;font-family:var(--font-display-stack);letter-spacing:-.035em;align-items:center;gap:.6em;margin-top:clamp(2.5rem,5vw,4.5rem);font-size:clamp(1.25rem,3.4vw,3.25rem);font-weight:500;line-height:1.1;display:inline-flex}.contact-email span{overflow-wrap:anywhere;transition:background-size .6s var(--ease);background:linear-gradient(currentColor,currentColor) 0 100%/0% 1px no-repeat;padding-bottom:.08em}.contact-email:hover span{background-size:100% 1px}.contact-arrow{width:.85em;height:.85em;transition:transform .5s var(--ease);flex-shrink:0}.contact-email:hover .contact-arrow{transform:translate(6px,-6px)}.contact-actions{flex-wrap:wrap;gap:.6rem;margin-top:2.25rem;display:flex}.contact-bottom{z-index:1;border-top:1px solid var(--line-dark);font-family:var(--font-mono-stack);letter-spacing:.04em;text-transform:uppercase;color:var(--bone-muted);justify-content:space-between;align-items:center;gap:1.5rem;margin-top:auto;padding-top:1.5rem;font-size:.72rem;display:flex;position:relative}.contact-bottom-left{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.contact-bottom-left .dot{opacity:.4}.contact-socials{gap:.5rem;display:flex}.social-pill{border:1px solid var(--line-dark);border-radius:99px;align-items:center;gap:.45rem;padding:.55rem 1rem;transition:border-color .3s,background-color .3s,color .3s;display:inline-flex}.social-pill .icon{transition:transform .4s var(--ease);font-size:.95em}.social-pill:hover .icon{transform:translate(2px,-2px)}.social-pill:hover{border-color:var(--bone-faint);color:var(--bone);background:#f5f4f00f}.contact-watermark{z-index:0;font-family:var(--font-display-stack);letter-spacing:-.06em;color:#f5f4f008;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:clamp(6rem,24vw,26rem);font-weight:600;line-height:.75;position:absolute;bottom:-.1em;right:-.04em}@media (max-width:1100px){.project-side,.project-main{grid-column:1/-1}.project-title{max-width:22ch}.skills{grid-template-columns:1fr;gap:2.5rem}}@media (max-width:900px){.hero-display{font-size:clamp(3.75rem,15vw,8rem)}.section-header .eyebrow,.section-title,.section-meta,.focus-lead{grid-column:1/-1}.section-header .eyebrow{padding-top:0}.section-meta{text-align:left;justify-self:start}.focus-index,.focus-title{grid-column:1/-1;margin-bottom:.75rem}.focus-desc{grid-column:1/-1}.exp-row,.exp-panel-inner{grid-template-columns:1fr 40px;row-gap:.6rem}.exp-period{grid-area:1/1}.exp-main{grid-area:2/1}.exp-location{grid-area:3/1}.exp-icon{grid-area:1/2/span 3}.exp-points{grid-column:1/-1}.edu-grid{grid-template-columns:1fr}.contact-bottom{flex-direction:column;align-items:flex-start}}@media (max-width:640px){:root{--section-y:64px;--stack-lg:44px;--stack-md:24px;--stack-sm:16px}.navbar-title-role{display:none}.hero-card{height:auto;min-height:0}.hero-content{padding-top:72px}.hero-display{margin-bottom:16px;font-size:clamp(2.25rem,11vw,3.5rem)}.focus-item{grid-template-columns:auto 1fr;gap:.5rem .9rem;padding:1.25rem 0}.focus-index{grid-column:1;margin-bottom:0}.focus-title{grid-column:2;margin-bottom:0}.focus-desc{grid-column:2;font-size:.9rem}.project{row-gap:1.75rem;padding:1.25rem}.project-tags{padding-top:.5rem}.pipeline{flex-wrap:wrap;gap:.35rem;display:flex}.pipeline-step{border:1px solid var(--line);isolation:isolate;border-radius:99px;flex-direction:row;gap:.4rem;padding:.4rem .65rem;overflow:hidden}.pipeline-step:before{z-index:-1;border-radius:inherit;background:#0a0a0a0d;width:auto;height:auto;inset:0}.pipeline-step:last-child{border-color:color-mix(in srgb, var(--accent) 45%, transparent)}.pipeline-step:last-child:before{background:color-mix(in srgb, var(--accent) 10%, transparent)}.exp-points li{font-size:.9rem}.exp-row{grid-template-columns:auto 1fr 36px;grid-template-areas:"main main icon""period location icon";gap:.55rem .75rem;padding:1.25rem 0}.exp-main{grid-area:main}.exp-period{grid-area:period}.exp-location{grid-area:location}.exp-location:before{content:"·";color:var(--text-faint);margin-right:.75rem}.exp-icon{grid-area:icon;width:32px;height:32px}.exp-company{font-size:1.6rem}.exp-points{padding-bottom:1.5rem}.skills{gap:2rem}.skill-title{margin-bottom:1rem;font-size:1.2rem}.pill{padding:.36em .8em;font-size:.78rem}.skill-items{gap:.4rem}.edu-grid{gap:.6rem}.edu-card{padding:1.25rem}.edu-top{margin-bottom:1.25rem}.edu-year{font-size:2.25rem}.contact-panel{min-height:0;padding:1.5rem 1.25rem}.contact-top{margin-bottom:2.5rem}.contact-title,.contact-desc{margin-top:1.25rem}.contact-email{margin-top:1.75rem}.contact-actions{margin-top:1.5rem}.contact-actions .btn{justify-content:space-between;width:100%}.contact-bottom{gap:1rem;padding-top:1.25rem}.contact-bottom-left{flex-direction:column;align-items:flex-start;gap:.35rem}.contact-bottom-left .dot{display:none}.contact-socials{width:100%}.social-pill{flex:1;justify-content:center}}@media (prefers-reduced-motion:reduce){.js [data-reveal],.js [data-reveal=split] .w>span,.js [data-reveal]:before{opacity:1;transform:none!important}.scroll-progress{display:none}*,:before,:after{transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important}}
