@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}:root{color-scheme:light;--background:#fafafa;--surface:#fff;--text:#111;--muted:#666;--faint:#9a9a9a;--line:#e9e9e9;--soft:#f6f6f6;--radius-image:12px;--dialog-media-padding:12px;--dialog-media-padding-top:4px;--radius-dialog-image:12px;--radius-dialog:calc(var(--radius-dialog-image) + var(--dialog-media-padding));--shadow-image:0 1px 2px #11111109, 0 10px 30px #1111110e, 0 28px 70px #11111109;--shadow-dialog:0 2px 12px #0000002e, 0 30px 100px #00000052;--rail:760px;--page-gutter:clamp(24px, 5vw, 72px);--ease:cubic-bezier(.22, 1, .36, 1);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Inter Variable,Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:var(--background);scroll-behavior:smooth}body{background:var(--background);min-width:320px;color:var(--text);margin:0;font-size:15px;line-height:1.55}button,input{font:inherit}a{color:inherit;text-underline-offset:4px;text-decoration-color:currentColor;text-decoration-thickness:1px}img{max-width:100%;display:block}button,a,input{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--text);outline-offset:4px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.wide-rail{width:min(calc(100% - (var(--page-gutter) * 2)), var(--rail));min-width:0;margin-inline:auto}.hero{min-height:min(74svh,840px);padding:clamp(112px, 18svh, 180px) var(--page-gutter) clamp(128px, 16svh, 176px)}.hero-rail{width:min(100%,672px);margin-inline:auto}.intro-rail{width:min(100%,458px);min-width:0}.intro-rail h1,.recent-work h2,.experience h2,.project-copy h3{letter-spacing:-.012em;margin:0;font-size:15px;font-weight:590;line-height:1.35}.intro-rail h1{letter-spacing:.045em;font-size:16px;font-weight:650}.role{color:var(--muted);margin:5px 0 0}.intro-copy{max-width:430px;margin-top:28px}.intro-copy p{margin:0}.intro-copy p+p{margin-top:20px}.social-links{gap:8px;margin-top:28px;display:flex}.social-links a{width:40px;height:40px;transition:background-color .16s ease, transform .24s var(--ease);border-radius:4px;place-items:center;text-decoration:none;display:grid}.social-links a:hover{background:var(--soft);transform:translateY(-1px)}.social-links svg{width:19px;height:19px}.recent-work{padding:clamp(104px,9vw,128px) 0 clamp(128px,11vw,156px)}.recent-work-heading{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.work-theme-toggle{color:var(--muted);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:4px 0;font-size:13px;line-height:1;transition:color .16s;display:inline-flex}.work-theme-toggle:hover{color:var(--text)}.work-theme-icon{width:14px;height:14px}.work-theme-icon-sun,.work-theme-toggle[aria-pressed=true] .work-theme-icon-moon{display:none}.work-theme-toggle[aria-pressed=true] .work-theme-icon-sun{display:block}.project-list{gap:24px;display:grid}.project-row{grid-template-columns:172px minmax(0,1fr);align-items:start;gap:28px;min-width:0;display:grid}.project-copy{min-width:0;padding-top:6px}.project-copy p{color:var(--muted);margin:10px 0 0;font-size:14px;line-height:1.45}.project-affiliation{color:var(--muted);margin-top:18px;font-size:14px;display:block}a.project-affiliation{width:fit-content;text-decoration:none}a.project-affiliation:hover{color:var(--text);text-decoration:underline}.project-media{min-width:0;position:relative}.project-image-link{width:100%;min-width:0;height:auto;aspect-ratio:var(--project-aspect,16 / 9);border-radius:var(--radius-image);background:var(--soft);box-shadow:var(--shadow-image);cursor:zoom-in;text-align:left;border:1px solid #1111110f;padding:0;display:block;position:relative;overflow:hidden}.project-slide{opacity:0;pointer-events:none;transition:opacity .26s ease, transform .36s var(--ease);display:block;position:absolute;inset:0;transform:translate(7px)scale(.996)}.project-slide.is-active{z-index:1;opacity:1;transform:translate(0,0)scale(1)}.project-image-link img{object-fit:contain;width:100%;height:100%;transition:opacity .18s;position:absolute;inset:0}.project-image-dark{opacity:0}.project-image-link:hover .project-image-light{opacity:.94}.recent-work[data-preview-theme=dark] .has-dark-preview .project-image-light,.recent-work[data-preview-theme=dark] .has-dark-preview:hover .project-image-light{opacity:0}.recent-work[data-preview-theme=dark] .has-dark-preview .project-image-dark{opacity:1}.recent-work[data-preview-theme=dark] .has-dark-preview:hover .project-image-dark{opacity:.94}.carousel-controls{z-index:3;opacity:0;transition:opacity .16s ease, transform .22s var(--ease);align-items:center;gap:4px;display:flex;position:absolute;bottom:12px;right:12px;transform:translateY(4px)}.project-media:hover .carousel-controls,.project-media:focus-within .carousel-controls{opacity:1;transform:translateY(0)}.carousel-button,.carousel-count{color:#222;backdrop-filter:blur(10px);background:#fafafae0;border:1px solid #11111117;border-radius:8px;place-items:center;height:30px;display:grid;box-shadow:0 3px 12px #00000012}.carousel-button{cursor:pointer;width:30px;transition:background-color .14s ease, transform .18s var(--ease);padding:0}.carousel-button:hover{background:#fff;transform:translateY(-1px)}.carousel-button svg{width:16px;height:16px}.carousel-count{font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:2px;min-width:43px;padding:0 7px;font-size:11px;display:flex}.experience{padding:clamp(112px,10vw,144px) 0 56px}.experience-rail{min-height:0}.experience h2{margin-bottom:34px}.experience-row{border-bottom:1px solid var(--line);min-height:60px;color:var(--muted);grid-template-columns:minmax(0,1fr) minmax(0,1.05fr) minmax(0,1.45fr);align-items:center;gap:24px;font-size:14px;display:grid}.experience-row:last-child{border-bottom:0}.experience-company{color:var(--text)}.experience-row>span{min-width:0}.copyright{color:var(--muted);letter-spacing:.02em;margin:clamp(96px,9vw,128px) 0 0;font-size:12px}.hero:focus{outline:0}.scroll-to-top{z-index:30;background:var(--background);opacity:0;pointer-events:none;width:42px;height:42px;transition:opacity .16s ease, border-color .16s ease, transform .22s var(--ease);border:1px solid #ddd;border-radius:50%;place-items:center;display:grid;position:fixed;bottom:clamp(18px,3vw,36px);right:clamp(18px,3vw,36px);transform:translateY(8px);box-shadow:0 8px 24px #0000000f}.scroll-to-top.is-visible{opacity:1;pointer-events:auto;transform:translateY(0)}.scroll-to-top.is-visible:hover{border-color:#c6c6c6;transform:translateY(-2px)}.scroll-to-top svg{width:17px;height:17px}.work-dialog{width:var(--dialog-width,min(94vw, 1440px));max-width:min(94vw,1440px);height:var(--dialog-height,auto);border-radius:var(--radius-dialog);background:var(--surface);max-height:min(92svh,960px);box-shadow:var(--shadow-dialog);color:var(--text);border:0;margin:auto;padding:0;transition:background-color .16s,color .16s;overflow:hidden}.work-dialog:focus{outline:0}.work-dialog::backdrop{background:#000000c7}.dialog-toolbar{justify-content:space-between;align-items:center;gap:24px;min-height:64px;padding:12px 18px;font-size:13px;display:flex}.dialog-heading{align-items:baseline;gap:10px;min-width:0;display:flex}.dialog-actions,.dialog-carousel-controls,.dialog-window-controls{align-items:center;display:flex}.dialog-actions{flex:none;gap:14px}.dialog-carousel-controls,.dialog-window-controls{gap:2px}.dialog-carousel-controls[hidden]{display:none}.dialog-nav-button{width:30px;height:30px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;padding:0;transition:background-color .14s,color .14s;display:grid}.dialog-nav-button:hover{background:var(--soft);color:var(--text)}.dialog-nav-button svg{width:16px;height:16px}.dialog-count{min-width:40px;color:var(--muted);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;font-size:11px;display:flex}.dialog-toolbar strong{white-space:nowrap;font-weight:560}.dialog-toolbar span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dialog-theme-toggle,.dialog-close{width:30px;height:30px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;padding:0;transition:background-color .14s,color .14s;display:grid}.dialog-theme-toggle:hover,.dialog-close:hover{background:var(--soft);color:var(--text)}.dialog-theme-icon,.dialog-close svg{width:16px;height:16px}.dialog-theme-icon-sun,.dialog-theme-toggle[aria-pressed=true] .dialog-theme-icon-moon{display:none}.dialog-theme-toggle[aria-pressed=true] .dialog-theme-icon-sun{display:block}.dialog-media{padding:var(--dialog-media-padding-top) var(--dialog-media-padding) var(--dialog-media-padding);background:inherit}.dialog-media>img{width:100%;height:var(--dialog-image-height,auto);max-height:calc(min(92svh, 960px) - 64px - var(--dialog-media-padding-top) - var(--dialog-media-padding));object-fit:contain;border-radius:var(--radius-dialog-image);opacity:1;background:#f2f2f2;transition:opacity .15s;display:block;box-shadow:0 1px 3px #1111111a,0 10px 28px #11111124}.dialog-media>img.is-changing{opacity:0}.work-dialog[data-image-theme=dark]{color-scheme:dark;color:#f4f4f4;background:#151515}.work-dialog[data-image-theme=dark] .dialog-toolbar span,.work-dialog[data-image-theme=dark] .dialog-nav-button,.work-dialog[data-image-theme=dark] .dialog-theme-toggle,.work-dialog[data-image-theme=dark] .dialog-close{color:#a6a6a6}.work-dialog[data-image-theme=dark] .dialog-nav-button:hover,.work-dialog[data-image-theme=dark] .dialog-theme-toggle:hover,.work-dialog[data-image-theme=dark] .dialog-close:hover{color:#fff;background:#ffffff14}.work-dialog[data-image-theme=dark] :focus-visible{outline-color:#f4f4f4}.work-dialog[data-image-theme=dark] .dialog-media>img{background:#111;box-shadow:0 0 0 1px #ffffff12,0 12px 30px #00000075}.not-found{min-height:100svh;width:min(calc(100% - (var(--page-gutter) * 2)), 460px);align-content:center;justify-items:start;margin:auto;display:grid}.not-found p{color:var(--muted);margin:0 0 10px}.not-found h1{margin:0 0 24px;font-size:20px;font-weight:560}@media (width<=760px){:root{--page-gutter:24px}body{font-size:15px}.hero{min-height:86svh;padding-top:112px}.intro-rail{width:100%}.recent-work{min-height:auto;padding:76px 0 96px;display:block}.project-list{gap:44px}.project-row{grid-template-columns:1fr;gap:18px}.project-copy{grid-template-columns:1fr auto;column-gap:16px;padding:0;display:grid}.project-copy p{grid-column:1/-1;max-width:31ch}.project-affiliation{grid-area:1/2;margin:0}.project-media{grid-row:1}.project-image-link{height:auto;aspect-ratio:var(--project-aspect,16 / 9)}.carousel-controls{opacity:1;bottom:10px;right:10px;transform:none}.experience{padding:96px 0 48px}.experience-rail{min-height:0}.experience-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-content:center;gap:4px 20px;min-height:78px}.experience-period{grid-column:1}.experience-company{grid-area:1/2}.experience-role{grid-area:2/2}.copyright{margin-top:72px}.scroll-to-top{width:40px;height:40px;bottom:18px;right:18px}.dialog-heading{flex-direction:column;align-items:flex-start;gap:1px}.dialog-toolbar{min-height:76px}.dialog-heading span{white-space:normal;max-width:min(54vw,34ch);font-size:11px;line-height:1.25}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}
