@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/32687112bd2dd8db-s.1gepa_7fcx9fm.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.2eksvhm1z0jwa.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.2cyn07wtgehh0.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_138bd6dc-module__-yFhkq__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_138bd6dc-module__-yFhkq__variable{--font-grotesk:"Space Grotesk", "Space Grotesk Fallback"}
@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/13bf9871fe164e7f-s.2f7nqdagzwx2-.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:100 800;font-display:swap;src:url(../media/cc545e633e20c56d-s.176arc174-8zp.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:100 800;font-display:swap;src:url(../media/71b036adf157cdcf-s.0bp8oijd_gu96.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:100 800;font-display:swap;src:url(../media/89b21bb081cb7469-s.1fby2rem9ngyr.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:100 800;font-display:swap;src:url(../media/3fe682a82f50d426-s.0vfdmo25voy_0.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:100 800;font-display:swap;src:url(../media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.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_80bdd358-module__UtJNba__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_80bdd358-module__UtJNba__variable{--font-jetbrains:"JetBrains Mono", "JetBrains Mono Fallback"}
.portfolio-root{--font-mono:var(--font-jetbrains);font-family:var(--font-grotesk), ui-sans-serif, system-ui, sans-serif;--tp-bg:#0a0e14;--tp-bg-soft:#0d131c;--tp-panel:#101722;--tp-line:#e2e8f017;--tp-line-strong:#e2e8f02b;--tp-text:#e7ecf3;--tp-muted:#98a5b7;--tp-faint:#76859b;--tp-accent:#4cc2f7;--tp-accent-strong:#2eb2ea;--tp-accent-dim:#4cc2f71f;--tp-on-accent:#071018;background:var(--tp-bg);color:var(--tp-text);min-height:100vh}.portfolio-root ::selection{color:var(--tp-text);background:#4cc2f74d}.portfolio-root :focus-visible{outline:2px solid var(--tp-accent);outline-offset:3px;border-radius:2px}.portfolio-root section[id],.portfolio-root footer[id]{scroll-margin-top:5rem}.portfolio-root::-webkit-scrollbar{width:10px}.portfolio-root::-webkit-scrollbar-track{background:var(--tp-bg)}.portfolio-root::-webkit-scrollbar-thumb{background:#27313f;border-radius:9999px}.portfolio-root::-webkit-scrollbar-thumb:hover{background:#333f52}.tp-text{color:var(--tp-text)}.tp-muted{color:var(--tp-muted)}.tp-faint{color:var(--tp-faint)}.tp-accent{color:var(--tp-accent)}.tp-bg-soft{background:var(--tp-bg-soft)}.tp-border{border-color:var(--tp-line)}.tp-border-strong{border-color:var(--tp-line-strong)}.tp-hairline{background:var(--tp-line);height:1px}.tp-eyebrow{font-family:var(--font-jetbrains);letter-spacing:.28em;text-transform:uppercase;color:var(--tp-accent);font-size:.6875rem;font-weight:500}.tp-mono-label{font-family:var(--font-jetbrains);letter-spacing:.08em;text-transform:uppercase;color:var(--tp-faint);font-size:.75rem}.tp-btn{cursor:pointer;border-radius:.375rem;align-items:center;gap:.5rem;padding:.8rem 1.5rem;font-size:.875rem;font-weight:500;line-height:1;transition:all .25s;display:inline-flex}.tp-btn-primary{background:var(--tp-accent);color:var(--tp-on-accent)}.tp-btn-primary:hover{background:var(--tp-accent-strong)}.tp-btn-ghost{border:1px solid var(--tp-line-strong);color:var(--tp-text);background:0 0}.tp-btn-ghost:hover{border-color:var(--tp-accent);color:var(--tp-accent)}.tp-link{color:var(--tp-text);text-decoration:underline;-webkit-text-decoration-color:var(--tp-line-strong);text-decoration-color:var(--tp-line-strong);text-underline-offset:4px;text-decoration-thickness:1px;transition:color .2s,text-decoration-color .2s}.tp-link:hover{color:var(--tp-accent);-webkit-text-decoration-color:var(--tp-accent);text-decoration-color:var(--tp-accent)}.tp-marquee{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.tp-marquee-track{width:max-content;animation:40s linear infinite tp-marquee;display:flex}.tp-marquee:hover .tp-marquee-track{animation-play-state:paused}@keyframes tp-marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}.tp-contours{color:var(--tp-text);opacity:.05}@media (prefers-reduced-motion:reduce){.tp-marquee-track{flex-wrap:wrap;justify-content:center;width:auto;animation:none}.tp-btn,.tp-btn-primary,.tp-btn-ghost,.tp-link{transition:none}}
