@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-greek-wght-normal.Bw9x6K1M.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.woff2)format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-wght-normal.B9CIFXIH.woff2)format("woff2-variations");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}:root{--bg:#0b0b0b;--bg-raised:#141414;--surface:#141414;--border:#262626;--border-strong:#3d3d3d;--text:#f2f1ee;--text-dim:#a8a6a1;--text-faint:#6f6d69;--accent:#f2f1ee;--accent-dim:#a8a6a1;--accent-glow:transparent;--danger:#ff6b6b;--ink:#f2f1ee;--ink-text:#0b0b0b;--bg-translucent:#0b0b0bd1;--font-display:"Inter Variable", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-body:"Inter Variable", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono Variable", ui-monospace, "SF Mono", Menlo, monospace;--weight-display:800;--weight-body:400;--weight-normal:400;--weight-medium:500;--weight-bold:700;--text-xs:.8125rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--leading-body:1.6;--leading-tight:.92;--tracking-display:-.035em;--tracking-label:.12em;--display-hero:clamp(3.5rem, 13vw, 11rem);--display-section:clamp(2.5rem, 9vw, 7rem);--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--section-gap:clamp(2rem, 4vw, 3.5rem);--page-pad:clamp(1.25rem, 4vw, 3rem);--radius-sm:8px;--radius-md:12px;--radius:12px;--radius-lg:12px;--maxw:1280px;--dur-fast:.12s;--dur:.24s;--ease:cubic-bezier(.22, 1, .36, 1)}*,:before,:after{box-sizing:border-box}*{margin:0}html{color-scheme:dark;-moz-tab-size:4;tab-size:4;overscroll-behavior:none;background:var(--bg);scroll-behavior:smooth;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;scroll-padding-top:6rem;overflow-x:clip}img,svg,video{max-width:100%;display:block}img{pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none}input,button,textarea,select{font:inherit;color:inherit;touch-action:manipulation}button,[role=button],a,summary,label,[tabindex]{touch-action:manipulation}@media (width<=48rem){input:not([type=checkbox]):not([type=radio]),textarea,select{font-size:16px!important}}input,textarea,[contenteditable=true],#contact,#contact *{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:var(--text-base);font-weight:var(--weight-body);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;min-height:100dvh;overflow-x:clip}main{z-index:1;position:relative}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:var(--weight-display);text-transform:uppercase;letter-spacing:var(--tracking-display);line-height:var(--leading-tight);color:var(--text)}h3,h4,h5,h6{font-weight:var(--weight-medium);letter-spacing:var(--tracking-label);line-height:var(--leading-body)}a{color:inherit}.prose a{text-underline-offset:.15em;transition:text-decoration-color var(--dur-fast) var(--ease);text-decoration:underline #0000}.prose a:hover,.prose a:focus-visible{text-decoration-color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius)}a:focus:not(:focus-visible),button:focus:not(:focus-visible),summary:focus:not(:focus-visible){outline:none}.u-mono-label{font-family:var(--font-mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--accent)}.u-visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{left:var(--space-2);top:var(--space-2);z-index:100;padding:var(--space-2) var(--space-4);background:var(--surface);border:1px solid var(--accent);border-radius:var(--radius);font-family:var(--font-mono);font-size:var(--text-sm);transition:transform var(--dur-fast) var(--ease);position:absolute;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.motion-cursor,.motion-cursor:popover-open{display:none;inset:unset!important;z-index:2147483647!important;pointer-events:none!important;mix-blend-mode:difference!important;background:0 0!important;border:1.5px solid #fff!important;border-radius:50%!important;width:20px!important;height:20px!important;margin:-10px 0 0 -10px!important;padding:0!important;position:fixed!important;top:0!important;left:0!important;overflow:visible!important;box-shadow:0 0 10px #fff6!important}.motion-cursor::backdrop{background:0 0!important;display:none!important}@media (pointer:fine){.motion-cursor-active .motion-cursor,.motion-cursor-active .motion-cursor:popover-open{display:block!important}html.motion-cursor-active,html.motion-cursor-active body,html.motion-cursor-active *,html.motion-cursor-active :before,html.motion-cursor-active :after,html.motion-cursor-active input,html.motion-cursor-active textarea,html.motion-cursor-active select,html.motion-cursor-active button,html.motion-cursor-active a,html.motion-cursor-active summary,html.motion-cursor-active dialog,html.motion-cursor-active dialog *,html.motion-cursor-active dialog::backdrop{cursor:none!important}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (prefers-reduced-transparency:reduce){.site-nav{background:var(--bg);backdrop-filter:none}}@media (forced-colors:active){.site-nav{backdrop-filter:none;background:canvas}.motion-cursor-active .motion-cursor{display:none}.motion-cursor-active,.motion-cursor-active a,.motion-cursor-active button,.motion-cursor-active summary{cursor:auto}}#nl-badge-frame,#nl-hud-frame,iframe[title="Powered by Netlify"],iframe[title=Netlify],[data-netlify-drawer],netlify-drawer{visibility:hidden!important;pointer-events:none!important;opacity:0!important;width:0!important;height:0!important;display:none!important}dialog[open]::backdrop{animation:.35s cubic-bezier(.16,1,.3,1) forwards backdropEnter}@keyframes backdropEnter{0%{opacity:0;-webkit-backdrop-filter:blur()}to{opacity:1;-webkit-backdrop-filter:blur(10px)}}@media (prefers-reduced-motion:reduce){dialog[open]::backdrop{animation:none}}button:not(:disabled),[role=button],.card__link-btn,.card__case-study-btn,.note-card__read-btn,.site-nav__cv-btn,.site-nav__recruiter-btn,.site-nav__terminal-btn,.rm-tab-btn,.cs-dialog__dismiss-btn,.note-dialog__dismiss-btn,.note-dialog__close,.cs-dialog__close,.recruiter-dialog__close,.site-nav__toggle{transition:transform .18s cubic-bezier(.16,1,.3,1),background .18s,border-color .18s,color .18s,box-shadow .18s,opacity .18s}button:not(:disabled):not(.projects__stage-arrow):active,[role=button]:active,.card__link-btn:active,.card__case-study-btn:active,.note-card__read-btn:active,.site-nav__cv-btn:active,.site-nav__recruiter-btn:active,.site-nav__terminal-btn:active,.rm-tab-btn:active,.cs-dialog__dismiss-btn:active,.note-dialog__dismiss-btn:active,.note-dialog__close:active,.cs-dialog__close:active,.recruiter-dialog__close:active,.site-nav__toggle:active{transform:scale(.95)!important}@media (prefers-reduced-motion:reduce){dialog[open],dialog[open]::backdrop{animation:none!important}button:not(:disabled):not(.projects__stage-arrow):active,[role=button]:active,.card__link-btn:active,.card__case-study-btn:active,.note-card__read-btn:active,.site-nav__cv-btn:active,.site-nav__recruiter-btn:active,.site-nav__terminal-btn:active{transform:none!important}}[data-lift]{transition:border-color var(--dur-fast) var(--ease), background-color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease)}@media (hover:hover) and (pointer:fine){[data-lift]:hover{transform:translateY(-2px)}[data-lift]:hover:not(:where(p,span,li,h1,h2,h3,h4)){border-color:var(--border-strong)}}[data-lift]:focus-visible{transform:translateY(-2px)}@media (prefers-reduced-motion:reduce){[data-lift]{transition:none}[data-lift]:hover,[data-lift]:focus-visible{transform:none}}
