@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/caveat-cyrillic-ext-wght-normal-DiMfzA-V.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:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/caveat-cyrillic-wght-normal-D5lnP6kL.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/caveat-latin-ext-wght-normal-Byk3UhVp.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:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/assets/caveat-latin-wght-normal-C1hSzPvX.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/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(/assets/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(/assets/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(/assets/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(/assets/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(/assets/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(/assets/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}:root{--ink:#1f1c18;--muted:#6f685e;--line:#1f1c181a;--gutter:24px}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}body{color:var(--ink);-webkit-font-smoothing:antialiased;background:#efe4d4;font-family:Inter Variable,system-ui,sans-serif}a{color:inherit}:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}#scene{opacity:0;touch-action:manipulation;width:100%;height:100%;transition:opacity .6s;display:block;position:fixed;inset:0}.is-ready #scene{opacity:1}.skip{right:var(--gutter);bottom:var(--gutter);color:#fff;font:inherit;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#1f1c188c;border:0;border-radius:999px;padding:.5rem .9rem;font-size:.8125rem;font-weight:550;transition:background-color .2s;display:none;position:fixed}.skip:hover{background:#1f1c18cc}.is-intro .skip{display:inline-flex}.menu{top:var(--gutter);left:var(--gutter);max-width:calc(100vw - 2 * var(--gutter));max-height:calc(100dvh - 2 * var(--gutter));flex-direction:column;align-items:flex-start;gap:.25rem;margin:-5px;padding:5px;display:flex;position:fixed;overflow-y:auto}.menu span{color:var(--muted);flex-shrink:0;margin-bottom:.4rem;font-size:.8125rem}.menu button{color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex-shrink:0;padding:.3rem 0;font-size:.875rem;font-weight:550}.menu button:hover,.menu button[aria-pressed=true]{text-underline-offset:4px;text-decoration:underline}.label{background:var(--ink);color:#fff;white-space:nowrap;pointer-events:none;opacity:0;border-radius:999px;padding:.35rem .7rem;font-size:.8125rem;font-weight:600;transition:opacity .2s;position:fixed;top:0;left:0;translate:-50% -100%}.label.is-visible{opacity:1}.label.below{translate:-50% 8px}.card{--c:#ddd;top:50%;right:var(--gutter);width:min(370px, calc(100vw - 2 * var(--gutter)));max-height:calc(100dvh - 2 * var(--gutter));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:0 0 0 1px var(--line), 0 30px 60px -24px #3c281473;opacity:0;pointer-events:none;background:#fffdf9ed;border-radius:22px;padding:22px;transition:translate .55s cubic-bezier(.2,.8,.2,1),opacity .35s;position:fixed;overflow-y:auto;translate:28px -50%}.card.is-open{opacity:1;pointer-events:auto;translate:0 -50%}.card:focus{outline:none}.card .bar{background:var(--c);border-radius:4px;width:44px;height:4px;margin-bottom:16px;display:block}.card .art{background:color-mix(in srgb, var(--c) 9%, #fffaf3);border-radius:16px;place-items:center;margin:0 0 14px;padding:10px 0 6px;display:grid}.card header{align-items:center;gap:12px;display:flex}.card header img{background:color-mix(in srgb, var(--c) 20%, #fff);object-fit:contain;border-radius:13px;width:48px;height:48px;padding:6px}.card header .avatar{background:color-mix(in srgb, var(--c) 16%, #fff4ea);object-fit:contain;object-position:center bottom;border-radius:50%;flex:none;width:60px;height:60px;padding:3px 2px 0}.card header .mark{background:var(--c);color:#fff;letter-spacing:-.02em;border-radius:13px;flex:none;place-items:center;width:48px;height:48px;font-size:1.05rem;font-weight:700;display:grid}.card h2{letter-spacing:-.02em;margin:0;font-size:1.25rem}.card .about{color:var(--muted);margin:.1rem 0 0;font-size:.9rem}.card .role{background:color-mix(in srgb, var(--c) 28%, #fff);border-radius:999px;margin:16px 0 0;padding:.25rem .65rem;font-size:.8125rem;font-weight:600;display:inline-block}.card .text{margin:12px 0 0;font-size:.95rem;line-height:1.55}.card .projects{gap:2px;margin:14px -8px 0;padding:0;list-style:none;display:grid}.card .projects a{color:inherit;border-radius:14px;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:12px;padding:8px;text-decoration:none;transition:background-color .2s;display:grid}.card .projects a:hover{background:#0000000b}.card .projects img,.card .projects .mark{border-radius:11px;width:40px;height:40px}.card .projects img{background:color-mix(in srgb, var(--tint) 14%, #fff);object-fit:contain;padding:5px}.card .projects .mark{background:var(--tint);color:#fff;place-items:center;font-size:1.1rem;font-weight:700;display:grid}.card .projects .info strong{font-size:.95rem;font-weight:650;display:block}.card .projects .info span{color:var(--muted);overflow-wrap:anywhere;font-size:.8125rem;line-height:1.4;display:block}.card .contacts .icon{background:color-mix(in srgb, var(--c) 14%, #fff);border-radius:11px;place-items:center;width:40px;height:40px;display:grid}.card .projects .go{color:var(--muted);transition:translate .2s}.card .projects a:hover .go{translate:2px -2px}.card .visit{background:var(--ink);color:#fff;border-radius:999px;align-items:center;gap:.35rem;margin-top:18px;padding:.55rem 1rem;font-size:.875rem;font-weight:550;text-decoration:none;transition:translate .2s;display:inline-flex}.card .visit:hover{translate:0 -1px}.card .close{width:32px;height:32px;color:var(--ink);cursor:pointer;background:#0000000d;border:0;border-radius:50%;font-size:1.25rem;line-height:1;position:absolute;top:14px;right:14px}.card .close:hover{background:#0000001a}@media (width<=640px){:root{--gutter:16px}.card{top:auto;right:var(--gutter);bottom:var(--gutter);left:var(--gutter);width:auto;translate:0 24px}.card.is-open{translate:0}}@media (prefers-reduced-motion:reduce){.card{transition:opacity .2s}}.mobile-menu,.mobile-portfolio{display:none}@media (width<=640px){:root{--hero-height:clamp(260px, 36svh, 340px)}html,body{height:auto;overflow:visible}body{overflow-x:hidden}#scene{height:var(--hero-height);touch-action:pan-y;position:absolute;inset:0 auto auto 0}.menu,body>.card,.label,.skip{display:none}.mobile-menu{z-index:2;margin-top:var(--hero-height);border-bottom:1px solid var(--line);background:#efe4d4;gap:4px;padding:10px 16px;display:flex;position:sticky;top:0;overflow-x:auto}.mobile-menu a{flex:none;padding:12px 10px;font-size:.8125rem;font-weight:550;text-decoration:none}.mobile-menu a:hover,.mobile-menu a:focus-visible{text-decoration:underline}.mobile-portfolio{gap:20px;padding:20px 16px 40px;display:grid}.mobile-portfolio .card{opacity:1;pointer-events:auto;-webkit-backdrop-filter:none;backdrop-filter:none;width:auto;max-height:none;box-shadow:none;border:1px solid var(--line);background:#fffcf7;border-radius:18px;scroll-margin-top:80px;transition:none;position:static;overflow:visible;translate:none}.mobile-portfolio .card:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.no-webgl .mobile-menu{margin-top:0}.no-webgl #scene{display:none}}
