@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.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{--primary:#3f6b4e;--primary-tint:#e6efe8;--neutral-tint:#f1ede4;--bg:#faf8f3;--surface:#fff;--text:#2b2a27;--text-secondary:#6b675f;--border:#ece7dd;--shadow:0 1px 2px #3c321e0f, 0 4px 16px #3c321e0f;--shadow-hover:0 2px 4px #3c321e14, 0 10px 28px #3c321e1a;--font-serif:"Fraunces Variable", Georgia, serif;--font-sans:"Inter Variable", system-ui, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--primary:#8db89a;--primary-tint:#26352b;--neutral-tint:#2e2b27;--bg:#1c1b19;--surface:#252320;--text:#ece8e1;--text-secondary:#a8a39a;--border:#34312c;--shadow:0 1px 2px #0000004d;--shadow-hover:0 2px 4px #00000059, 0 10px 28px #0000004d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);margin:0}::selection{background:var(--primary-tint)}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}:root :is(h1,h2,h3,h4).ant-typography{font-family:var(--font-serif);font-weight:600}:root h1.ant-typography{letter-spacing:-.02em;font-size:clamp(2.25rem,5vw,3.25rem);line-height:1.1}:root h2.ant-typography{font-size:1.75rem}:root h3.ant-typography{font-size:1.25rem}.ant-typography p,p.ant-typography{line-height:1.65}.lead{max-width:70ch;font-size:1.0625rem}.page{box-sizing:border-box;width:100%;max-width:1040px;margin:0 auto;padding:24px 16px 64px}.section{margin-top:48px}@media print{.no-print{display:none!important}}.site-header{z-index:10;border-bottom:1px solid #0000;align-items:center;gap:8px;transition:background-color .2s,border-color .2s;display:flex;position:sticky;top:0}.site-header.is-scrolled{background:color-mix(in srgb, var(--bg) 80%, transparent);-webkit-backdrop-filter:blur(12px);border-bottom-color:var(--border)}.site-logo{font-family:var(--font-serif);white-space:nowrap;color:var(--text);margin-right:auto;font-size:1.25rem;font-weight:600}.site-logo:hover{color:var(--primary)}.nav-desktop{gap:4px;display:flex}.nav-link{color:var(--text-secondary);border-radius:999px;padding:6px 12px;font-weight:500;line-height:1.5;transition:color .15s;position:relative}.nav-link:hover,.nav-link.active{color:var(--primary)}.nav-link.active:after{content:"";background:var(--primary);border-radius:50%;width:5px;height:5px;margin-left:-2.5px;position:absolute;bottom:-2px;left:50%}.nav-drawer{flex-direction:column;gap:4px;display:flex}.nav-drawer .nav-link{border-radius:10px;padding:10px 12px}.nav-drawer .nav-link.active{background:var(--primary-tint)}.nav-drawer .nav-link.active:after,.nav-mobile{display:none}@media (width<=767px){.nav-desktop{display:none!important}.nav-mobile{display:inline-flex}}.site-footer{text-align:center;border-top:1px solid var(--border);margin-top:32px}.home{flex-direction:column;justify-content:center;min-height:60vh;padding-block:32px;display:flex}.hero{flex-wrap:wrap;align-items:center;gap:48px;display:flex}.hero-text{flex:320px}.hero-photo{flex:none;width:200px;height:200px;position:relative}.hero-photo:before{content:"";background:var(--primary);opacity:.18;border-radius:50%;position:absolute;inset:0;transform:translate(14px,14px)}.hero-photo img{object-fit:cover;width:100%;height:100%;box-shadow:0 0 0 4px var(--bg), 0 0 0 7px var(--primary);border-radius:50%;display:block;position:relative}.hero-greeting{color:var(--primary);font-family:var(--font-serif);margin:0 0 4px;font-size:1.25rem;font-style:italic}.hero-intro{max-width:60ch;font-size:1.125rem}.hero .hero-actions{margin-top:32px;display:flex}@media (width<=575px){.hero{gap:32px}.hero-photo{width:160px;height:160px}}.soft-card.ant-card{border-color:var(--border);box-shadow:var(--shadow)}.lift{transition:transform .15s ease-out,box-shadow .15s ease-out}.lift:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.icon-badge{background:var(--primary-tint);width:44px;height:44px;color:var(--primary);border-radius:50%;justify-content:center;align-items:center;font-size:20px;display:inline-flex}.skill-groups{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.skill-group{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:20px}.skill-group-label.ant-typography{color:var(--text-secondary);letter-spacing:.06em;text-transform:uppercase;margin-bottom:10px;font-size:.8125rem;font-weight:600;display:block}.pills{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.pill{background:var(--primary-tint);color:var(--primary);border-radius:999px;padding:4px 12px;font-size:.875rem;font-weight:500}.pill-neutral{background:var(--neutral-tint);color:var(--text)}.entry-list{gap:16px;display:grid}.entry-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:16px;padding:20px}.entry-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 16px;display:flex}.entry-dates{font-variant-numeric:tabular-nums;white-space:nowrap}.entry-highlights{margin:12px 0 0;padding-left:20px;line-height:1.65}.entry-highlights li+li{margin-top:6px}.entry-highlights li::marker{color:var(--primary)}.contact-grid{gap:32px;display:grid}@media (width>=768px){.contact-grid{grid-template-columns:2fr 3fr;align-items:start;gap:48px}}.page-fade{animation:.2s ease-out page-fade-in}@keyframes page-fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@supports (animation-timeline:view()){.section{animation:linear both reveal;animation-timeline:view();animation-range:entry entry 35%}}@keyframes reveal{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.page-fade,.section{animation:none}.lift,.lift:hover{transition:none;transform:none}}
