@font-face{font-family:Piazzolla Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/piazzolla-cyrillic-ext-opsz-normal.Dx1MlbxL.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:Piazzolla Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/piazzolla-cyrillic-opsz-normal.uMGx9oK4.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Piazzolla Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/piazzolla-greek-ext-opsz-normal.CB6C6iOv.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Piazzolla Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/piazzolla-greek-opsz-normal.qakIOn1K.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:Piazzolla Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/piazzolla-vietnamese-opsz-normal.C4O-1sFd.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:Piazzolla Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/piazzolla-latin-ext-opsz-normal.Clyd7oyl.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:Piazzolla Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/piazzolla-latin-opsz-normal.CXYZFVO9.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:Work Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/work-sans-vietnamese-wght-normal.BKsN3ITN.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:Work Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/work-sans-latin-ext-wght-normal.B5dZ8C4S.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:Work Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/work-sans-latin-wght-normal.Bl-S9Xys.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:dark;--bg:#0c0c0d;--surface:#151516;--raised:#1f1f21;--line:#2a2a2d;--wire:#6a6a70;--text:#ededed;--muted:#a0a0a0;--accent:#8cbf6a;--on-accent:#0c0c0d;--action:var(--text);--on-action:var(--bg);--data-1:#c7bb4d;--data-2:#9e843a;--ornament:#3a3a3e;--depth:#161617;--undercity:#100e0f;--dark-plate:var(--surface);--light-plate:#f8f9fa;--cover-field:var(--raised);--panel:color-mix(in srgb, var(--bg) 86%, transparent);--panel-blur:blur(14px);--panel-edge:var(--line);--surface-highlight:inset 0 1px 0 #ffffff0f;--surface-shadow:0 2px 4px #0000001f, 0 20px 40px -24px #00000070;--panel-shadow:var(--surface-highlight), var(--surface-shadow);--panel-muted:var(--muted);--panel-accent:var(--accent);--wash:color-mix(in srgb, var(--bg) 88%, transparent);--glow:#ffffff0a;--lit-shadow:0 0 0 transparent;--grain:.07;--font-display:"Piazzolla Variable", Georgia, "Times New Roman", serif;--font-text:"Work Sans Variable", Verdana, Arial, sans-serif;--display-weight:600;--text-weight:400;--strong-weight:600;--text-box:44rem;--size-display:clamp(2.25rem, 1.5652rem + 3.0435vw, 4rem);--leading-display:1.05;--tracking-display:-.02em;--size-heading-l:clamp(2.25rem, 1.7609rem + 2.1739vw, 3.5rem);--leading-heading-l:1.1;--tracking-heading-l:-.01em;--size-heading-m:clamp(2rem, 1.6087rem + 1.7391vw, 3rem);--leading-heading-m:1.1;--tracking-heading-m:-.01em;--size-heading-s:1.5rem;--leading-heading-s:1.25;--size-lede:1.3125rem;--leading-lede:1.5;--size-body:1.125rem;--leading-body:1.6;--size-ui:1rem;--leading-ui:1.5;--size-small:.875rem;--leading-small:1.5;--size-label:.875rem;--leading-label:1.4;--tracking-label:.06em;--size-caption:.75rem;--leading-caption:1.5;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-12:3rem;--space-16:4rem;--space-24:6rem;--inset-s:clamp(var(--space-3), .4565rem + 1.3043vw, var(--space-6));--inset-m:clamp(var(--space-4), .6087rem + 1.7391vw, var(--space-8));--inset-l:clamp(var(--space-6), .913rem + 2.6087vw, var(--space-12));--space-block:clamp(var(--space-8), 1.2174rem + 3.4783vw, var(--space-16));--space-chapter:clamp(var(--space-16), 3.2174rem + 3.4783vw, var(--space-24));--wrap-pad:clamp(16px, calc(14vw - 58px), 320px);--wash-x:calc(var(--wrap-pad) + var(--text-box) - 7rem);--wash-reach:clamp(280px, 30vw, 560px);--fade:clamp(120px, 32svh, 380px);--section-pad:clamp(80px, 12vw, 136px);--hero-pad-bottom:clamp(72px, 10vw, 128px);--hero-pad-top:clamp(72px, 14vw, 168px);--panel-width:min(100%, clamp(860px, 75%, 1200px));--radius-sm:3px;--radius:6px;--motion-instant:.1s;--motion-ui:.32s;--motion-page:.6s;--motion-reveal:.8s;--motion-depth:.9s;--motion-expressive:1.2s;--ease-out:cubic-bezier(.33, 1, .68, 1);--ease-reveal:cubic-bezier(.165, .84, .44, 1);--ease-expressive:cubic-bezier(.16, 1, .3, 1);--ease-travel:cubic-bezier(.76, 0, .24, 1);--stagger-char:30ms;--stagger-item:60ms;--stagger-group:.15s;--travel-sm:8px;--travel-md:12px}@supports (height:round(1px, 1px)){:root{--fade:round(clamp(120px, 32svh, 380px), 1px);--section-pad:round(clamp(80px, 12vw, 136px), 1px);--hero-pad-bottom:round(clamp(72px, 10vw, 128px), 1px)}}:root[data-scheme=light]{color-scheme:light;--bg:#eeeff1;--surface:#f8f9fa;--raised:#e2e4de;--line:#d0d3c8;--wire:#6f7965;--text:#2b2120;--muted:#555b4b;--accent:#1c6a6e;--on-accent:#f8f9fa;--action:var(--accent);--on-action:var(--on-accent);--data-1:#6b6118;--data-2:#7a5b1a;--ornament:#b4bba6;--depth:#dce1ea;--dark-plate:var(--undercity);--cover-field:#1c6a6e;--panel:color-mix(in srgb, var(--surface) 92%, transparent);--panel-blur:blur(16px);--panel-edge:var(--line);--surface-highlight:inset 0 1px 0 #f8f9facc;--surface-shadow:0 2px 4px #2b21200a, 0 20px 40px -24px #2b212033;--panel-shadow:var(--surface-highlight), var(--surface-shadow);--panel-muted:var(--muted);--panel-accent:var(--accent);--wash:color-mix(in srgb, var(--bg) 65%, transparent);--glow:#1c6a6e1a;--lit-shadow:0 0 0 transparent;--grain:.025}@media (prefers-color-scheme:light){:root:not([data-scheme]){color-scheme:light;--bg:#eeeff1;--surface:#f8f9fa;--raised:#e2e4de;--line:#d0d3c8;--wire:#6f7965;--text:#2b2120;--muted:#555b4b;--accent:#1c6a6e;--on-accent:#f8f9fa;--action:var(--accent);--on-action:var(--on-accent);--data-1:#6b6118;--data-2:#7a5b1a;--ornament:#b4bba6;--depth:#dce1ea;--dark-plate:var(--undercity);--cover-field:#1c6a6e;--panel:color-mix(in srgb, var(--surface) 92%, transparent);--panel-blur:blur(16px);--panel-edge:var(--line);--surface-highlight:inset 0 1px 0 #f8f9facc;--surface-shadow:0 2px 4px #2b21200a, 0 20px 40px -24px #2b212033;--panel-shadow:var(--surface-highlight), var(--surface-shadow);--panel-muted:var(--muted);--panel-accent:var(--accent);--wash:color-mix(in srgb, var(--bg) 65%, transparent);--glow:#1c6a6e1a;--lit-shadow:0 0 0 transparent;--grain:.025}}*{box-sizing:border-box}html{--site-header-height:max(72px, 4.5rem);scroll-behavior:smooth;scroll-padding-top:calc(var(--site-header-height) + var(--space-4));background:var(--bg)}body{background:var(--bg);color:var(--text);font:var(--text-weight) var(--size-body) / var(--leading-body) var(--font-text);-webkit-font-smoothing:antialiased;margin:0}body:after{content:"";z-index:15;pointer-events:none;opacity:var(--grain);background:url(/images/grain.svg) 0 0/128px 128px;position:fixed;inset:0}a{color:var(--accent);text-underline-offset:3px;transition:color var(--motion-ui) var(--ease-out), text-decoration-thickness var(--motion-ui) var(--ease-out)}a:hover{text-decoration-thickness:2px}button,a{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:var(--radius-sm)}[tabindex="-1"]:focus{outline:none}::selection{background:var(--accent);color:var(--on-accent)}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{font-family:var(--font-display);font-weight:var(--display-weight);font-size:var(--size-heading-s);line-height:var(--leading-heading-s);overflow-wrap:anywhere}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}[hidden]{display:none!important}img{max-width:100%;height:auto;display:block}.wrap{width:100%;max-width:none;padding-inline:var(--wrap-pad);margin-inline:auto}.label{font:var(--strong-weight) var(--size-label) / var(--leading-label) var(--font-text);letter-spacing:var(--tracking-label);text-transform:uppercase}.eyebrow{color:var(--muted)}.label-number{color:var(--accent);margin-right:.5em}.dot-list{flex-wrap:wrap;display:flex}.dot-list>:not(:last-child):after{content:"·" / "";color:var(--accent);margin-inline:.5em}.button{--magnetic-x:0px;--magnetic-y:0px;align-items:center;gap:var(--space-2);min-height:48px;padding:var(--space-3) var(--space-6);border:1px solid var(--action);border-radius:var(--radius-sm);background:var(--action);color:var(--on-action);font:var(--strong-weight) var(--size-ui) / 1 var(--font-text);cursor:pointer;transform:translate(var(--magnetic-x), var(--magnetic-y));transition:transform var(--motion-ui) var(--ease-out), box-shadow var(--motion-ui) var(--ease-out), color var(--motion-ui) var(--ease-out), border-color var(--motion-ui) var(--ease-out), translate var(--motion-instant) var(--ease-out);text-decoration:none;display:inline-flex}.button:hover{box-shadow:var(--lit-shadow), 0 0 0 3px var(--raised)}.button:active{translate:0 1px}.button.secondary{border-color:var(--wire);color:var(--text);background:0 0}.button.secondary:hover{border-color:var(--accent);color:var(--accent);box-shadow:none}.button>span{transition:translate var(--motion-ui) var(--ease-out)}.button:hover>span{translate:0 2px}.skip-link{top:var(--space-4);left:var(--space-4);z-index:30;background:var(--action);padding:var(--space-3) var(--space-6);color:var(--on-action);font-weight:var(--strong-weight);position:fixed;transform:translateY(-200%)}.skip-link:focus{transform:none}.site-header{z-index:20;background:color-mix(in srgb, var(--bg) 92%, transparent);border-bottom:1px solid var(--line);backdrop-filter:blur(8px);position:sticky;top:0}[data-header-position=flow]{scroll-padding-top:var(--space-4)}[data-header-position=flow] .site-header{position:relative}.site-header-inner{justify-content:space-between;align-items:center;gap:var(--space-4);min-height:max(72px,4.5rem);display:flex}.wordmark-link{min-height:44px;color:var(--text);padding-block:var(--space-2);flex:none;align-items:center;display:flex}.site-header-actions{align-items:center;gap:var(--space-2);flex:none;display:flex}.site-header-controls{align-items:center;min-width:44px;min-height:44px;display:flex}.site-header-controls:empty,.site-header-controls:not(:has(>:not([hidden]))){display:none}@media (prefers-reduced-motion:no-preference){[data-scheme] .site-header-controls:has(>.motion-toggle){display:flex}}.wordmark{width:auto;height:26px;display:block}.site-header nav{align-items:center;gap:clamp(var(--space-1), 2vw, var(--space-4));flex-wrap:wrap;min-width:0;margin-left:auto;display:flex}.site-header nav a{min-height:44px;padding-inline:var(--space-2);color:var(--text);font-weight:500;font-size:var(--size-ui);transition:color var(--motion-ui) var(--ease-out);align-items:center;line-height:1.25;text-decoration:none;display:inline-flex}.site-header nav a:hover{color:var(--accent)}.site-header nav .nav-contact{border:1px solid var(--wire);border-radius:var(--radius-sm);padding-inline:var(--space-4);background:linear-gradient(var(--action), var(--action)) center bottom / 100% 0% no-repeat;transition:background-size var(--motion-ui) var(--ease-out), color var(--motion-ui) var(--ease-out), border-color var(--motion-ui) var(--ease-out)}.site-header nav .nav-contact:hover,.site-header nav .nav-contact:focus-visible{border-color:var(--action);color:var(--on-action);background-size:100% 100%}.scheme-toggle{--target-overhang:-12px;width:44px;height:44px;margin-right:var(--target-overhang);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;transition:color var(--motion-ui) var(--ease-out);background:0 0;border:0;flex:none;place-items:center;padding:0;display:inline-grid}.scheme-toggle:hover{color:var(--accent)}.scheme-toggle:focus-visible{outline-offset:-2px}:root:not([data-scheme]) .scheme-toggle,.scheme-icon-sun,:root[data-scheme=light] .scheme-icon-moon{display:none}:root[data-scheme=light] .scheme-icon-sun{display:inline}.scheme-switching :is(a,button){transition:none!important}.work-cover{aspect-ratio:16/10;background:radial-gradient(ellipse 80% 70% at 50% 120%, var(--glow), transparent 70%), var(--cover-field);position:relative;overflow:hidden}.work-cover-frame{transition:transform var(--motion-depth) var(--ease-expressive);position:absolute;inset:0;overflow:hidden}.frame-phone .work-cover-frame{border-radius:16px 16px 0 0;width:min(64%,300px);margin-inline:auto;inset:28px 0 0}.frame-page .work-cover-frame{border-radius:var(--radius) var(--radius) 0 0;inset:28px 28px 0}.frame-phone .work-cover-frame,.frame-page .work-cover-frame{box-shadow:var(--surface-shadow)}.work-cover img{object-fit:cover;object-position:top center;width:100%;height:100%}.frame-bleed{background:var(--cover-bg,var(--undercity))}.frame-bleed img{object-fit:contain;object-position:center}.frame-banner{background:var(--cover-bg,transparent)}.frame-banner img{object-position:center}.contact{padding-block:var(--section-pad) var(--space-8);border-top:1px solid var(--line);background:radial-gradient(ellipse 60% 70% at 85% 115%, var(--glow), transparent 70%), var(--bg)}.contact-main{gap:var(--space-4);max-width:var(--text-box);display:grid}.contact h2{font-size:var(--size-heading-l);line-height:var(--leading-heading-l);letter-spacing:var(--tracking-heading-l)}.contact-line{margin-top:var(--space-2);color:var(--muted)}.contact-email{gap:var(--space-4);margin-top:var(--space-2);display:grid}.contact-address{font:var(--display-weight) var(--size-heading-s) / var(--leading-heading-s) var(--font-display);overflow-wrap:anywhere;user-select:all}.contact-actions{align-items:center;gap:var(--space-3) var(--space-4);flex-wrap:wrap;display:flex}.contact-linkedin{min-height:48px;padding-inline:var(--space-1);font-weight:var(--strong-weight);align-items:center;gap:.3em;display:inline-flex}.contact-status{min-height:1.6em;color:var(--muted);font-size:var(--size-small)}.contact-status:empty{min-height:0}.footer-bar{justify-content:space-between;gap:var(--space-3);margin-top:var(--space-chapter);padding-top:var(--space-6);border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;display:flex}.footer-bar a{color:var(--muted);text-decoration:none}.footer-bar a:hover{color:var(--accent)}@keyframes reveal-soft{0%{opacity:0;transform:translateY(var(--travel-md))}to{opacity:1;transform:none}}@keyframes reveal-pop{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:no-preference){[data-reveal].is-revealed{animation:reveal-soft var(--motion-reveal) var(--ease-reveal) both}[data-reveal=pop].is-revealed{animation:reveal-pop var(--motion-reveal) var(--ease-reveal) both}[data-reveal=lines].is-revealed{animation:none}.reveal-line{margin-bottom:-.08em;padding-bottom:.08em;display:block;overflow:clip}.reveal-line>span{animation:reveal-line var(--motion-reveal) var(--ease-reveal) both;animation-delay:calc(var(--line-index) * var(--stagger-item) * 2);display:block}}@keyframes reveal-line{0%{transform:translateY(105%)}to{transform:none}}@media (prefers-reduced-motion:no-preference){::view-transition-group(*){animation-duration:var(--motion-page);animation-timing-function:var(--ease-travel)}::view-transition-group(*.project-title){animation-duration:.5s}html:active-view-transition-type(wipe)::view-transition-old(root){animation:none}html:active-view-transition-type(wipe)::view-transition-new(root){animation:page-wipe var(--motion-page) var(--ease-travel) both}}.work-cover-frame{view-transition-class:project-cover}.work-card h3,.case-study h1,.case-next-title{view-transition-class:project-title}@media (prefers-reduced-motion:no-preference){html[data-arrival] .wordmark{clip-path:polygon(-10% -50%,110% -50%,110% 100%,-10% 100%);overflow:visible}html[data-arrival] .wordmark-letter{transform-box:view-box;animation:arrival-rise var(--arrival-duration) var(--ease-reveal) both;animation-delay:calc(var(--letter-index) * 60ms)}}:root{--arrival-duration:.8s}@keyframes arrival-rise{0%{transform:translateY(110%)}to{transform:none}}@keyframes page-wipe{0%{clip-path:circle(0 at var(--wipe-x,50%) var(--wipe-y,50%))}to{clip-path:circle(var(--wipe-r,150%) at var(--wipe-x,50%) var(--wipe-y,50%))}}@media (width<=639px){html{--site-header-height:max(109px, 6.8125rem)}.site-header-inner{gap:var(--space-1) var(--space-3);min-height:0;padding-block:var(--space-2);grid-template-columns:minmax(0,1fr) auto;display:grid}.wordmark-link{grid-area:1/1;justify-self:start}.site-header-actions{grid-area:1/2}.site-header nav{gap:var(--space-1);grid-area:2/1/auto/-1;width:100%;margin:0}.site-header nav a{padding-inline:var(--space-2);flex:auto;justify-content:center}.site-header nav .nav-contact{padding-inline:var(--space-2)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation:none!important}.button,.button:hover>span,.button:active{transform:translate(0,0)}}@media print{body:after{display:none}}@media (forced-colors:active){body:after{display:none}}.hub-return-banner[data-astro-cid-kkoxisxz]{z-index:16;background:var(--surface);color:var(--text);border-bottom:1px solid var(--line);padding-inline:max(var(--wrap-pad), env(safe-area-inset-left)) max(var(--wrap-pad), env(safe-area-inset-right));position:relative}a[data-astro-cid-kkoxisxz]{width:fit-content;max-width:100%;min-height:44px;padding-block:var(--space-2);color:inherit;font:500 var(--size-small) / 1.5 var(--font-text);align-items:center;text-decoration:none;display:flex}a[data-astro-cid-kkoxisxz]:hover{text-underline-offset:.2em;text-decoration:underline}a[data-astro-cid-kkoxisxz]:focus-visible{outline:2px solid var(--accent);outline-offset:-4px}.arrow-up-right[data-astro-cid-o65qyngq]{flex:none;width:.75em;height:.75em}
