@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/04c5164763c40239-s.1zakzi6q17d4o.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.2htf8h-pf57mm.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.3skwie1wjplzh.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.3zhbgtelpa5ua.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.3vf5yzuqk3fsd.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:400;font-display:swap;src:url(../media/051742360c26797e-s.p.1wmoa0e_blxrz.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.1zakzi6q17d4o.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.2htf8h-pf57mm.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.3skwie1wjplzh.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.3zhbgtelpa5ua.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.3vf5yzuqk3fsd.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.1wmoa0e_blxrz.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_a88168b8-module__uxlUeG__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_a88168b8-module__uxlUeG__variable{--font-jetbrains-mono:"JetBrains Mono", "JetBrains Mono Fallback"}
*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:#f8f7f4;overflow-x:hidden}a{color:#8c6a52;text-decoration:none}a:hover{color:#ff8200}.proot{--bg:#f8f7f4;--fg:#111;--muted:#6b6357;--line:#e4e0d7;--panel:#fff;--accent:#ff8200;--secondary:#5cb8b2;--brown:#8c6a52;--panelsoft:#f1efe9;--hero:url(/uploads/hero-light.png);--sky1:#cfe0ea;--sky2:#f6ece6;--nav:#f8f7f4b8;--shadow:0 24px 60px -30px #11111159;--glow:#ff820000}.proot[data-mode=dark]{--bg:#0c0e13;--fg:#f3f1ec;--muted:#9aa0ac;--line:#20242e;--panel:#141821;--panelsoft:#10131a;--hero:url(/uploads/hero-dark.png);--sky1:#141a2b;--sky2:#0c0e13;--nav:#0c0e13b8;--shadow:0 24px 60px -28px #000000b3}.proot[data-mode=cyber]{--bg:#05060c;--fg:#e9fbff;--muted:#7fd3d0;--line:#17303a;--panel:#0a1018;--panelsoft:#070b12;--accent:#ff2fb0;--secondary:#25e6ff;--brown:#b06bff;--hero:url(/uploads/hero-dark.png);--sky1:#0a0f22;--sky2:#05060c;--nav:#05060cbf;--shadow:0 24px 70px -24px #25e6ff59}.proot[data-mode=cyber] *{text-shadow:0 0 12px #25e6ff1f}.proot *{transition:background-color .5s,border-color .5s,color .5s,box-shadow .5s,fill .5s}[data-reveal]{opacity:0;transition:opacity .9s cubic-bezier(.16,.84,.34,1),transform .9s cubic-bezier(.16,.84,.34,1);transform:translateY(34px)}[data-reveal].in{opacity:1;transform:none}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-18px)}}@keyframes steam{0%{opacity:0;transform:translateY(0)scaleX(1)}25%{opacity:.5}to{opacity:0;transform:translateY(-46px)scaleX(1.9)}}@keyframes fall{0%{opacity:0;transform:translateY(-10px)translate(0)}10%{opacity:1}to{opacity:.15;transform:translateY(105vh)translate(30px)}}@keyframes nodepulse{0%,to{box-shadow:0 0 0 0 var(--pc)}50%{box-shadow:0 0 26px 4px var(--pc)}}@keyframes flowdash{to{background-position:-40px 0}}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes wave{0%,to{transform:rotate(8deg)}50%{transform:rotate(-26deg)}}@keyframes walk{0%{left:-8%}to{left:108%}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes sipTilt{0%,to{transform:rotate(0)}30%,70%{transform:rotate(-16deg)translateY(-6px)}}@keyframes scrolldot{0%{opacity:0;transform:translateY(0)}30%{opacity:1}to{opacity:0;transform:translateY(20px)}}::selection{background:var(--accent,#ff8200);color:#fff}.connect-link{transition:border-color .25s,transform .25s,background-color .5s,color .5s}.connect-link:hover{border-color:var(--hover-color);transform:translateY(-3px)}.project-card:hover{transform:translateY(-6px)}.skill-pill{transition:border-color .25s,transform .25s,background-color .5s,color .5s}.skill-pill:hover{border-color:var(--accent);transform:translateY(-3px)}[data-pincard]{opacity:0;pointer-events:none;transition:opacity .25s,transform .25s,background-color .5s,border-color .5s,color .5s}[data-pin]:hover [data-pincard]{opacity:1;pointer-events:auto;transform:translate(-50%)translateY(-4px)}[data-pin]:hover{z-index:20}
