@font-face{font-family:Mona Sans Variable;font-style:normal;font-display:swap;font-weight:200 900;font-stretch:75% 125%;src:url(/assets/mona-sans-vietnamese-wdth-normal-Rd0aZl9c.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:Mona Sans Variable;font-style:normal;font-display:swap;font-weight:200 900;font-stretch:75% 125%;src:url(/assets/mona-sans-latin-ext-wdth-normal-CQ1tG6In.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:Mona Sans Variable;font-style:normal;font-display:swap;font-weight:200 900;font-stretch:75% 125%;src:url(/assets/mona-sans-latin-wdth-normal-BMVx8nn_.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{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:var(--lightningcss-light,oklch(98.2% .003 46))var(--lightningcss-dark,oklch(16.5% .004 46));--line:var(--lightningcss-light,oklch(90.5% .005 46))var(--lightningcss-dark,oklch(27% .006 46));--line-strong:var(--lightningcss-light,oklch(80% .006 46))var(--lightningcss-dark,oklch(38% .006 46));--text:var(--lightningcss-light,oklch(20% .006 46))var(--lightningcss-dark,oklch(93.5% .004 46));--text-2:var(--lightningcss-light,oklch(47% .008 46))var(--lightningcss-dark,oklch(72% .006 46));--text-3:var(--lightningcss-light,oklch(60% .007 46))var(--lightningcss-dark,oklch(56% .006 46));--accent:var(--lightningcss-light,oklch(78% .155 86))var(--lightningcss-dark,oklch(86% .15 92));--selection:var(--lightningcss-light,oklch(91% .1 92))var(--lightningcss-dark,oklch(42% .08 92));--image-edge:var(--lightningcss-light,oklch(20% .006 46/.1))var(--lightningcss-dark,oklch(100% 0 0/.1));--surface:var(--lightningcss-light,oklch(99.5% .002 46))var(--lightningcss-dark,oklch(21.5% .005 46));--shadow-card:0 1px 2px var(--lightningcss-light,oklch(20% .006 46/.04))var(--lightningcss-dark,oklch(0% 0 0/.3)), 0 8px 24px -6px var(--lightningcss-light,oklch(20% .006 46/.1))var(--lightningcss-dark,oklch(0% 0 0/.45));--font:"Mona Sans Variable", ui-sans-serif, system-ui, sans-serif;--text-xs:.8125rem;--text-sm:.875rem;--text-base:1rem;--text-title:clamp(1.1875rem, 1.1rem + .35vw, 1.375rem);--text-lead:clamp(1.25rem, 1.1rem + .65vw, 1.625rem);--text-email:clamp(1.375rem, .75rem + 3.2vw, 3rem);--text-display:clamp(2.75rem, 1.4rem + 6vw, 6.25rem);--leading-body:1.6;--gutter:clamp(1.25rem, .5rem + 3.5vw, 3rem);--section-space:clamp(5.5rem, 3rem + 8vw, 10rem);--max-width:78rem;--header-h:5rem;--hero-pad:clamp(3rem, 1rem + 8vw, 8rem);--frame:min(var(--max-width), 100vw - var(--gutter));--x-center:.123;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--leading-body:1.65}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--leading-body:1.65}}*,:before,:after{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{color:var(--text);font-family:var(--font);font-size:var(--text-base);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}h1,h2,h3,p,ul,ol,dl,dd{margin:0}h1,h2,h3{font-weight:inherit;text-wrap:balance}p,li,dd{text-wrap:pretty}img{max-width:100%;height:auto;display:block}::selection{background:var(--selection);color:var(--text)}a{color:inherit;text-decoration-line:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-underline-offset:.22em;transition:text-decoration-color .15s,color .15s}:focus-visible{outline:1.5px solid var(--text);outline-offset:3px;border-radius:2px}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.container{width:100%;max-width:var(--max-width);padding-inline:max(var(--gutter), env(safe-area-inset-left)) max(var(--gutter), env(safe-area-inset-right));margin-inline:auto}.arrow{vertical-align:.05em;width:.75em;height:.75em;color:var(--text-2);transition:transform .2s var(--ease-out), color .15s ease;display:inline-block}.page{--guide-arm:4.5rem;overflow-x:clip}.hero,.section,.footer{position:relative}:is(.section,.footer):before{content:"";top:calc(var(--section-space) / 2);left:calc(50% - var(--frame) / 2);width:var(--frame);background:var(--line);pointer-events:none;height:1px;position:absolute;-webkit-mask-image:linear-gradient(90deg,#0000,#000 25% 75%,#0000);mask-image:linear-gradient(90deg,#0000,#000 25% 75%,#0000)}.footer:before{top:calc(var(--section-space) / -2)}@media (width>=48rem){:is(.section,.footer):before{left:calc(50% - var(--frame) / 2 - var(--guide-arm));width:calc(var(--frame) + var(--guide-arm) * 2);-webkit-mask-image:linear-gradient(to right, transparent, #000 var(--guide-arm), transparent calc(var(--guide-arm) * 2), transparent calc(100% - var(--guide-arm) * 2), #000 calc(100% - var(--guide-arm)), transparent);mask-image:linear-gradient(to right, transparent, #000 var(--guide-arm), transparent calc(var(--guide-arm) * 2), transparent calc(100% - var(--guide-arm) * 2), #000 calc(100% - var(--guide-arm)), transparent)}:is(.hero,.section,.footer):after{content:"";top:calc(var(--section-space) / 2);bottom:calc(var(--section-space) / -2);left:calc(50% - var(--frame) / 2);width:var(--frame);border-inline:1px solid var(--line);pointer-events:none;-webkit-mask-image:linear-gradient(to bottom, #000, transparent var(--guide-arm), transparent calc(100% - var(--guide-arm)), #000);mask-image:linear-gradient(to bottom, #000, transparent var(--guide-arm), transparent calc(100% - var(--guide-arm)), #000);position:absolute}.hero:after{-webkit-mask-image:linear-gradient(to bottom, transparent calc(100% - var(--guide-arm)), #000);mask-image:linear-gradient(to bottom, transparent calc(100% - var(--guide-arm)), #000);top:0}.footer:after{top:calc(var(--section-space) / -2);-webkit-mask-image:linear-gradient(to bottom, #000, transparent var(--guide-arm));mask-image:linear-gradient(to bottom, #000, transparent var(--guide-arm));bottom:0}}.section.reveal:before{opacity:0;transition:opacity .9s}.section.reveal[data-visible]:before{opacity:1}.site-header{z-index:30;transition:translate .38s var(--ease-out), background-color .2s ease, box-shadow .2s ease;position:sticky;top:0}:root[data-scrolled] .site-header{background:color-mix(in oklch, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 1px 0 var(--line)}:root[data-header=hidden] .site-header{translate:0 calc(-100% - 2px)}.header{height:var(--header-h);font-size:var(--text-sm);align-items:center;gap:1.25rem;display:flex}.wordmark{letter-spacing:-.005em;--lift:1lh;margin-right:auto;font-weight:500;text-decoration:none}.swap{width:var(--from);white-space:pre;transition:width .42s var(--ease-out) calc((var(--slots) - var(--i)) * 12ms);display:inline-grid;overflow-y:clip}.swap>span{transition:opacity .32s var(--ease-out), translate .42s var(--ease-out);transition-delay:inherit;grid-area:1/1;justify-self:start}.swap>span+span{opacity:0;translate:0 var(--lift)}@media (hover:hover){.wordmark:hover .swap{width:var(--to);transition-delay:calc(var(--i) * 22ms)}.wordmark:hover .swap>span:first-child{opacity:0;translate:0 calc(var(--lift) * -1)}.wordmark:hover .swap>span+span{opacity:1;translate:none}}.wordmark:focus-visible .swap{width:var(--to);transition-delay:calc(var(--i) * 22ms)}.wordmark:focus-visible .swap>span:first-child{opacity:0;translate:0 calc(var(--lift) * -1)}.wordmark:focus-visible .swap>span+span{opacity:1;translate:none}.nav li:not(:last-child){display:none}.nav ul{gap:1.75rem;padding:0;list-style:none;display:flex}.nav a{color:var(--text-2);text-decoration:none}.header-controls{align-items:center;gap:.5rem;margin-right:-.5rem;display:flex}.lang-switch{display:flex}.theme-toggle{width:2.5rem;height:2.5rem;color:var(--text-2);transition:color .15s ease, transform .16s var(--ease-out);place-items:center;display:inline-grid}.theme-toggle svg{width:1rem;height:1rem;transition:opacity .2s ease, filter .2s ease, transform .3s var(--ease-out);grid-area:1/1}.theme-toggle[data-current=light] .icon-sun,.theme-toggle[data-current=dark] .icon-moon{opacity:0;filter:blur(2px);transform:scale(.8)rotate(-30deg)}.theme-toggle:active{transform:scale(.94)}.lang-switch button{min-width:2.5rem;min-height:2.5rem;color:var(--text-2);font-size:var(--text-xs);letter-spacing:.04em;transition:color .15s ease, transform .16s var(--ease-out);padding-top:.125rem}.lang-switch button[aria-pressed=true]{color:var(--text);cursor:default;font-weight:550}.lang-switch button:active{transform:scale(.94)}@media (width>=48rem){.header{gap:2rem}.nav li:not(:last-child){display:list-item}}.hero{padding-block:var(--hero-pad) 0;display:grid;position:relative}.hero-name{font-size:var(--text-display);letter-spacing:-.045em;margin-left:-.04em;font-weight:300;font-stretch:108%;line-height:.98}.hero-intro{max-width:30ch;color:var(--text-2);font-size:var(--text-lead);letter-spacing:-.01em;margin-top:clamp(1.5rem,1rem + 1.5vw,2.25rem);font-weight:350;line-height:1.4}.status{font-size:var(--text-sm);align-items:center;gap:.625rem;margin-top:1rem;display:flex}.status-dot{background:var(--accent);width:.4375rem;height:.4375rem;translate:0 calc(var(--x-center) * 1em);border-radius:50%;flex:none}.hero-links{font-size:var(--text-base);margin-top:clamp(2rem,1.5rem + 1.5vw,2.75rem)}.primary-link{font-weight:500}.link-list{font-size:var(--text-sm);flex-wrap:wrap;gap:.5rem 1.75rem;padding:0;list-style:none;display:flex}.link-list a{align-items:center;gap:.25rem;min-height:2.75rem;display:inline-flex}.hero-links a{min-height:2rem}@media (pointer:coarse){.hero-links a{min-height:2.75rem}}.section{padding-top:var(--section-space);scroll-margin-top:calc(2.5rem - var(--section-space));gap:2rem;display:grid}.section-label{color:var(--text-2);font-size:var(--text-sm);font-weight:450}.section-body{row-gap:3rem;min-width:0;display:grid}@media (width>=48rem){.section{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:2rem}.section-rail{transition:top .38s var(--ease-out);grid-column:1/span 3;align-self:baseline;position:sticky;top:2.5rem}:root[data-header=shown] .section-rail{top:calc(var(--header-h) + 1.5rem)}.section-body{grid-column:4/-1;grid-template-columns:subgrid;align-self:baseline}.section-body>*{grid-column:1/-1}}.prose{max-width:36em;font-size:var(--text-lead);letter-spacing:-.01em;gap:1.25rem;font-weight:350;line-height:1.45;display:grid}.prose p+p{color:var(--text-2)}.section-aside{aspect-ratio:4/5;width:8rem;position:relative}.about-photo{object-fit:cover;object-position:50% 22%;outline:1px solid var(--image-edge);outline-offset:-1px;border-radius:2px;width:100%;height:100%;position:absolute;inset:0}@media (hover:hover){.about-photo,.place-logo{filter:grayscale();transition:filter .4s var(--ease-out)}.about-photo{filter:grayscale()contrast(1.05)}.about-photo:hover,.place:hover .place-logo,.place-link:focus-visible .place-logo{filter:none}}@media (width<=47.99rem){#about{grid-template-columns:minmax(0,1fr)}#about .section-body{display:contents}#about .section-aside{order:1;width:7.5rem}#about .facts{order:2;margin-top:1rem}}@media (width>=48rem){#about{--half-leading:calc((var(--leading-body) - 1.41) / 2);row-gap:0}#about .section-body{grid-row:1/span 2;grid-template-rows:subgrid;align-self:stretch;row-gap:0}#about .section-rail{margin-top:calc(var(--text-lead) * 1.11 - var(--text-sm) * (var(--half-leading) + 1.09));align-self:start}#about .facts{margin-top:3rem}#about .section-aside{aspect-ratio:auto;width:auto;margin-top:calc(3rem + var(--text-sm) * (var(--half-leading) + .361));margin-bottom:calc(var(--text-sm) * (var(--half-leading) + .32));grid-area:2/1/auto/span 2}}@media (width>=48rem) and (width<=63.99rem){#about .section-aside{grid-column:1/span 3}}.label-letters,.label-letters span{display:inline-block}@media (width>=48rem){#about .section-rail{z-index:2}}.place{white-space:nowrap;position:relative}.place-link{-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong)}.place-logo,.place-card-logo{object-fit:contain;display:inline-block}img.logo-dark,:root[data-theme=dark] img.logo-light{display:none}:root[data-theme=dark] img.logo-dark{display:inline-block}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) img.logo-light{display:none}:root:not([data-theme=light]) img.logo-dark{display:inline-block}}.place-logo{vertical-align:-.12em;width:.92em;height:.92em;margin-right:.28em}.place-card{z-index:20;background:var(--surface);outline:1px solid var(--line);width:18rem;box-shadow:var(--shadow-card);color:var(--text-2);font-size:var(--text-sm);letter-spacing:0;white-space:normal;pointer-events:none;visibility:hidden;opacity:0;transform-origin:var(--origin-x,left) var(--origin-y,bottom);border-radius:10px;gap:.375rem;padding:1rem 1.125rem;font-weight:400;line-height:1.45;transition:opacity .12s,transform .12s,visibility 0s linear .12s;display:grid;position:absolute;bottom:calc(100% + .625rem);left:0;transform:translateY(4px)scale(.97)}.place[data-align=end] .place-card{--origin-x:right;left:auto;right:0}.place[data-side=below] .place-card{--origin-y:top;top:calc(100% + .625rem);bottom:auto;transform:translateY(-4px)scale(.97)}.place-card-head{align-items:center;gap:.625rem;margin-bottom:.25rem;display:flex}.place-card-logo{width:1.75rem;height:1.75rem}.place-card-name{color:var(--text);font-weight:500}.place-card-role,.place-card-url{font-size:var(--text-xs)}.place-card-role{color:var(--text)}@media (hover:hover) and (pointer:fine){.place:hover .place-card{visibility:visible;opacity:1;transition:opacity .18s var(--ease-out) .25s, transform .18s var(--ease-out) .25s, visibility 0s linear .25s;transform:none}}.place:has(.place-link:focus-visible) .place-card{visibility:visible;opacity:1;transition:opacity .18s var(--ease-out), transform .18s var(--ease-out), visibility 0s;transform:none}.facts{font-size:var(--text-sm);grid-template-columns:repeat(auto-fit,minmax(20rem,1fr));gap:2.5rem 2rem;display:grid}.facts-title{color:var(--text-2);font-size:var(--text-sm);margin-bottom:1rem}.facts dl{gap:.75rem;display:grid}.facts dl>div{grid-template-columns:7.5rem 1fr;gap:1rem;display:grid}.facts dd{color:var(--text-2)}@media (width>=48rem){.facts,.fact-group{grid-template-columns:subgrid;column-gap:normal}.fact-group{grid-column:1/-1;display:grid}.facts-title{grid-column:1/span 3;margin-bottom:0}.facts dl{grid-column:4/-1}}.rows{padding:0;list-style:none}.row+.row{border-top:1px solid var(--line)}.row-grid:is(.row:first-child,.row:first-child>*){padding-top:0}.row-grid:is(.row:last-child,.row:last-child>*){padding-bottom:0}.row-grid{gap:.5rem 2rem;padding-block:1.75rem 2rem;display:grid}.project{text-decoration:none}.row-meta{color:var(--text-2);font-size:var(--text-sm);font-variant-numeric:tabular-nums}.row-main{gap:.75rem;max-width:38em;display:grid}.row-title{color:var(--text);font-size:var(--text-title);letter-spacing:-.015em;font-weight:400;line-height:1.3}.project .row-meta{align-content:start;gap:.25rem;display:grid}.row-sub{color:var(--text-2);font-size:var(--text-sm)}.row-sub a{align-items:center;gap:.25rem;display:inline-flex}.points{color:var(--text-2);gap:.375rem;padding:0;list-style:none;display:grid}.tags{color:var(--text-2);font-size:var(--text-xs);letter-spacing:.01em}.project .row-main>p:first-child{color:var(--text-2);transition:color .15s}@media (width>=48rem){.rows,.rows>li,.row-grid{grid-column:1/-1;grid-template-columns:subgrid;column-gap:normal;display:grid}.row-grid>.row-meta{grid-column:1/span 3}.row-grid>.row-main{grid-column:4/-1}.row-grid{align-items:baseline}}.contact-text{max-width:34em;color:var(--text-2);font-size:var(--text-lead);letter-spacing:-.01em;font-weight:350;line-height:1.45}.email-row{flex-wrap:wrap;align-items:center;gap:1rem 1.5rem;display:flex;container-type:inline-size}.email{font-size:min(var(--text-email), 6.7cqi);letter-spacing:-.035em;overflow-wrap:anywhere;text-underline-offset:.18em;font-weight:300;font-stretch:104%;line-height:1.15;text-decoration-thickness:1px}.copy{translate:0 calc(var(--x-center) * var(--text-email));border:1px solid var(--line-strong);min-height:2.25rem;color:var(--text-2);font-size:var(--text-sm);transition:transform .16s var(--ease-out), border-color .15s ease, color .15s ease;border-radius:999px;padding:0 1rem;display:inline-grid}.copy>span{grid-area:1/1;align-self:center;transition:opacity .2s,filter .2s}.copy:not([data-copied]) .copy-done,.copy[data-copied] .copy-idle{opacity:0;filter:blur(2px)}.copy[data-copied]{color:var(--text)}.copy:active{transform:scale(.97)}.footer{margin-top:var(--section-space);padding-block:2rem max(2rem, env(safe-area-inset-bottom));color:var(--text-2);font-size:var(--text-xs);flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem;display:flex}@media (hover:hover) and (pointer:fine){a:hover{text-decoration-color:currentColor}.nav a:hover,.lang-switch button:hover,.theme-toggle:hover{color:var(--text)}a:hover .arrow{color:var(--text);transform:translate(1.5px,-1.5px)}.project-link:hover .row-main>p:first-child{color:var(--text)}.copy:hover{border-color:var(--text-2);color:var(--text)}}.enter{animation:enter .9s var(--ease-out) backwards;animation-delay:calc(80ms + var(--i,0) * 80ms)}@keyframes enter{0%{opacity:0;filter:blur(6px);transform:translateY(12px)}}.reveal :is(.section-rail,.section-aside,.section-body>:not(.rows),.rows>li){opacity:0;transition:opacity .7s var(--ease-out) calc(var(--i,0) * 70ms), transform .9s var(--ease-out) calc(var(--i,0) * 70ms), top .38s var(--ease-out);transform:translateY(14px)}.reveal[data-visible] :is(.section-rail,.section-aside,.section-body>:not(.rows),.rows>li){opacity:1;transform:none}::view-transition-old(root){animation-duration:.24s;animation-timing-function:ease}::view-transition-new(root){animation-duration:.24s;animation-timing-function:ease}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.enter{animation-name:fade;animation-duration:.4s}.reveal :is(.section-rail,.section-aside,.section-body>:not(.rows),.rows>li){transition:opacity .4s;transform:none}.copy:active,.lang-switch button:active,.theme-toggle:active,a:hover .arrow{transform:none}.theme-toggle svg{transition:opacity .2s}.place-card{filter:none;transform:none}.wordmark{--lift:0}.site-header{transition:opacity .2s,visibility .2s,background-color .2s,box-shadow .2s}:root[data-header=hidden] .site-header{opacity:0;visibility:hidden;translate:none}}@keyframes fade{0%{opacity:0}}@media print{.enter,.reveal :is(.section-rail,.section-aside,.section-body>:not(.rows),.rows>li){opacity:1!important;animation:none!important;transform:none!important}.section.reveal:before{opacity:1!important}}
