@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.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:#0b0c0e;--surface:#111317;--surface-2:#171a1f;--fg:#ecebe6;--text-2:#bcc0c7;--text-3:#959ba4;--line:#ecebe61c;--line-strong:#ecebe63d;--accent:#f2a541;--accent-ink:#1a1206;--sans:"Geist Variable", "Segoe UI", system-ui, -apple-system, sans-serif;--mono:"Geist Mono Variable", ui-monospace, "Cascadia Mono", "SF Mono", Consolas, monospace;--gut:clamp(16px, 4vw, 48px);--max:1200px;--nav-h:60px;--radius:6px}*,:before,:after{box-sizing:border-box}html{background:var(--bg);color-scheme:dark;-webkit-text-size-adjust:100%;text-size-adjust:100%}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background:var(--bg);color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:17px;line-height:1.6;overflow-x:clip}img{max-width:100%;height:auto;display:block}a{color:inherit}h1,h2,h3,h4{letter-spacing:-.01em;margin:0;font-weight:600;line-height:1.2}p{margin:0}ul,ol{margin:0;padding:0}code{font-family:var(--mono);background:var(--surface-2);border-radius:3px;padding:.05em .3em;font-size:.88em}strong{color:var(--fg);font-weight:600}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}main:focus{outline:none}::selection{background:var(--accent);color:var(--accent-ink)}[id]{scroll-margin-top:calc(var(--nav-h) + 20px)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip-link{z-index:100;border-radius:var(--radius);background:var(--accent);color:var(--accent-ink);padding:10px 14px;font-weight:600;text-decoration:none;position:fixed;top:10px;left:10px;transform:translateY(-200%)}.skip-link:focus-visible{transform:none}.eyebrow{font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);font-size:13px}.btn{border:1px solid var(--line-strong);border-radius:var(--radius);min-height:44px;color:var(--fg);white-space:nowrap;background:0 0;align-items:center;gap:9px;padding:9px 16px;font-size:15px;font-weight:500;line-height:1.2;text-decoration:none;transition:background-color .2s,border-color .2s,color .2s;display:inline-flex}.btn:hover{border-color:var(--fg);background:#ecebe60f}.btn--primary{border-color:var(--accent);background:var(--accent);color:var(--accent-ink);font-weight:600}.btn--primary:hover{color:var(--accent-ink);background:#f7bd6c;border-color:#f7bd6c}.btn--small{min-height:36px;padding:6px 14px;font-size:14px}.btn-icon{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:18px;height:18px}.btn-host{color:var(--text-3);font-weight:400}.btn-host--on-primary{color:#1a1206b8}.btn .arrow{transition:transform .2s}.btn:hover .arrow{transform:translate(3px)}.link-row{flex-wrap:wrap;gap:10px;list-style:none;display:flex}.nav{z-index:40;backdrop-filter:blur(10px);border-bottom:1px solid var(--line);background:#0b0c0ee6;position:sticky;top:0}.nav-inner{max-width:calc(var(--max) + 2 * var(--gut));min-height:var(--nav-h);padding:0 var(--gut);align-items:center;gap:24px;margin:0 auto;display:flex}.brand{align-items:center;gap:12px;margin-right:auto;padding:8px 0;font-size:16px;font-weight:600;text-decoration:none;display:inline-flex}.brand-mark{border:1px solid var(--accent);width:30px;height:30px;color:var(--accent);font-family:var(--mono);letter-spacing:.02em;border-radius:4px;place-items:center;font-size:11px;font-weight:500;display:inline-grid}.nav-links{gap:6px;list-style:none;display:flex}.nav-links a{border-radius:var(--radius);color:var(--text-2);padding:8px 12px;font-size:15px;text-decoration:none;transition:color .2s,background-color .2s;display:block}.nav-links a:hover{color:var(--fg);background:#ecebe60f}.nav-actions{align-items:center;gap:10px;display:flex}.menu-toggle{border:1px solid var(--line-strong);border-radius:var(--radius);min-height:36px;color:var(--fg);font:inherit;cursor:pointer;background:0 0;padding:6px 12px;font-size:14px;display:none}@media (width<=859px){.js .menu-toggle{display:inline-block}.menu-toggle,.nav-actions .btn--small{min-height:44px}.js .nav>.nav-inner>nav{flex-basis:100%;order:3;display:none}.js .nav.is-open>.nav-inner>nav{display:block}.nav-inner{flex-wrap:wrap;gap:12px}.js .nav-links{flex-direction:column;gap:0;padding:4px 0 14px}.js .nav-links a{border-bottom:1px solid var(--line);border-radius:0;padding:13px 4px;font-size:16px}.no-js .nav-links{flex-wrap:wrap;order:3}}@media (width<=479px){.brand-name{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}.intro,.section,.project-page{width:100%;max-width:calc(var(--max) + 2 * var(--gut));padding-left:var(--gut);padding-right:var(--gut);margin:0 auto}.section{padding-top:clamp(56px,8vw,96px)}.section-head{margin-bottom:clamp(24px,3vw,36px)}.section-title{font-size:clamp(26px,2.6vw,32px)}.section-intro{max-width:68ch;color:var(--text-2);margin-top:10px}.intro{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);align-items:start;gap:clamp(28px,4.5vw,64px);padding-top:clamp(40px,6vw,80px);display:grid}.intro-name{letter-spacing:-.025em;font-size:clamp(36px,4.4vw,54px);font-weight:650;line-height:1.05}.intro-role{color:var(--accent);margin-top:14px;font-size:clamp(17px,1.6vw,20px);font-weight:500}.intro-text{max-width:62ch;color:var(--text-2);margin-top:18px;font-size:clamp(17px,1.5vw,19px);line-height:1.6}.intro-actions{flex-wrap:wrap;gap:10px;margin-top:28px;list-style:none;display:flex}.glance{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin:0;padding:6px 22px}.glance>div{padding:12px 0}.glance>div+div{border-top:1px solid var(--line)}.glance dt{font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--text-3);font-size:12px}.glance dd{margin:3px 0 0;font-size:15.5px;line-height:1.45}.intro+.section{padding-top:clamp(44px,5vw,64px)}@media (width<=899px){.intro{grid-template-columns:1fr}}@media (width<=480px){.intro-actions li{flex:100%;min-width:0}.intro-actions .btn{width:100%}.intro-actions .btn-host{text-overflow:ellipsis;margin-left:auto;overflow:hidden}}.project-list{gap:clamp(20px,3vw,32px);display:grid}.project{border:1px solid var(--line);border-radius:calc(var(--radius) + 2px);background:var(--surface);grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(20px,3.2vw,44px);padding:clamp(16px,2vw,24px);display:grid}.project-side{flex-direction:column;gap:16px;min-width:0;display:flex}.project-facts{gap:10px;margin:0;padding:2px 2px 0;display:grid}.project-facts dt{font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--text-3);font-size:12px}.project-facts dd{color:var(--text-2);margin:2px 0 0;font-size:15px;line-height:1.45}.project-figure{border-radius:var(--radius);background:var(--surface-2);aspect-ratio:4/3;display:block;overflow:hidden}.project-figure img{object-fit:cover;width:100%;height:100%;transition:transform .4s}.project-figure:hover img{transform:scale(1.02)}.project-body{flex-direction:column;min-width:0;display:flex}.project-kicker{font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);align-items:center;gap:10px;font-size:12.5px;display:flex}.project-index{color:var(--accent)}.project-title{margin-top:8px;font-size:clamp(24px,2.4vw,30px)}.project-title a{text-decoration:none}.project-title a:hover{text-underline-offset:4px;text-decoration:underline 1px}.project-meta{color:var(--text-3);margin-top:6px;font-size:15px}.project-summary{color:var(--fg);margin-top:14px}.project-points{color:var(--text-2);gap:8px;margin-top:14px;font-size:16px;line-height:1.55;list-style:none;display:grid}.project-points li,.role-points li,.prose ul>li{padding-left:20px;position:relative}.project-points li:before,.role-points li:before,.prose ul>li:before{content:"";background:var(--accent);border-radius:1px;width:6px;height:6px;position:absolute;top:.66em;left:2px}.chips{flex-wrap:wrap;gap:6px;margin-top:18px;list-style:none;display:flex}.chips li{border:1px solid var(--line-strong);color:var(--text-2);font-family:var(--mono);border-radius:999px;padding:3px 9px;font-size:12.5px;line-height:1.5}.project-body .link-row{margin-top:20px}@media (width<=859px){.project{grid-template-columns:1fr}.project-figure{aspect-ratio:16/9}.project-facts{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}}.skills{border-top:1px solid var(--line);margin:0}.skill-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(160px,1fr) minmax(0,3.4fr);gap:8px 32px;padding:16px 0;display:grid}.skill-row dt{font-weight:600}.skill-row dd{margin:0}.skill-items{flex-wrap:wrap;gap:4px 0;list-style:none;display:flex}.skill-items li:not(:last-child):after{content:"·";color:var(--text-3);margin:0 10px}.skill-evidence{color:var(--text-3);margin-top:4px;font-size:14.5px}@media (width<=640px){.skill-row{grid-template-columns:1fr}}.background{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:clamp(40px,6vw,80px);display:grid}.roles{border-top:1px solid var(--line);list-style:none}.role,.degree{padding:18px 0}.role{border-bottom:1px solid var(--line)}.degree{border-top:1px solid var(--line)}.role-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 16px;display:flex}.role-title{font-size:18px}.role-dates,.degree-meta{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:15px}.degree-meta{margin-top:4px}.role-org{color:var(--text-2);margin-top:3px}.role-detail{color:var(--text-3)}.role-points{color:var(--text-2);gap:5px;margin-top:10px;font-size:16px;list-style:none;display:grid}.minor-heading{font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--text-3);margin-top:20px;font-size:12px;font-weight:400}.coursework{flex-wrap:wrap;gap:6px;margin-top:10px;list-style:none;display:flex}.coursework li{border:1px solid var(--line);color:var(--text-2);border-radius:999px;padding:3px 10px;font-size:14.5px}.degree .role-points{margin-top:8px}@media (width<=999px){.background{grid-template-columns:1fr}}.contact{padding-bottom:clamp(56px,8vw,96px)}.contact-grid{border:1px solid var(--line);border-radius:calc(var(--radius) + 2px);background:var(--surface);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:24px 48px;padding:clamp(20px,3vw,32px);display:grid}.contact-mail{color:var(--accent);letter-spacing:-.01em;overflow-wrap:anywhere;text-underline-offset:6px;align-self:center;font-size:clamp(20px,2.4vw,30px);font-weight:600;text-decoration:underline 1px}.contact-mail:hover{color:#f7bd6c}.contact-links{border-top:1px solid var(--line);list-style:none}.contact-links a{border-bottom:1px solid var(--line);justify-content:space-between;gap:16px;padding:12px 0;text-decoration:none;display:flex}.contact-label{font-weight:500}.contact-url{color:var(--text-3);overflow-wrap:anywhere;text-align:right}.contact-links a:hover .contact-label{text-underline-offset:4px;text-decoration:underline}@media (width<=759px){.contact-grid{grid-template-columns:1fr}}.foot{border-top:1px solid var(--line);color:var(--text-3);font-size:14px}.foot-inner{max-width:calc(var(--max) + 2 * var(--gut));padding:22px var(--gut);flex-wrap:wrap;justify-content:space-between;gap:12px;margin:0 auto;display:flex}.foot a{text-decoration:none}.foot a:hover{color:var(--fg)}.project-page{padding-top:clamp(24px,4vw,40px)}.crumbs a{color:var(--text-2);gap:8px;padding:6px 0;font-size:15px;text-decoration:none;display:inline-flex}.crumbs a:hover{color:var(--fg)}.page-head{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:clamp(24px,4vw,56px);margin-top:clamp(16px,2.4vw,28px);display:grid}.page-title{letter-spacing:-.02em;margin-top:8px;font-size:clamp(34px,4.4vw,52px);font-weight:650;line-height:1.08}.page-subtitle{max-width:60ch;color:var(--text-2);margin-top:14px;font-size:clamp(17px,1.5vw,19px)}.page-head .link-row{margin-top:24px}.page-facts{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);align-self:start;margin:0;padding:6px 20px}.page-facts>div{padding:11px 0}.page-facts>div+div{border-top:1px solid var(--line)}.page-facts dt{font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--text-3);font-size:12px}.page-facts dd{margin:2px 0 0;font-size:15.5px;line-height:1.5}.page-highlights{margin-top:clamp(28px,4vw,44px)}.page-hero{border:1px solid var(--line);border-radius:calc(var(--radius) + 2px);background:var(--surface-2);aspect-ratio:16/8;margin-top:clamp(20px,3vw,32px);overflow:hidden}.page-hero img{object-fit:cover;width:100%;height:100%}.page-body{gap:clamp(40px,5vw,64px);margin-top:clamp(40px,5vw,64px);display:grid}.callouts{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;list-style:none;display:grid}.callouts li{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:20px 22px}.callouts h3{font-size:17.5px}.callouts p{color:var(--text-2);margin-top:8px;font-size:16px}.p-section{grid-template-columns:minmax(0,1fr) minmax(0,2.6fr);gap:12px clamp(24px,4vw,56px);display:grid}.p-section>h2{font-size:22px}.page-lead .p-section{border:1px solid #f2a54147;border-left:3px solid var(--accent);border-radius:var(--radius);background:#f2a54112;padding:clamp(20px,3vw,32px)}.page-lead .p-section>h2{color:var(--accent)}.page-lead .prose{color:var(--fg)}.prose{max-width:72ch;color:var(--text-2)}.prose>*+*{margin-top:14px}.prose p,.prose li{line-height:1.7}.prose ul{gap:10px;list-style:none;display:grid}.prose ul>li:before{top:.72em}.prose strong{color:var(--fg)}.prose a{color:var(--fg);text-decoration-color:var(--accent);text-underline-offset:3px}.shot{margin:0}.zoom{cursor:zoom-in;display:block;position:relative}.zoom:after{content:"Full size ↗";color:var(--fg);opacity:.85;background:#0b0c0ed1;border-radius:4px;padding:4px 9px;font-size:13px;line-height:1.4;transition:opacity .2s;position:absolute;bottom:10px;right:10px}.zoom:hover:after,.zoom:focus-visible:after{opacity:1}.zoom:focus-visible{outline-offset:4px}.shot img{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);width:100%}.shot figcaption{color:var(--text-3);margin-top:10px;font-size:15px}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;list-style:none;display:grid}.gallery img{aspect-ratio:16/10;object-fit:cover}.gallery:has(>li:only-child){grid-template-columns:1fr}.gallery:has(>li:only-child) img{aspect-ratio:auto}@media (width>=900px){.gallery:has(>li:nth-child(3):last-child){grid-template-columns:repeat(3,minmax(0,1fr))}}.tech-list{flex-wrap:wrap;gap:8px;list-style:none;display:flex}.tech-list li{border:1px solid var(--line-strong);color:var(--text-2);border-radius:999px;padding:5px 12px;font-size:15px}.availability,.credits{max-width:72ch;color:var(--text-2)}.link-row+.availability{margin-top:18px}.credits{color:var(--text-3);margin-top:14px;font-size:14.5px}.next{margin-top:clamp(56px,7vw,88px);padding-bottom:clamp(48px,6vw,72px)}.next a{border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 24px;padding:24px 0;text-decoration:none;display:flex}.next-label{color:var(--text-3);font-size:15px}.next-title{font-size:clamp(22px,2.6vw,30px);font-weight:600}.next a:hover .next-title{color:var(--accent)}@media (width<=899px){.page-head,.p-section{grid-template-columns:1fr}.page-hero{aspect-ratio:16/10}}@media (width<=640px){.callouts,.gallery{grid-template-columns:1fr}}.not-found{max-width:calc(760px + 2 * var(--gut));padding:clamp(72px, 12vw, 140px) var(--gut);margin:0 auto}.not-found h1{margin-top:10px;font-size:clamp(32px,4vw,44px)}.not-found p:not(.eyebrow){color:var(--text-2);margin-top:12px}.not-found .btn{margin-top:28px}
