@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/bricolage-grotesque-vietnamese-wght-normal.BUzh504Q.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;src:url(/_astro/bricolage-grotesque-latin-ext-wght-normal.CcLUaPy7.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;src:url(/_astro/bricolage-grotesque-latin-wght-normal.DLoelf7F.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:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/_astro/figtree-latin-ext-wght-normal.DCwSJGxG.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:Figtree Variable;font-style:normal;font-display:swap;font-weight:300 900;src:url(/_astro/figtree-latin-wght-normal.D_ZTVpCC.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;--coral:#ee6358;--cobalt:#4056d6;--lemon:#efc34a;--mint:#35c498;--grape:#9d78e0;--bg:var(--lightningcss-light,#f6f4ef)var(--lightningcss-dark,#161519);--surface:var(--lightningcss-light,#fcfbf8)var(--lightningcss-dark,#1e1d22);--ink:var(--lightningcss-light,#1e1c22)var(--lightningcss-dark,#ece9e2);--ink-soft:var(--lightningcss-light,#5c5962)var(--lightningcss-dark,#aaa7ad);--line:var(--lightningcss-light,#1e1c221f)var(--lightningcss-dark,#ece9e21f);--line-strong:var(--lightningcss-light,#1e1c2242)var(--lightningcss-dark,#ece9e247);--coral-text:var(--lightningcss-light,#b9433a)var(--lightningcss-dark,#f3958c);--link:var(--lightningcss-light,#3348c4)var(--lightningcss-dark,#a8b2f0);--focus:var(--lightningcss-light,#4056d6)var(--lightningcss-dark,#efc34a);--warm:var(--lightningcss-light,#f0eadf)var(--lightningcss-dark,#221f26);--warm-line:var(--lightningcss-light,#78643c38)var(--lightningcss-dark,#efc34a33);--shadow:var(--lightningcss-light,0 10px 30px -18px #1e1c224d)var(--lightningcss-dark,0 10px 30px -18px #000000b3);--font-display:"Bricolage Grotesque Variable", system-ui, sans-serif;--font-body:"Figtree Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--radius:16px;--gutter:clamp(1.25rem, 5vw, 3rem);--measure:68rem;--hero-measure:900px;--section:clamp(4rem, 9vw, 7rem);--ease-pop:cubic-bezier(.34, 1.56, .64, 1)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:1.5rem}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);overflow-wrap:break-word;margin:0;font-size:1.0625rem;line-height:1.65}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.02em;text-wrap:balance;margin:0}p,dl,dd{margin:0}p{text-wrap:pretty}ul,ol{margin:0;padding:0;list-style:none}a{color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:4px}[data-accent=coral]{--accent:var(--coral)}[data-accent=cobalt]{--accent:var(--lightningcss-light,var(--cobalt))var(--lightningcss-dark,#8a98f0)}[data-accent=lemon]{--accent:var(--lightningcss-light,#d8ad2e)var(--lightningcss-dark,var(--lemon))}[data-accent=mint]{--accent:var(--lightningcss-light,#1fa97d)var(--lightningcss-dark,var(--mint))}[data-accent=grape]{--accent:var(--grape)}.wrap{width:100%;max-width:calc(var(--measure) + 2 * var(--gutter));padding-inline:var(--gutter);margin-inline:auto}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:10;background:var(--ink);color:var(--bg);border-radius:8px;padding:.5rem 1rem;text-decoration:none;position:absolute;top:-4rem;left:1rem}.skip-link:focus{top:1rem}.dot{background:var(--accent,var(--coral));border-radius:50%;flex:none;width:.5rem;height:.5rem;display:inline-block}.text-link{color:var(--link);text-underline-offset:.25em;font-weight:600;text-decoration:underline;text-decoration-thickness:1px}.text-link:hover{text-decoration-thickness:2px}.site-header__inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1.5rem;padding-block:1.5rem;display:flex}.brand{font-family:var(--font-display);letter-spacing:-.01em;align-items:center;gap:.6rem;font-size:1.125rem;font-weight:700;text-decoration:none;display:inline-flex}.brand__mark{background:var(--coral);width:.75rem;height:.75rem;transition:transform .35s var(--ease-pop);border-radius:4px}.brand:hover .brand__mark{transform:rotate(45deg)}.nav{flex-wrap:wrap;gap:.25rem 1.5rem;display:flex}.nav a{color:var(--ink-soft);padding-block:.4rem;font-size:.9375rem;font-weight:500;text-decoration:none;display:inline-block}.nav a:hover{color:var(--ink);text-underline-offset:.35em;text-decoration:underline}.hero{padding-block:clamp(3rem,9vw,7rem) clamp(3rem,7vw,5rem)}.eyebrow{color:var(--ink-soft);letter-spacing:.02em;margin-bottom:1.25rem;font-size:.9375rem;font-weight:600}h1{max-width:var(--hero-measure);letter-spacing:-.035em;font-size:clamp(2.5rem,7.2vw,5rem);font-weight:700;line-height:1.02}.highlight{color:var(--coral-text);white-space:nowrap;display:inline-block;position:relative}.highlight__line{fill:none;width:102%;height:.2em;stroke:var(--lemon);stroke-width:3.5px;stroke-linecap:round;vector-effect:non-scaling-stroke;z-index:-1;position:absolute;bottom:-.14em;left:-1%;overflow:visible}.hero__lede{max-width:var(--hero-measure);color:var(--ink-soft);margin-top:1.75rem;font-size:clamp(1.125rem,2vw,1.3125rem);line-height:1.55}.hero__actions{flex-wrap:wrap;align-items:center;gap:1rem 1.75rem;margin-top:2.25rem;display:flex}.button{background:var(--ink);color:var(--bg);font:inherit;cursor:pointer;border:0;border-radius:999px;align-items:center;gap:.6rem;padding:.8rem 1.4rem;font-weight:600;text-decoration:none;transition:transform .2s;display:inline-flex}.button:hover{transform:translateY(-1px)}.button__arrow{transition:transform .3s var(--ease-pop);display:inline-block}.button:hover .button__arrow{transform:translate(4px)}.hero__facts{flex-wrap:wrap;gap:1.25rem 3rem;margin-top:clamp(2.5rem,6vw,4rem);font-size:.9375rem;display:flex}.hero__facts>div{max-width:26rem}dt,.form__label{color:var(--ink-soft);letter-spacing:.06em;text-transform:uppercase;font-size:.8125rem;font-weight:600}.numbers__list{border-block:1px solid var(--line);grid-template-columns:repeat(4,1fr);display:grid}.numbers__list li{flex-direction:column;gap:.5rem;padding:2rem 1.5rem 2rem 0;display:flex}.numbers__list li+li{border-left:1px solid var(--line);padding-left:1.5rem}.numbers__value{font-family:var(--font-display);letter-spacing:-.03em;align-self:flex-start;font-size:clamp(2.25rem,4.5vw,3.25rem);font-weight:700;line-height:1;position:relative}.numbers__value:after{content:"";background:var(--accent);border-radius:50%;width:.5rem;height:.5rem;position:absolute;top:.1em;left:calc(100% + .3rem)}.numbers__label{max-width:15rem;color:var(--ink-soft);font-size:.9375rem;line-height:1.45}@media (width<=52rem){.numbers__list{grid-template-columns:repeat(2,1fr)}.numbers__list li:nth-child(odd){border-left:0;padding-left:0}.numbers__list li:nth-child(n+3){border-top:1px solid var(--line)}.numbers__list li{padding-block:1.5rem}.numbers__list li:nth-child(2n){padding-left:1.25rem;padding-right:0}}.section{padding-top:var(--section)}.section__head{flex-wrap:wrap;align-items:baseline;gap:.25rem 1.25rem;margin-bottom:clamp(1.75rem,4vw,2.75rem);display:flex}h2{letter-spacing:-.03em;font-size:clamp(1.75rem,4vw,2.5rem);font-weight:700;line-height:1.1}.section__head p{color:var(--ink-soft)}h3{font-size:1.3125rem;font-weight:650;line-height:1.2}.work{grid-template-columns:repeat(2,1fr);gap:1.25rem;display:grid}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:clamp(1.5rem,3vw,2rem);transition:transform .25s,box-shadow .25s,border-color .25s}.card:hover{border-color:var(--line-strong);box-shadow:var(--shadow);transform:translateY(-3px)}.card__kind{color:var(--ink-soft);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:.55rem;margin-bottom:.85rem;font-size:.8125rem;font-weight:600;display:flex}.card .dot{transition:transform .35s var(--ease-pop)}.card:hover .dot{transform:scale(1.6)}.card__link{text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-underline-offset:.2em;text-decoration-thickness:1px}.card__link:hover{-webkit-text-decoration-color:var(--accent,var(--coral));text-decoration-color:var(--accent,var(--coral));text-decoration-thickness:2px}.card__body{color:var(--ink-soft);margin-top:.75rem}@media (width<=46rem){.work{grid-template-columns:1fr}}.role{border-top:1px solid var(--line);grid-template-columns:11rem 1fr;gap:.5rem 2rem;padding-block:2rem;display:grid}.role:last-child{border-bottom:1px solid var(--line)}.role__dates{color:var(--ink-soft);font-variant-numeric:tabular-nums;padding-top:.2rem;font-size:.9375rem;font-weight:600}.role__main{max-width:44rem}.role__title{margin-top:.25rem;font-weight:600}.role__points{color:var(--ink-soft);gap:.6rem;margin-top:1rem;display:grid}.role__points li{padding-left:1.25rem;position:relative}.role__points li:before{content:"";background:var(--line-strong);width:.5rem;height:1px;position:absolute;top:.72em;left:.1rem}.pixel-heart{vertical-align:-.02em;width:1.05rem;height:.9rem;fill:var(--coral);margin-left:.4rem;display:inline-block}.pixel-heart__shine{fill:#ffd9d5}.role:hover .pixel-heart{animation:.6s steps(4,end) 2 hop}@keyframes hop{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@media (width<=46rem){.role{grid-template-columns:1fr}}.cert{border-top:1px solid var(--line);grid-template-columns:11rem 1fr;align-items:center;gap:1rem 2rem;padding-block:2rem;display:grid}.cert:last-child{border-bottom:1px solid var(--line)}.cert__badge{width:144px;transition:transform .25s;display:block}.cert__badge img{width:100%;height:auto;display:block}.cert__badge:hover{transform:translateY(-3px)}.cert__text{max-width:44rem}.cert__issuer{color:var(--ink-soft);margin-top:.25rem}.cert__meta{flex-wrap:wrap;gap:.25rem 1.25rem;margin-top:.85rem;font-size:.9375rem;display:flex}.cert__meta span{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-weight:600}@media (width<=46rem){.cert{grid-template-columns:1fr;gap:1.25rem;padding-block:1.75rem}.cert__badge{width:120px}}.skills__group{border-top:1px solid var(--line);grid-template-columns:11rem 1fr;align-items:start;gap:.75rem 2rem;padding-block:1.25rem;display:grid}.skills__group:last-child{border-bottom:1px solid var(--line)}.skills__group h3{font-family:var(--font-body);letter-spacing:0;align-items:center;gap:.55rem;padding-top:.3rem;font-size:1rem;font-weight:650;display:flex}.skills__group ul{flex-wrap:wrap;gap:.5rem;display:flex}.skills__group li{background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:.25rem .8rem;font-size:.9375rem}@media (width<=46rem){.skills__group{grid-template-columns:1fr}}.contact-wrap{padding-top:var(--section)}.contact{background:var(--warm);border:1px solid var(--warm-line);border-radius:calc(var(--radius) * 1.5);grid-template-columns:1.4fr 1fr;gap:2.5rem clamp(2rem,6vw,5rem);padding:clamp(1.75rem,6vw,4rem);display:grid}.contact h2{font-size:clamp(1.875rem,4.5vw,2.875rem)}.contact__lead>p{max-width:28rem;margin-top:.9rem}.form{gap:1.1rem;max-width:32rem;margin-top:1.75rem;display:grid}.form__field{gap:.35rem;display:grid}.form__input{background:var(--surface);width:100%;color:var(--ink);border:1px solid var(--line-strong);border-radius:calc(var(--radius) / 2);font:inherit;padding:.7rem .9rem}.form__input:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-color:var(--focus);border-radius:calc(var(--radius) / 2)}.form__input--message{resize:vertical;min-height:9rem}.form__trap{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.form .cf-turnstile{min-height:65px}.form .button{justify-self:start}.form .button:disabled{cursor:progress;opacity:.6;transform:none}.form__status{font-weight:600}.form__status[data-state=error]{color:var(--coral-text)}.form__noscript{color:var(--ink-soft);margin-top:1.75rem}.contact__dots{gap:.4rem;margin-top:2rem;display:flex}.contact__dots i{background:var(--coral);border-radius:50%;width:.55rem;height:.55rem}.contact__dots i:nth-child(2){background:var(--lightningcss-light,var(--cobalt))var(--lightningcss-dark,#8a98f0);animation-delay:70ms}.contact__dots i:nth-child(3){background:var(--lightningcss-light,#d8ad2e)var(--lightningcss-dark,var(--lemon));animation-delay:.14s}.contact__dots i:nth-child(4){background:var(--lightningcss-light,#1fa97d)var(--lightningcss-dark,var(--mint));animation-delay:.21s}.contact__dots i:nth-child(5){background:var(--grape);animation-delay:.28s}.contact:hover .contact__dots i{animation-name:dot-hop;animation-duration:.5s;animation-timing-function:var(--ease-pop)}@keyframes dot-hop{40%{transform:translateY(-7px)}}.contact__facts{align-content:start;gap:1.25rem;font-size:.9875rem;display:grid}.contact__facts dd{margin-top:.15rem}@media (width<=52rem){.contact{grid-template-columns:1fr}}@media (width<=26rem){.contact-wrap{padding-inline:1rem}.contact{padding-inline:1.25rem}}.site-footer__inner{color:var(--ink-soft);flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;padding-block:2.5rem 3rem;font-size:.9375rem;display:flex}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.card:hover,.cert__badge:hover,.button:hover,.button:hover .button__arrow,.brand:hover .brand__mark,.card:hover .dot{transform:none}}
