@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(/_astro/bricolage-grotesque-vietnamese-wdth-normal.BKE08zty.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(/_astro/bricolage-grotesque-latin-ext-wdth-normal.DoS1gVTC.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(/_astro/bricolage-grotesque-latin-wdth-normal.Dtb2a5nO.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 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{color-scheme:dark;--signal:#ff5a1f;--on-signal:#140a05;--on-signal-2:#3b1a0c;--on-signal-line:#140a05b8;--bg:#0e1116;--s1:#151920;--s2:#1d222b;--line:#f0f4fa17;--line-2:#f0f4fa29;--ink:#f3f5f8;--ink-2:#bcc3cd;--ink-3:#9aa3af;--accent:#ff5a1f;--accent-ink:#ff7a45;--shadow:0 1px 0 #ffffff0a inset, 0 24px 60px -24px #000000b3, 0 8px 20px -12px #00000080;--display:"Bricolage Grotesque Variable", "Arial Narrow", "Helvetica Neue", system-ui, sans-serif;--sans:"Geist Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"Geist Mono Variable", ui-monospace, "SF Mono", Menlo, monospace;--ease:cubic-bezier(.16, 1, .3, 1);--spring:linear(0, .009, .035 2.1%, .141 4.4%, .723 12.9%, .938 16.7%, 1.017 19.4%, 1.067, 1.099 24.3%, 1.108 26%, 1.103, 1.085 30.7%, 1.007 38.9%, .985 43%, .981 45.1%, .983 48.8%, 1.002 59.7%, 1);--gut:clamp(1rem, 4.4vw, 2.5rem);--max:82rem;--r:18px}@media (prefers-color-scheme:light){:root{color-scheme:light;--bg:#f6f7f9;--s1:#fff;--s2:#edeff3;--line:#0f141e17;--line-2:#0f141e29;--ink:#12151a;--ink-2:#434a54;--ink-3:#59616c;--accent-ink:#b5380a;--shadow:0 1px 2px #1419230f, 0 24px 50px -28px #14192359}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scrollbar-color:var(--s2) var(--bg);overflow-x:clip}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--bg);color:var(--ink);font:400 1rem/1.55 var(--sans);font-feature-settings:"ss01";-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;accent-color:var(--accent);margin:0;overflow-x:clip}::selection{background:var(--signal);color:var(--on-signal)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}[hidden]{display:none!important}img,video{max-width:100%;height:auto;display:block}picture{display:contents}a{color:inherit;text-decoration:none}h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0}ul,ol{padding:0;list-style:none}button,input,textarea{font:inherit;color:inherit}code,.mono{font-family:var(--mono);font-feature-settings:normal;font-size:.875em}.wrap{width:min(100% - 2 * var(--gut), var(--max));margin-inline:auto}.sprite{width:0;height:0;position:absolute;overflow:hidden}.ic{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:1em;height:1em}.ic.solid{fill:currentColor;stroke:none}.skip{z-index:50;background:var(--on-signal);color:#fff4ec;border-radius:10px;padding:.7rem 1rem;font-weight:600;position:absolute;top:-4rem;left:.75rem}.skip:focus{top:.75rem}.h2{font:780 clamp(2.75rem, 12vw, 5rem)/.92 var(--display);letter-spacing:-.008em;text-wrap:balance;font-stretch:75%}.count{font-variant-numeric:tabular-nums}.chip{border:1px solid var(--line-2);min-height:1.6rem;color:var(--ink-2);white-space:nowrap;border-radius:999px;align-items:center;gap:.4rem;padding:.1rem .6rem;font-size:.75rem;font-weight:550;line-height:1.2;display:inline-flex}.chip:before{content:"";background:var(--ink-3);border-radius:50%;width:6px;height:6px}.chip.is-shipped:before{background:var(--accent)}.chip.is-in-development:before,.chip.is-prototype:before{box-shadow:inset 0 0 0 1.5px var(--ink-3);background:0 0}.hp{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.writing{padding-top:clamp(3rem,8vw,5.5rem)}.wr-list{border-bottom:1px solid var(--line-2);margin-top:clamp(1.25rem,3vw,2rem)}.wr-list li{view-timeline:--rule;position:relative}.wr-list li:before{content:"";background:var(--line-2);transform-origin:0;height:1px;position:absolute;inset:0 0 auto}.wr{gap:.35rem;padding-block:1.25rem 1.35rem;display:grid}.wr-t{font:720 clamp(1.625rem, 6.5vw, 2.5rem)/1.02 var(--display);letter-spacing:-.004em;text-wrap:balance;transition:transform .4s var(--ease);font-stretch:85%}.wr-d{color:var(--ink-2)}.wr-go{color:var(--accent-ink);align-items:center;gap:.35rem;font-size:.9375rem;font-weight:600;display:inline-flex}.wr-go .ic{transition:transform .3s var(--ease)}.wr:hover .wr-t{transform:translate(4px)}.wr:hover .wr-go .ic{transform:translate(2px,-2px)}.about{gap:3rem;padding-block:clamp(3.5rem,9vw,6rem);display:grid}.about .h2{font-size:clamp(2.25rem,9vw,3.25rem)}.edu{gap:1.1rem;margin-top:1.25rem;display:grid}.edu li{border-left:2px solid var(--accent);gap:.1rem;padding-left:1rem;display:grid}.edu b{font-weight:620}.edu span{color:var(--ink-2);font-size:.9375rem}.stack-chips{flex-wrap:wrap;gap:.5rem;margin-top:1.25rem;display:flex}.stack-chips li{border:1px solid var(--line-2);background:var(--s1);border-radius:999px;padding:.45rem .85rem;font-size:.9375rem;font-weight:520}.contact{--edge:clamp(.5rem, 1.5vw, 1rem);padding:0 var(--edge) var(--edge)}.ct-card{padding-block:clamp(2.5rem,7vw,5.5rem) clamp(2.5rem,6vw,4.5rem);padding-inline:max(var(--gut) - var(--edge), 50% - var(--max) / 2);background:var(--signal);color:var(--on-signal);border-radius:28px}.ct-card>*{max-width:48rem}.ct-card :focus-visible{outline-color:var(--on-signal)}.ct-h{font:790 clamp(2.25rem, 9.5vw, 5rem)/.95 var(--display);letter-spacing:-.004em;text-wrap:balance;font-stretch:75%}.ct-h span{font-size:1.6em;line-height:.9;display:block}.contact-form{gap:1.1rem;margin-top:2rem;display:grid}.f2{gap:1.1rem;display:grid}.fld{border:0;min-width:0;margin:0;padding:0}.fld>label,.fld legend{margin-bottom:.35rem;padding:0;font-size:.9375rem;font-weight:620;display:block}.fld input,.fld textarea{border:1.5px solid var(--on-signal-line);width:100%;min-height:48px;color:var(--on-signal);background:#fffbf8;border-radius:12px;padding:.7rem .85rem;font-size:1rem;display:block}.fld textarea{resize:vertical}.fld input:focus-visible,.fld textarea:focus-visible{outline:2px solid var(--on-signal);outline-offset:2px}.fld [aria-invalid=true]{border-width:2.5px;border-color:var(--on-signal)}.choices{flex-wrap:wrap;gap:.5rem;display:flex}.rad{display:inline-flex;position:relative}.rad input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.rad span{border:1.5px solid var(--on-signal-line);border-radius:999px;align-items:center;min-height:44px;padding-inline:1rem;font-weight:560;transition:background-color .2s,color .2s;display:inline-flex}.rad input:checked+span{background:var(--on-signal);color:#fff4ec}.rad input:focus-visible+span{outline:2px solid var(--on-signal);outline-offset:2px}.error{margin-top:.35rem;font-size:.875rem;font-weight:650}.error:empty{display:none}.send-row{flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;margin-top:.4rem;display:flex}.send{background:var(--on-signal);color:#fff4ec;cursor:pointer;min-height:48px;transition:transform .25s var(--ease);border:0;border-radius:999px;padding-inline:1.9rem;font-weight:600}.send:hover{transform:translateY(-1px)}.send:disabled{cursor:progress;opacity:.75}.form-status{font-weight:620}.sent h3{font:760 clamp(1.75rem, 6vw, 2.75rem)/1.02 var(--display);margin-top:2rem;font-stretch:80%}.sent h3:focus{outline:none}.js-off{margin-top:1.5rem;font-size:1.0625rem}.js-off a{text-underline-offset:.2em;text-decoration:underline}.foot{padding-block:1.25rem calc(1.5rem + env(safe-area-inset-bottom,0px));color:var(--ink-2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem 1rem;display:flex}.foot ul{flex-wrap:wrap;gap:0 1.25rem;display:flex}.foot li a{align-items:center;min-height:44px;font-size:.9375rem;display:inline-flex}.foot li a:hover{color:var(--ink)}.notfound{min-height:100svh;padding:2rem var(--gut);background:var(--signal);color:var(--on-signal);align-content:center;gap:1.25rem;display:grid}.notfound h1{font:790 clamp(2.5rem, 11vw, 6rem)/.95 var(--display);text-wrap:balance;font-stretch:75%}.notfound a{text-underline-offset:.2em;font-weight:600;text-decoration:underline}.notfound :focus-visible{outline-color:var(--on-signal)}@media (width>=40em){.f2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=56em){.wr{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) 10rem;align-items:baseline;column-gap:2rem}.about{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);column-gap:4rem}}
