@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/caveat-cyrillic-ext-400-normal-3iEGd-c5.woff2)format("woff2"),url(/assets/caveat-cyrillic-ext-400-normal-Cg0RnRQ5.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/caveat-cyrillic-400-normal-9cDH9rLW.woff2)format("woff2"),url(/assets/caveat-cyrillic-400-normal-CebvvJET.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Caveat;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/caveat-latin-ext-400-normal-D7hBUiug.woff2)format("woff2"),url(/assets/caveat-latin-ext-400-normal-DtiRFvw0.woff)format("woff");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:Caveat;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/caveat-latin-400-normal-D6LQsQ_v.woff2)format("woff2"),url(/assets/caveat-latin-400-normal-BzhAQZkN.woff)format("woff");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:#080809;--fg:#f0efeb;--muted:#aaa;--line:#ffffff30;--serif:Georgia, "Times New Roman", serif;--sans:Arial, Helvetica, sans-serif;--mono:ui-monospace, "SFMono-Regular", Consolas, monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--fg);font:16px var(--sans);margin:0}a,button{color:inherit}button,.button{font:11px/1.4 var(--mono);letter-spacing:.12em;cursor:pointer;background:0 0;border:1px solid #777;padding:12px 18px;text-decoration:none;display:inline-block}button:hover,.button:hover{border-color:var(--fg)}:focus-visible{outline-offset:4px;outline:2px solid #fff}.motion-stage,.motion-grain{pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.motion-grain{z-index:10;mix-blend-mode:exclusion}.webgl [data-ink]{color:#0000}.cursor-ring{z-index:20;pointer-events:none;opacity:0;mix-blend-mode:difference;transition:opacity .3s;position:fixed;top:0;left:0}.cursor-ring.visible{opacity:1}.cursor-ring span{border:1px solid #ffffffbf;border-radius:50%;width:34px;height:34px;margin:-17px 0 0 -17px;transition:transform .35s cubic-bezier(.22,1,.36,1),background-color .35s;position:absolute}.cursor-ring.hover span{background:#ffffff14;transform:scale(1.7)}.cursor-ring.pressed span{transform:scale(.8)}.cursor-ring.hover.pressed span{transform:scale(1.4)}@media not ((hover:hover) and (pointer:fine)){.cursor-ring{display:none}}.site-header{z-index:6;padding:max(22px, env(safe-area-inset-top)) max(30px, env(safe-area-inset-right)) 14px max(30px, env(safe-area-inset-left));font:11px var(--mono);letter-spacing:.12em;justify-content:space-between;align-items:center;gap:24px;display:flex;position:fixed;top:0;left:0;right:0}.site-header a{text-decoration:none}.site-header nav{gap:24px;display:flex}.site-header nav a:hover{text-decoration:underline}.site-header nav{order:1;margin-left:auto}.header-actions{order:2;align-items:center;gap:10px;display:flex;position:relative}.sound-toggle{border-color:var(--line);color:var(--muted);align-items:center;gap:8px;padding:10px 14px;display:inline-flex}.sound-toggle[aria-pressed=true]{color:var(--fg)}.sound-anchor{display:inline-flex;position:relative}.sound-note{pointer-events:none;position:absolute;top:calc(100% + 4px);right:calc(50% - 40px);overflow:visible}.sound-note-arrow{fill:none;stroke:currentColor;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;animation:.8s ease-out .45s both sound-note-draw}.sound-note-text{fill:currentColor;font:400 26px Caveat,Comic Sans MS,cursive;animation:.9s steps(18,end) both sound-note-write}@keyframes sound-note-draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes sound-note-write{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}.sound-toggle.nudge{color:var(--bg);background:var(--fg);border-color:var(--fg);animation:1.6s ease-in-out infinite sound-nudge}@keyframes sound-nudge{0%,to{box-shadow:0 0 #f0efeb73}50%{box-shadow:0 0 0 8px #f0efeb00}}.sound-bars{align-items:flex-end;gap:2px;height:9px;display:inline-flex}.sound-bars i{background:currentColor;width:2px;height:2px}.sound-bars.playing i{animation:1.8s ease-in-out infinite alternate sound-bar}.sound-bars.playing i:nth-child(2){animation-delay:-.6s}.sound-bars.playing i:nth-child(3){animation-delay:-1.2s}@keyframes sound-bar{0%{height:2px}to{height:9px}}.menu-toggle{padding:10px 14px;font-size:11px;display:none}@media (width<=960px){.site-header{padding-left:max(20px, env(safe-area-inset-left));padding-right:max(20px, env(safe-area-inset-right));background:linear-gradient(#080809eb 55%,#08080900);padding-bottom:28px}.site-header.open{background:0 0}.menu-toggle,.sound-toggle{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#08080999}.menu-toggle{display:inline-block}.site-header nav{z-index:-1;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);opacity:0;visibility:hidden;background:#080809f0;flex-direction:column;justify-content:center;gap:8px;padding:96px 24px;transition:opacity .25s,visibility .25s;position:fixed;inset:0}.site-header.open nav{opacity:1;visibility:visible}.site-header nav a{font:400 clamp(34px, 9vw, 56px) / 1.25 var(--serif);letter-spacing:-.01em}}@media (width<=420px){.site-name-full{display:none}.sound-toggle:not(.nudge) .sound-label{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}}main{max-width:780px;margin:0 auto;padding:0 36px 48vh;position:relative}.section{padding:10vh 0 15vh}.section.hero{flex-direction:column;justify-content:safe center;min-height:100svh;padding:max(12vh,110px) 0 18vh;display:flex}.section h2{font:400 clamp(38px, 6vw, 70px) / 1.12 var(--serif);margin:20px 0 50px}.section h3{font:400 clamp(26px, 3.2vw, 38px) / 1.2 var(--serif);margin:0 0 16px}.section p,.section li{font:400 clamp(20px, 2.2vw, 29px) / 1.65 var(--sans);margin:0 0 42px}.section .small{font:400 clamp(17px, 1.6vw, 21px) / 1.6 var(--sans);margin:0}.section .label{font:11px/1.5 var(--mono);letter-spacing:.17em;text-transform:uppercase;margin:0 0 12px}.hero-name{font:400 clamp(48px, min(11vw, 18vh), 132px) / .92 var(--serif);letter-spacing:-.04em;margin:24px 0 28px}.section .hero-role{font:400 clamp(22px, 2.6vw, 32px) / 1.3 var(--sans);margin:0 0 28px}.section .lead{margin-bottom:28px}.actions{flex-wrap:wrap;gap:12px;margin-top:36px;display:flex}.project{border-top:1px solid var(--line);cursor:pointer;padding:8vh 0 4vh;text-decoration:none;display:block}.project:first-of-type{border-top:0}.detail,.step{margin:0 0 36px}.metric{margin-top:12px}.list{margin:0;padding:0;list-style:none}.list li{margin:0 0 12px}.experience-list{border-bottom:1px solid var(--line)}.experience-row{border-top:1px solid var(--line);padding:28px 0 24px}.experience-row h3{margin-bottom:8px}.flag-preview{z-index:5;pointer-events:none;visibility:hidden;position:fixed;top:0;left:0}.project-hero{flex-direction:column;justify-content:safe center;min-height:100svh;padding-top:max(10vh,110px);display:flex}.project-title{font:400 clamp(40px, min(8vw, 14vh), 104px) / .98 var(--serif);letter-spacing:-.03em;margin:24px 0 32px}.back-link{font:11px var(--mono);letter-spacing:.14em;margin-bottom:48px;text-decoration:none}.back-link:hover{text-decoration:underline}.project-figure{--figure-width:min(1120px, calc(100vw - 72px));width:var(--figure-width);margin:0 0 72px calc(50% - var(--figure-width) / 2)}.project-figure img,.project-demo{border:1px solid var(--line);border-radius:6px;width:100%;height:auto;display:block;overflow:hidden}.project-demo{aspect-ratio:16/9;background:#1b1b1b}.project-demo iframe{pointer-events:none;border:0;width:100%;height:100%;display:block}.section .project-figure figcaption{max-width:708px;margin:36px auto 0}.demo-open{max-width:708px;font:11px var(--mono);letter-spacing:.14em;color:var(--muted);margin:14px auto 0;display:block}.next-project{text-decoration:none;display:block}.contact-email{max-width:100%;font:400 clamp(18px, 2.4vw, 30px) / 1.4 var(--serif);text-underline-offset:6px;overflow-wrap:anywhere;display:inline-block}.controls{z-index:4;border:1px solid var(--line);width:240px;font:11px/1.8 var(--mono);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#111e;padding:16px;position:fixed;bottom:24px;right:24px}.controls[open]{max-height:calc(100vh - 48px);overflow-y:auto}.controls summary{cursor:pointer;letter-spacing:.1em}.controls label{margin-top:14px;display:block}.controls .value{float:right;color:var(--muted)}.controls select{width:100%;font:inherit;color:inherit;border:1px solid var(--line);background:#1a1a1c;margin-top:6px;padding:6px;display:block}.controls input[type=range]{accent-color:#ddd;width:100%}.controls button{width:100%;margin-top:12px}.status{z-index:3;font:10px var(--mono);color:var(--muted);letter-spacing:.13em;position:fixed;bottom:28px;left:30px}@media (width<=700px){main{padding-left:24px;padding-right:24px}[data-ink] br{display:none}.project-figure{--figure-width:calc(100vw - 48px);margin-bottom:56px}.actions .button{text-align:center;flex:auto}.controls{width:190px;bottom:14px;right:14px}.status{max-width:130px;bottom:24px;left:20px}.section{padding-bottom:8vh}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.sound-bars.playing i{height:6px;animation:none}.sound-toggle.nudge,.sound-note-arrow,.sound-note-text{animation:none}}
