@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2) format("woff2-variations");unicode-range:U+0460-052F,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(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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(/assets/geist-latin-wght-normal-BgDaEnEv.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{font-family:Geist Variable,system-ui,-apple-system,sans-serif;color:#111;background:#f1f1f1;font-synthesis:none;text-rendering:optimizeLegibility;--background: #f1f1f1;--foreground: #111111;--secondary: rgba(0, 0, 0, .58);--border: rgba(0, 0, 0, .11);--media: #eeeeed;--hover: rgba(0, 0, 0, .06);--ease-out: cubic-bezier(.23, 1, .32, 1);--ease-in-out: cubic-bezier(.77, 0, .175, 1);color-scheme:light}:root[data-theme=dark]{--background: #222222;--foreground: rgba(255, 255, 255, .93);--secondary: rgba(255, 255, 255, .58);--border: rgba(255, 255, 255, .14);--media: #2c2c2c;--hover: rgba(255, 255, 255, .08);color-scheme:dark}*{box-sizing:border-box}html{background:var(--background);scrollbar-width:none}html::-webkit-scrollbar,body::-webkit-scrollbar{display:none}body{margin:0;min-width:320px;min-height:100vh;color:var(--foreground);background:var(--background);-webkit-font-smoothing:antialiased;transition:color .15s ease-out,background-color .15s ease-out}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:2}html.theme-transition body{transition:none}html.theme-transition::view-transition-new(root){animation:theme-reveal .62s var(--ease-in-out) both;will-change:clip-path}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}button,a{color:inherit}button{padding:0;font:inherit;background:none;border:0;cursor:pointer}a{text-decoration-color:var(--border);text-decoration-thickness:1px;text-underline-offset:2px;transition:text-decoration-color .1s ease-out}a:hover,a:focus-visible{text-decoration-color:currentColor}button:focus-visible,a:focus-visible{outline:1px solid var(--foreground);outline-offset:3px}main{width:400px;max-width:calc(100vw - 32px);min-height:100vh;margin-inline:auto;padding:112px 0 32px}.site-header{display:flex;align-items:flex-start;justify-content:space-between}.site-header h1{animation:hero-soft-appear .54s cubic-bezier(.22,1,.36,1) both}h1{width:58px;height:28px;margin:0;font-size:19px;font-weight:800;line-height:28px;letter-spacing:-1.7px}.brand-logo{display:block;width:58px;height:auto}.theme-toggle{display:grid;width:32px;height:32px;margin-top:0;margin-right:-6px;place-items:center;color:var(--secondary);border-radius:50%;transition:color .1s ease-out,background-color .1s ease-out,transform .2s var(--ease-out)}.theme-toggle:active{transform:scale(.9)}.theme-toggle svg{display:block}.intro{margin-top:64px;color:var(--secondary);font-size:14px;line-height:20px;animation:hero-soft-appear .54s 80ms cubic-bezier(.22,1,.36,1) both}.intro a{color:var(--foreground)}.intro p{margin:0 0 20px}.intro p:last-child{margin-bottom:0}.section{margin-top:64px}h2{margin:0 0 16px;color:var(--secondary);font-size:12px;font-weight:500;line-height:16px;letter-spacing:.12px}.gallery-bleed{display:flex;width:100vw;margin-left:calc((400px - 100vw)/2);padding-left:calc((100vw - 400px)/2);gap:3px;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;scroll-padding-left:calc((100vw - 400px)/2);scrollbar-width:none;scroll-snap-type:x mandatory}.gallery-bleed::-webkit-scrollbar{display:none}.project{position:relative;flex:0 0 540px;width:540px;height:384px;overflow:hidden;background:var(--media);scroll-snap-align:start;transition:opacity .15s ease-out}.project-media{display:block;width:100%;height:100%;object-fit:cover;-webkit-user-select:none;user-select:none;transition:transform .2s var(--ease-out)}.experience-list{font-size:14px;line-height:20px}.experience-section{width:min(560px,calc(50vw + 184px))}.experience{display:grid;grid-template-columns:145px minmax(0,1fr) max-content;gap:16px;align-items:baseline;padding-block:16px;border-bottom:1px solid var(--border)}.experience:first-child{padding-top:0}.experience:last-child{border-bottom:0}.experience-period{color:var(--secondary);white-space:nowrap}.experience-role{display:contents}.experience-role>span{min-width:0;font-size:16px;line-height:20px;white-space:nowrap}.experience-role>span:last-child{color:var(--secondary)}ul{padding:0;margin:0;list-style:none}.simple-list{display:grid;gap:6px;font-size:14px;line-height:20px}.compact-list{gap:6px}.stack-list{display:grid;gap:8px;font-size:14px;line-height:20px}.stack-item{display:grid;grid-template-columns:96px minmax(0,1fr);gap:16px}.stack-category{color:var(--secondary)}.contact-copy{margin:0 0 20px;color:var(--secondary);font-size:14px;line-height:20px}.contact-links{display:grid;gap:4px}.contact-row{display:flex;gap:12px;font-size:14px;line-height:24px}.contact-row-secondary{color:var(--secondary)}.contact-row a,.contact-row button,.footer-meta a{text-decoration:underline;text-decoration-color:var(--border);text-decoration-thickness:1px;text-underline-offset:2px;transition:text-decoration-color .1s ease-out}.contact-row a:hover,.contact-row button:hover,.footer-meta a:hover{text-decoration-color:currentColor}footer{display:flex;align-items:center;justify-content:space-between;min-height:24px;margin-top:64px;padding-right:8px;color:var(--secondary);font-size:12px;line-height:16px}footer p{margin:0}.footer-meta{display:grid;gap:2px}.footer-meta a{color:var(--secondary)}.lightbox-open{overflow:hidden}.lightbox{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--foreground);background:var(--background);animation:lightbox-in .15s ease-out both}.lightbox-nav{position:absolute;z-index:1;top:0;bottom:0;width:50%}.lightbox-prev{left:0;cursor:w-resize}.lightbox-next{right:0;cursor:e-resize}.lightbox-media{display:block;width:min(765px,calc(100vw - 128px));height:min(544px,calc(100vh - 176px));object-fit:contain;background:var(--media)}.lightbox-close{position:absolute;z-index:3;top:16px;right:16px;display:grid;width:36px;height:36px;place-items:center;color:var(--secondary);border-radius:50%;transition:color .1s ease-out,background-color .1s ease-out,transform .15s var(--ease-out)}.lightbox-close:hover{color:var(--foreground);background:var(--hover)}.lightbox-close:active{transform:scale(.9)}.lightbox-caption{position:absolute;right:24px;bottom:20px;left:24px;display:flex;justify-content:space-between;color:var(--secondary);font-size:12px;line-height:16px}.lightbox-caption>span:first-child{max-width:calc(100% - 96px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes lightbox-in{0%{opacity:0}to{opacity:1}}@keyframes hero-soft-appear{0%{opacity:0;filter:blur(6px);transform:translate3d(0,6px,0)}to{opacity:1;filter:blur(0);transform:translateZ(0)}}@keyframes theme-reveal{0%{clip-path:circle(16px at var(--theme-reveal-x, 50%) var(--theme-reveal-y, 0%))}to{clip-path:circle(var(--theme-reveal-radius, 150vmax) at var(--theme-reveal-x, 50%) var(--theme-reveal-y, 0%))}}@media(max-width:600px){main{--mobile-header-offset: 24px;width:100%;max-width:none;padding:24px 16px 16px}.site-header{padding-top:var(--mobile-header-offset)}.intro{margin-top:calc(50dvh - 82px - var(--mobile-header-offset));font-size:16px;line-height:24px}.intro p{margin-bottom:20px}.section{margin-top:64px}.gallery-bleed{width:100vw;max-width:none;margin-left:-16px;padding-inline:16px;scroll-padding-inline:16px}.project{flex-basis:calc(100vw - 32px);width:calc(100vw - 32px);height:auto;aspect-ratio:540 / 384}.experience{gap:16px}.experience-section{width:100%}.simple-list,.stack-list,.contact-row,.contact-copy{font-size:16px;line-height:24px}.lightbox-media{width:calc(100vw - 32px);height:min(68vh,calc(100vh - 176px))}.lightbox-caption{right:16px;bottom:16px;left:16px}}@media(max-width:560px){.experience{grid-template-columns:132px minmax(0,1fr);gap:20px}.experience-role{display:flex;flex-direction:column;gap:4px}.experience-role>span:last-child{font-size:14px;line-height:20px}}@media(min-width:601px)and (max-width:688px){.experience{grid-template-columns:132px minmax(0,1fr);gap:20px}.experience-role{display:flex;flex-direction:column;gap:4px}.experience-role>span:last-child{font-size:14px;line-height:20px}}@media(hover:hover)and (pointer:fine){.theme-toggle:hover{color:var(--foreground);background:var(--hover)}.project:hover{opacity:.94}.project:hover .project-media{transform:scale(1.005)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}}
