@font-face{font-family:Martian 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:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/martian-mono-cyrillic-wght-normal-B84CD5C_.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/martian-mono-latin-ext-wght-normal-DlL6xMw5.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:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/martian-mono-latin-wght-normal-5W32yIyr.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{--paper:#141416;--ink:#ededee;--secondary:#b7b7c2;--muted:#9696a3;--pixel:8px;--mono:"Martian Mono Variable", "Courier New", monospace;font-family:var(--mono);color:var(--ink);background:var(--paper);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{min-width:320px;margin:0;overflow-x:clip}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:0;padding:0}h1,h2,p{margin:0}button:focus-visible,a:focus-visible,.project-media__surface:focus-visible{outline-offset:6px;outline:2px dashed}::selection{color:var(--paper);background:var(--ink)}.portfolio{--portfolio-top:clamp(52px, 7.4vh, 92px);width:calc(100% - clamp(64px,11.4vw,216px));max-width:1600px;min-height:100svh;padding-block:var(--portfolio-top) 36px;grid-template-columns:minmax(0,.43fr) minmax(0,.57fr);gap:clamp(36px,5.2vw,100px);margin-inline:auto;display:grid;position:relative}.profile h1{letter-spacing:-.085em;font-size:clamp(49px,5.55vw,98px);font-weight:800;line-height:1.04}.profile h1 span{overflow-wrap:anywhere;display:block}.profile__bio{letter-spacing:-.055em;margin-top:17px;font-size:clamp(15px,1.5vw,24px);line-height:1.6}.company-link{font-weight:700}.text-link{font-weight:600;position:relative}.text-link:hover{text-underline-offset:5px;text-decoration:underline}a.company-link{transition:color .2s}a.company-link:hover{color:#ba80ff;text-decoration:none}.social-links{z-index:2;letter-spacing:-.025em;align-items:center;gap:20px;margin-top:12px;font-size:13px;line-height:1.5;display:flex;position:relative}.social-links__item{position:relative}.social-links__control{width:44px;height:44px;color:var(--ink);place-items:center;transition:color .16s,transform .16s;display:grid;position:relative}.social-links__control.is-active{transform:translateY(-2px)}.social-links__control.is-unavailable{color:var(--muted);cursor:default}.social-links__control:focus-visible{outline-offset:0}.social-links__detail{--tooltip-border:var(--secondary);border:1px solid var(--tooltip-border);background:var(--paper);width:max-content;max-width:calc(100vw - 32px);color:var(--ink);white-space:nowrap;-webkit-user-select:text;user-select:text;visibility:hidden;opacity:0;border-radius:0;padding:7px 12px;font-weight:500;transition:opacity .16s,transform .18s,visibility .18s;display:block;position:absolute;top:100%;left:0;transform:translateY(-4px)}.social-links__detail:before{content:"";border-top:1px solid var(--tooltip-border);border-left:1px solid var(--tooltip-border);background:var(--paper);width:8px;height:8px;position:absolute;top:-5px;left:17px;transform:rotate(45deg)}.social-links__detail.is-visible{visibility:visible;opacity:1;transform:translateY(0)}.social-links__detail.is-unavailable{--tooltip-border:var(--muted);color:var(--muted)}.project-list{--menu-pixel:10px;isolation:isolate;align-self:center;position:relative}.project-list ul{margin:0;padding:0 0 0 24px;list-style:none}.project-list li+li{margin-top:clamp(10px,1.2vh,14px)}.project-row{--project-title-size:clamp(18px, 1.9vw, 32px);text-align:left;width:100%;padding:8px 0;display:block;position:relative}.project-row:before{content:"";left:-24px;top:calc(8px + var(--project-title-size) * .625 - var(--menu-pixel) / 2);width:var(--menu-pixel);height:var(--menu-pixel);pointer-events:none;background:var(--ink);opacity:0;transition:opacity .24s;position:absolute}.project-row__title{font-size:var(--project-title-size);letter-spacing:-.07em;color:var(--secondary);font-weight:750;line-height:1.25;transition:color .24s;display:table;position:relative}.project-row__gradient{pointer-events:none;background-image:var(--project-gradient);color:#0000;opacity:0;background-size:250% 250%;-webkit-background-clip:text;background-clip:text;transition:opacity .24s;animation:5s ease-in-out infinite alternate paused project-text-flow;position:absolute;inset:0}.project-row__meta{color:var(--secondary);letter-spacing:-.055em;margin-top:6px;font-size:clamp(12px,1.2vw,20px);font-weight:400;line-height:1.45;display:block}.project-row.is-active .project-row__title{color:#0000}.project-row.is-active .project-row__gradient{opacity:1;animation-play-state:running}.project-focus{flex-direction:column;justify-content:center;min-width:0;padding-top:clamp(64px,8vh,96px);display:flex;position:relative}.project-focus .project-media,.project-focus .project-details{flex-shrink:0}.project-focus .project-media{min-height:0}.project-focus .project-details{margin-top:clamp(45px,6vh,65px)}.project-media{-webkit-user-select:none;user-select:none;--rest-angle:1.6deg;width:100%;aspect-ratio:var(--media-ratio,1.6);perspective:1000px;position:relative}.project-media__card{z-index:1;width:100%;height:100%;transform:translateY(calc(var(--hover,0) * -4px)) rotateX(var(--rotate-x,0deg)) rotateY(var(--rotate-y,0deg)) rotateZ(calc(var(--rest-angle) + var(--rotate-z,0deg))) scale(calc(1 + var(--hover,0) * .025));transform-origin:50%;transform-style:preserve-3d;display:block;position:relative}.project-media__surface{background:#242428;width:100%;height:100%;display:block;position:relative;transform:translateZ(0)}.project-media picture{width:100%;height:100%;display:block}.project-media picture img{object-fit:cover;width:100%;height:100%;display:block}.project-media__logo{aspect-ratio:1;pointer-events:none;border-radius:7px;width:56px;transition:opacity .16s ease-out;position:absolute;bottom:-24px;right:-14px;overflow:hidden;transform:translateZ(2px)rotate(8deg)}.project-media__logo img{object-fit:contain;width:100%;height:100%;transform:scale(var(--logo-image-scale,1));display:block}.project-media__logo--white{background:#fff}.project-media__logo--padded{padding:5px}.project-media.is-switching .project-media__logo{opacity:0}.project-preview{flex-direction:column;min-width:0;display:flex}.project-text-case{--case-accent:var(--ink);letter-spacing:-.045em;flex-shrink:0;min-width:0;font-size:clamp(14px,min(1.55cqw,2.75svh),22px);line-height:1.65}.project-text-case__meta{flex-wrap:wrap;align-items:center;gap:10px 16px;font-size:max(11px,.72em);display:flex}.project-text-case__status{color:var(--case-accent);border:1px solid;border-radius:8px;padding:3px 10px}.project-text-case__date{color:var(--muted)}.project-text-case h2{letter-spacing:-.07em;margin-top:clamp(18px,2.8svh,28px);font-size:1.65em;font-weight:750;line-height:1.25}.project-text-case__contributions{color:var(--secondary);margin:clamp(20px,3svh,32px) 0 0;padding:0;list-style:none}.project-text-case__contributions li{grid-template-columns:6px minmax(0,1fr);gap:16px;display:grid}.project-text-case__contributions li:before{content:"";background:var(--case-accent);width:6px;height:6px;margin-top:calc(.825em - 3px)}.project-text-case__contributions li+li{margin-top:clamp(14px,2.3svh,24px)}.project-text-case__notice{color:var(--muted);margin-top:clamp(24px,3.5svh,36px);font-size:max(11px,.72em);line-height:1.7}.project-details{color:var(--secondary);letter-spacing:-.045em;font-size:clamp(14px,1.38vw,22px);line-height:1.65;position:relative}.project-details__description{max-width:38em}.project-details__stack{color:var(--muted);margin-top:21px;font-size:.84em;line-height:1.7}.project-details--linked .project-details__description{padding-right:56px}.project-details--linked .project-link{position:absolute;top:-10px;right:-18px}.project-link{width:64px;height:64px;color:var(--project-link-color,var(--secondary));flex-shrink:0;place-items:center;display:inline-grid;position:relative}.project-link svg{transition:transform .16s}.project-link__tooltip{z-index:3;border:1px solid var(--secondary);background:var(--paper);color:var(--ink);letter-spacing:-.025em;pointer-events:none;opacity:0;visibility:hidden;padding:7px 12px;font-size:12px;line-height:1.5;transition:opacity .14s,visibility .14s;position:absolute;bottom:calc(100% + 4px);right:10px}.project-link:focus-visible{outline-offset:0}.project-link:focus-visible svg{transform:translate(2px,-2px)}.project-link:focus-visible .project-link__tooltip{opacity:1;visibility:visible}@media (hover:hover){.project-link:hover svg{transform:translate(2px,-2px)}.project-link:hover .project-link__tooltip{opacity:1;visibility:visible}}.preview-error{z-index:3;top:var(--contact-space,128px);border:1px solid var(--muted);background:var(--paper);color:var(--secondary);padding:8px 12px;font-size:12px;line-height:1.6;position:absolute;inset-inline:0}.preview-error button{text-underline-offset:3px;min-height:44px;margin-left:8px;text-decoration:underline}@media (width>=768px){#app{width:100%;overflow:clip}.portfolio{--portfolio-top:clamp(24px, 7.4svh, 92px);--portfolio-bottom:clamp(20px, 3svh, 36px);--preview-gap:clamp(24px, 6svh, 65px);width:min(1600px,100% - clamp(64px,11.4vw,216px),max(680px,200svh - 400px));max-width:none;padding-block:var(--portfolio-top) var(--portfolio-bottom);column-gap:clamp(36px,5.2vw,100px);container-type:inline-size}.portfolio__left{grid-template-rows:auto minmax(min-content,1fr);row-gap:clamp(20px,4svh,60px);min-width:0;display:grid}.profile h1{font-size:clamp(40px,min(6.3cqw,10svh),98px)}.profile__bio{margin-top:clamp(10px,1.6svh,17px);font-size:clamp(13px,min(1.7cqw,2.5svh),24px)}.project-list ul{padding-left:0}.project-list .pixel-selection{left:-24px}.project-list li+li{margin-top:clamp(4px,.6svh,10px)}.project-row{--project-title-size:clamp(17px, min(2.15cqw, 3svh), 32px);--row-padding:clamp(4px, .7svh, 8px);padding-block:var(--row-padding)}.project-row:before{top:calc(var(--row-padding) + var(--project-title-size) * .625 - var(--menu-pixel) / 2)}.project-row__meta{margin-top:clamp(4px,.67svh,6px);font-size:clamp(12px,min(1.36cqw,2svh),20px)}.project-focus{--contact-space:128px;padding-top:var(--contact-space)}.project-focus .project-media{width:min(100%, max(256px, (100svh - var(--portfolio-top) - var(--portfolio-bottom) - var(--contact-space) - var(--preview-gap) - var(--description-height,160px)) * var(--media-ratio,1.6)));align-self:center}.project-focus .project-details{margin-top:var(--preview-gap)}.project-details{font-size:clamp(14px,min(1.55cqw,2.75svh),22px)}.project-details__stack{margin-top:clamp(12px,2.1svh,21px);font-size:max(12px,.84em)}.social-links{top:calc(var(--portfolio-top) + 8px);margin-top:0;position:absolute;right:-8px}.social-links__detail{left:auto;right:0}.social-links__detail:before{left:auto;right:17px}}@media (width<=767px){:root{--pixel:6px}.portfolio{width:auto;min-height:100svh;padding:33px 16px 48px;display:block}.profile h1{letter-spacing:-.075em;font-size:clamp(38px,10.6vw,66px);line-height:1.1}.profile__bio{margin-top:15px;font-size:clamp(13px,3.4vw,21px);line-height:1.65}.social-links--mobile{width:100%;margin-top:20px;display:block}.social-links--mobile .social-links__destinations{align-items:center;gap:28px;display:flex}.social-links--mobile .social-links__destination{letter-spacing:-.045em;align-items:center;gap:10px;min-height:44px;font-size:13px;font-weight:600;display:inline-flex}.social-links--mobile .social-links__destination.is-unavailable{color:var(--muted);cursor:default}.social-links--mobile svg{flex:0 0 24px}.social-links--mobile .social-links__email-row{justify-content:space-between;align-items:center;gap:8px;margin-top:8px;display:flex}.social-links--mobile .social-links__email{letter-spacing:-.045em;align-items:center;gap:10px;min-width:0;min-height:44px;font-size:clamp(11px,3.15vw,13px);font-weight:400;display:inline-flex}.social-links--mobile .social-links__email span{overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;min-width:0}.social-links--mobile .social-links__copy{letter-spacing:-.04em;min-width:56px;min-height:44px;color:var(--secondary);justify-content:center;align-items:center;padding:0 2px;font-size:11px;font-weight:500;display:inline-flex}.social-links--mobile .social-links__copy-error{color:var(--secondary);margin-top:8px;font-size:11px}.mobile-projects{margin-top:44px}.mobile-project+.mobile-project{margin-top:42px}.project-text-case--mobile{flex-direction:column;font-size:clamp(12px,3.15vw,17px);line-height:1.7;display:flex}.project-text-case--mobile h2{color:var(--case-accent);letter-spacing:-.065em;text-transform:uppercase;order:-1;margin:0 0 14px;font-size:clamp(16px,4.15vw,23px);font-weight:650;line-height:1.45}.project-text-case--mobile .project-text-case__meta{font-size:max(11px,.84em)}.project-text-case--mobile .project-text-case__contributions{margin-top:24px}.project-text-case--mobile .project-text-case__contributions li{gap:12px}.project-text-case--mobile .project-text-case__contributions li+li{margin-top:18px}.project-text-case--mobile .project-text-case__notice{margin-top:24px;font-size:max(11px,.84em)}.project-media--mobile{--rest-angle:0deg;perspective:none;aspect-ratio:var(--media-ratio,1.6)}.project-media--mobile .project-media__card{transform-style:flat;transform:none}.project-media--mobile .project-media__surface{background:0 0;transform:none}.project-media--mobile .project-media__link:focus-visible{outline:2px solid var(--mobile-title-color);outline-offset:5px}.project-media--mobile .project-media__logo{z-index:2;border-radius:4px;width:36px;bottom:-8px;right:-3px;transform:rotate(8deg)}.project-media--mobile .project-media__logo--padded{padding:3px}.mobile-project__heading{justify-content:space-between;align-items:flex-start;gap:10px;margin-top:22px;display:flex}.mobile-project__heading h2{letter-spacing:-.065em;text-transform:uppercase;color:var(--mobile-title-color,var(--ink));flex:1;font-size:clamp(16px,4.15vw,23px);font-weight:650;line-height:1.45}.mobile-project__heading h2>span,.mobile-project__heading .mobile-project__link>span{background-image:var(--project-gradient);color:#0000;background-size:250% 250%;-webkit-background-clip:text;background-clip:text;animation:5s ease-in-out infinite alternate project-text-flow}.mobile-project__link{min-height:44px;color:inherit;justify-content:space-between;align-items:center;gap:12px;margin-block:-10px -4px;text-decoration:none;display:flex}.mobile-project__link svg{color:var(--project-link-color);flex-shrink:0}.mobile-project__link:focus-visible{outline-offset:4px;outline:1px solid}.mobile-project__meta{letter-spacing:-.045em;color:var(--secondary);font-size:clamp(12px,3.15vw,17px);line-height:1.65}.mobile-project .project-details{margin-top:15px;font-size:clamp(12px,3.15vw,17px);line-height:1.7}.project-details__stack{margin-top:11px;font-size:.88em}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.pixel-selection{pointer-events:none;width:var(--menu-pixel);height:var(--menu-pixel);background:var(--selection-color,var(--ink));transition:transform .18s cubic-bezier(.2,.7,.3,1),background-color .18s;position:absolute;top:0;left:0}@media (hover:hover) and (pointer:fine){.project-row:not(.is-active):hover:before{opacity:.2}.project-row:not(.is-active):hover .project-row__title{color:var(--ink)}}@keyframes project-text-flow{0%{background-position:0 30%}to{background-position:100% 70%}}@media (prefers-reduced-motion:reduce){.project-row__gradient,.mobile-project__heading h2>span,.mobile-project__link>span{animation:none!important}}@media (forced-colors:active){.project-row__gradient{display:none}.project-row .project-row__title{color:buttontext!important}.mobile-project__heading h2>span,.mobile-project__link>span{color:canvastext;background:0 0}.pixel-selection{background:buttontext}}.project-row.is-active:focus-visible{outline-color:var(--ink)}.project-media__video{object-fit:cover;opacity:0;pointer-events:none;width:100%;height:100%;transition:opacity .18s ease-out;position:absolute;inset:0}.project-media__video.is-playing{opacity:1}.project-media__webgl{pointer-events:none;position:absolute;overflow:hidden}.project-media__canvas{pointer-events:none;visibility:hidden;position:absolute}.project-media.has-webgl .project-media__canvas{visibility:visible}.project-media.has-webgl .project-media__surface{background:0 0}.project-media.has-webgl picture,.project-media.has-webgl .project-media__video{opacity:0}@media (prefers-reduced-motion:no-preference){.portfolio.is-intro .profile h1>span{color:#0000;position:relative}.portfolio.is-intro .profile h1 .intro-letter{color:var(--ink);transform-origin:50% 80%;position:absolute;top:0}.portfolio.is-intro .profile__bio,.portfolio.is-intro.is-intro-mobile .social-links--mobile,.portfolio.is-intro.is-intro-mobile .mobile-projects{opacity:0}}@media (width>=768px) and (prefers-reduced-motion:no-preference){.portfolio.is-intro .project-list li,.portfolio.is-intro .pixel-selection,.portfolio.is-intro .project-focus .project-details>p,.portfolio.is-intro .social-links__item,.portfolio.is-intro .project-focus .project-link,.portfolio.is-intro .project-media__logo{opacity:0}.portfolio.is-intro .project-media,.portfolio.is-intro .project-media__canvas{visibility:hidden}.portfolio.is-intro.is-intro-preview .project-media,.portfolio.is-intro.is-intro-preview .project-media.has-webgl .project-media__canvas{visibility:visible}}@media (hover:hover) and (pointer:fine){.project-media.is-selected .project-media__surface{cursor:pointer}}
