*,:before,:after{box-sizing:border-box;margin:0;padding:0}@font-face{font-family:devicon;font-display:swap;src:url(https://cdn.jsdelivr.net/gh/devicons/devicon@v2.16.0/fonts/devicon.ttf)format("truetype")}:root{--color-bg:#0a0a0f;--color-surface:#111118;--color-border:#1e1e2e;--color-accent:#7c3aed;--color-accent-muted:#7c3aed26;--color-accent-glow:#7c3aed59;--color-cyan:#06b6d4;--color-text-primary:#f8f8ff;--color-text-muted:#94a3b8;--color-text-faint:#8b98ab;--color-watermark:#ffffff08;--color-chip-bg:#ffffff0a}.light{--color-bg:#f8f8ff;--color-surface:#fff;--color-border:#e2e8f0;--color-accent:#7c3aed;--color-accent-muted:#7c3aed1a;--color-accent-glow:#7c3aed40;--color-cyan:#0891b2;--color-text-primary:#0f0f1a;--color-text-muted:#475569;--color-text-faint:#5b6878;--color-watermark:#00000008;--color-chip-bg:#0000000a}.light .dot-grid{background-image:radial-gradient(circle,#94a3b8 1px,#0000 1px)}.light ::-webkit-scrollbar-track{background:#f8f8ff}.light ::-webkit-scrollbar-thumb{background:#cbd5e1}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}:focus:not(:focus-visible){outline:none}html{scroll-behavior:smooth}body{background-color:var(--color-bg);color:var(--color-text-primary);font-family:var(--font-body);line-height:1.7;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);line-height:1.2}.dot-grid{background-image:radial-gradient(circle,#1e1e2e 1px,#0000 1px);background-size:32px 32px}.gradient-divider{background:linear-gradient(90deg, transparent, var(--color-accent), transparent);opacity:.4;height:1px}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--color-bg)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-accent)}::selection{background:var(--color-accent-muted);color:var(--color-text-primary)}code,pre{font-family:var(--font-mono)}.hover-accent:hover{color:var(--color-accent)!important}.hover-accent-border:hover{border-color:#7c3aed80!important}.hover-accent-bg:hover{background:#7c3aed14!important}.hover-dim:hover{opacity:.75!important}.btn-primary{background:var(--color-accent);color:#fff;border-radius:10px;align-items:center;gap:8px;padding:13px 28px;font-size:15px;font-weight:600;text-decoration:none;transition:opacity .2s;display:inline-flex}.btn-primary:hover{opacity:.85}.btn-outline{color:var(--color-accent);border:1px solid #7c3aed66;border-radius:10px;align-items:center;gap:8px;padding:13px 28px;font-size:15px;font-weight:600;text-decoration:none;transition:background .2s;display:inline-flex}.btn-outline:hover{background:#7c3aed14}.skill-pill{border:1px solid var(--color-border);background:var(--color-surface);cursor:default;border-radius:100px;align-items:center;gap:8px;padding:6px 14px;transition:transform .15s,border-color .15s,box-shadow .15s;display:inline-flex}.skill-pill:hover{border-color:#7c3aed73;transform:translateY(-2px);box-shadow:0 4px 12px #7c3aed1f}@media (max-width:480px){section{padding-left:16px!important;padding-right:16px!important}}.code-tabs{border-bottom:1px solid var(--color-border);-webkit-overflow-scrolling:touch;scrollbar-width:none;background:#0003;display:flex;overflow-x:auto}.code-tabs::-webkit-scrollbar{display:none}.light .code-tabs{background:#0000000a}.btn-hero-primary{background:var(--color-accent);color:#fff;border-radius:10px;align-items:center;gap:8px;padding:13px 26px;font-size:15px;font-weight:600;text-decoration:none;transition:transform .18s,box-shadow .18s,opacity .18s;display:inline-flex}.btn-hero-primary:hover{transform:translateY(-2px)scale(1.02);box-shadow:0 8px 24px #7c3aed59}.btn-hero-outline{color:var(--color-accent);border:1px solid #7c3aed80;border-radius:10px;align-items:center;gap:8px;padding:13px 26px;font-size:15px;font-weight:600;text-decoration:none;transition:transform .18s,background .18s,box-shadow .18s;display:inline-flex}.btn-hero-outline:hover{background:#7c3aed14;transform:translateY(-2px)scale(1.02);box-shadow:0 4px 16px #7c3aed26}.social-icon-link{color:var(--color-text-faint);transition:color .2s,transform .2s;display:inline-flex}.social-icon-link:hover{color:var(--color-accent);transform:translateY(-2px)}.hero-grid{grid-template-columns:1fr auto;align-items:center;gap:64px;display:grid}.hero-photo-col{display:block}@media (max-width:768px){.hero-grid{gap:40px;grid-template-columns:1fr!important}.hero-photo-col{justify-content:center;display:flex!important}.hero-ctas,.hero-socials,.hero-location{justify-content:center}}@media (max-width:480px){.hero-photo-col{display:none!important}}.page-transition{animation:.35s forwards pageFadeIn}@keyframes pageFadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.scroll-top-btn{background:var(--color-accent);color:#fff;cursor:pointer;z-index:40;border:none;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;transition:transform .2s,opacity .2s;display:flex;position:fixed;bottom:28px;right:24px;box-shadow:0 4px 16px #7c3aed66}.scroll-top-btn:hover{transform:translateY(-3px)}.light .hero-glow{background:radial-gradient(circle,#7c3aed12 0%,#0000 70%)!important}.light .gradient-divider{opacity:.25}.light .skill-pill{background:#fff;border-color:#e2e8f0}.light .skill-pill:hover{border-color:#7c3aed66;box-shadow:0 4px 12px #7c3aed14}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.skip-link{background:var(--color-accent);color:#fff;z-index:100;border-radius:8px;padding:10px 16px;font-size:14px;font-weight:600;text-decoration:none;position:absolute;left:-9999px}.skip-link:focus{top:16px;left:16px}.contact-page-wrap{box-sizing:border-box}.contact-grid{grid-template-columns:1fr 1fr;align-items:start;gap:32px;display:grid}.contact-input{background:var(--color-bg);border:1px solid var(--color-border);width:100%;color:var(--color-text-primary);font-size:15px;font-family:var(--font-body);box-sizing:border-box;border-radius:8px;outline:none;padding:11px 13px;transition:border-color .2s}.contact-input:focus{border-color:var(--color-accent)}.contact-input::placeholder{color:var(--color-text-faint)}@media (max-width:768px){.contact-grid{gap:24px;grid-template-columns:1fr!important}}@media (max-width:480px){.contact-page-wrap{padding-top:90px!important;padding-left:16px!important;padding-right:16px!important}}@media print{nav,footer,.scroll-top-btn,.skip-link,[role=tablist],.cv-page-wrap>div:first-child,button,a[download],.cv-page-wrap>div:first-child,.cv-page-wrap>div:nth-child(2),.cv-page-wrap>div:nth-child(3){display:none!important}html,body{color:#111!important;background:#fff!important;margin:0!important;padding:0!important;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif!important;font-size:10pt!important;line-height:1.4!important}*{box-shadow:none!important;text-shadow:none!important;border-radius:0!important;transition:none!important;animation:none!important}main{margin:0!important;padding:0!important}.cv-page-wrap{max-width:100%!important;margin:0!important;padding:0!important}div[role=tabpanel],div[role=tabpanel]>div,div[role=tabpanel]>div>div{background:#fff!important;border:none!important;border-radius:0!important;margin:0!important;padding:0!important;overflow:visible!important}.cv-header-bar{background:#fff!important;border:none!important;border-bottom:2px solid #111!important;margin-bottom:16pt!important;padding:0 0 12pt!important}h1,h2{color:#111!important;margin-bottom:3pt!important;font-size:13pt!important}h3,h4{color:#111!important;margin-bottom:2pt!important;font-size:10pt!important}p,span,li,a{color:#333!important;font-size:9pt!important;line-height:1.3!important}a{color:#333!important;text-decoration:none!important}ul,ol{margin:4pt 0!important;padding-left:16pt!important}li{margin-bottom:2pt!important}svg{display:none!important}@page{margin:.6in .7in;size:letter}div[role=tabpanel]>div>div>div{break-inside:avoid}}
@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/32687112bd2dd8db-s.0gspg~~t9nou8.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:300 700;font-display:swap;src:url(../media/28868e710e86be81-s.0rx81dn62y51_.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:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.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_606b71ae-module__skceFG__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_606b71ae-module__skceFG__variable{--font-display:"Space Grotesk", "Space Grotesk Fallback"}
@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2c55a0e60120577a-s.0bjc5tiuqdqro.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.0m6w47a4e5dy9.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.11u06r12fd6v_.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.0wxq9webf.ew4.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.067x_6k0k23tk.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.16ipb6fqu393i.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:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.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.0bjc5tiuqdqro.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.0m6w47a4e5dy9.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.11u06r12fd6v_.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.0wxq9webf.ew4.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.067x_6k0k23tk.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.16ipb6fqu393i.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:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.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.0bjc5tiuqdqro.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.0m6w47a4e5dy9.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.11u06r12fd6v_.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.0wxq9webf.ew4.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.067x_6k0k23tk.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.16ipb6fqu393i.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:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.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_517718a9-module__AhDzmq__className{font-family:Inter,Inter Fallback;font-style:normal}.inter_517718a9-module__AhDzmq__variable{--font-body:"Inter", "Inter Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/04c5164763c40239-s.0h-nw9_c8d~-_.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.10hk62x1-0d9n.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.0bmyfaahigzds.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.0-0ft90hthv3~.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.16fk0g~ypa53a.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.0f97p8c3305p~.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.0h-nw9_c8d~-_.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.10hk62x1-0d9n.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.0bmyfaahigzds.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.0-0ft90hthv3~.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.16fk0g~ypa53a.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.0f97p8c3305p~.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_ec76ef60-module__y36ooG__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_ec76ef60-module__y36ooG__variable{--font-mono:"JetBrains Mono", "JetBrains Mono Fallback"}
