@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:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-opsz-normal.BjhtXyW2.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:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-opsz-normal.BQn1nviT.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:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-opsz-normal.s-izfB6B.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{--bg:#f5f5f4;--ink:#141413;--text:#2b2b29;--text-2:#4a4a47;--muted:#6b6b67;--line:#e3e3e0;--link-line:#d6d6d3;--avatar:#e3e3e0;--serif:"Newsreader Variable", Georgia, serif;--sans:"Geist Variable", ui-sans-serif, system-ui, sans-serif}*,:before,:after{box-sizing:border-box}body{background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:18px;line-height:1.6}a{color:var(--ink);text-decoration:none}a:hover{color:#000}.page{padding:96px 24px 112px}.wrap{flex-direction:column;gap:56px;max-width:600px;margin:0 auto;display:flex}.intro{flex-direction:column;gap:20px;display:flex}.avatar{background:var(--avatar);color:#5f5f5b;letter-spacing:.04em;object-fit:cover;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;font-size:13px;font-weight:500;display:flex}.name{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);margin:0;font-size:40px;font-weight:500;line-height:1.15}.name a{color:inherit}.role{color:var(--muted);margin:2px 0 0}.lead{flex-direction:column;gap:20px;display:flex}.lead p{margin:0}.lead .headline{font-family:var(--serif);color:var(--ink);font-size:27px;line-height:1.4}a.more{border-bottom:1px solid var(--link-line);white-space:nowrap;padding-bottom:1px}a.more:hover{border-bottom-color:var(--ink)}.label{color:var(--muted);letter-spacing:.02em;margin:0 0 4px;font-size:14px;font-weight:500}.work{flex-direction:column;gap:12px;display:flex}.work-list{border-bottom:1px solid var(--line);margin:0;padding:0;list-style:none}.work-row{border-top:1px solid var(--line);flex-direction:column;gap:4px;padding:16px 0;display:flex}.work-row-top{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;display:flex}.work-title{font-family:var(--serif);color:var(--ink);font-size:22px;font-weight:500}.work-status{color:var(--muted);font-size:14px}.work-teaser{color:var(--text-2)}.work-row:hover .work-title{text-underline-offset:4px;text-decoration:underline 1px}.contact{flex-direction:column;gap:20px;display:flex}.contact p{margin:0}.links{flex-wrap:wrap;gap:28px;font-size:17px;display:flex}.links a{border-bottom:1px solid var(--link-line);padding-bottom:2px}.links a:hover{border-bottom-color:var(--ink)}.home-link{color:var(--muted);align-self:flex-start;align-items:center;gap:10px;font-size:15px;display:inline-flex}.home-link:hover{color:var(--ink)}.home-link img{object-fit:cover;border-radius:50%;width:28px;height:28px}.cs-header{flex-direction:column;gap:16px;display:flex}.cs-header .label{margin:0}.cs-title{font-family:var(--serif);letter-spacing:-.01em;color:var(--ink);margin:0;font-size:44px;font-weight:500;line-height:1.12}.cs-summary{font-family:var(--serif);color:var(--text-2);margin:0;font-size:24px;line-height:1.4}.cs-meta{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 24px;margin:0;padding:20px 0;font-size:16px;line-height:1.45;display:grid}.cs-meta dt{color:var(--muted);font-size:14px}.cs-meta dd{color:var(--ink);margin:2px 0 0}.glance{border:1px solid var(--line);background:#fff;border-radius:14px;padding:8px 28px}.glance .label{margin:0;padding:18px 0 14px}.glance-row{border-top:1px solid #ececea;grid-template-columns:112px minmax(0,1fr);gap:16px;padding:16px 0;display:grid}.glance-row:last-child{padding-bottom:22px}.glance-label{color:var(--muted);padding-top:3px;font-size:15px}.glance-text{font-family:var(--serif);color:var(--ink);font-size:21px;line-height:1.45}.cs-body{line-height:1.65}.cs-body>h2:first-child{margin-top:0}.prose blockquote{font-family:var(--serif);color:var(--ink);margin:1.4em 0;padding:0;font-size:26px;line-height:1.4}.prose blockquote p{margin:0}.prose blockquote p:before{content:"“"}.prose blockquote p:after{content:"”"}.next{border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex-direction:column;gap:4px;padding:20px 0;display:flex}.next .label{margin:0}.next-title{font-family:var(--serif);color:var(--ink);font-size:24px;font-weight:500}.next-teaser{color:var(--text-2)}.next:hover .next-title{text-underline-offset:4px;text-decoration:underline 1px}.about-head{flex-direction:column;gap:24px;display:flex}.about-photo{object-fit:cover;border-radius:50%;width:96px;height:96px}.about-body{line-height:1.65}.about-body>p:first-child{font-family:var(--serif);color:var(--ink);font-size:24px}.resume-head{flex-direction:column;gap:10px;display:flex}.resume-head .cs-title{margin-bottom:4px}.resume-head p{margin:0}.resume-sub{color:var(--muted)}.resume-contact{flex-wrap:wrap;gap:6px 20px;font-size:16px;display:flex}.resume-contact a{border-bottom:1px solid var(--link-line);padding-bottom:1px}.resume-contact a:hover{border-bottom-color:var(--ink)}.btn{border:1px solid var(--ink);min-height:44px;color:var(--ink);background:0 0;border-radius:999px;align-self:flex-start;align-items:center;gap:8px;margin-top:12px;padding:0 18px;font-size:16px;font-weight:500;display:inline-flex}.btn:hover{background:var(--ink);color:var(--bg)}.resume{line-height:1.6}.resume h2{font-family:var(--serif);color:var(--ink);border-bottom:1px solid var(--line);margin:56px 0 4px;padding-bottom:10px;font-size:27px;font-weight:500;line-height:1.3}.resume>h2:first-child{margin-top:0}.resume h3{color:var(--ink);break-after:avoid;margin:28px 0 0;font-size:18px;font-weight:600}.resume h3+p{color:var(--muted);break-after:avoid;margin:2px 0 10px;font-size:16px}.resume h3+p strong{color:var(--ink);font-weight:500}.resume p{margin:16px 0 0}.resume ul{margin:8px 0 0;padding-left:1.1em}.resume li{break-inside:avoid;margin:6px 0}.resume li::marker{color:var(--muted)}.resume a{border-bottom:1px solid var(--link-line)}.resume a:hover{border-bottom-color:var(--ink)}@page{size:letter;margin:.55in .65in}@media print{body{background:#fff;font-size:10pt;line-height:1.4}.page{padding:0}.wrap{gap:12pt;max-width:none}.no-print{display:none!important}a,.resume a,.resume-contact a{color:inherit;border:0;text-decoration:none}.resume-head{gap:3pt}.resume-head .cs-title{margin:0;font-size:24pt}.resume-sub,.resume-contact{font-size:9.5pt}.resume h2{margin:14pt 0 2pt;padding-bottom:3pt;font-size:13.5pt}.resume h3{margin:9pt 0 0;font-size:10.5pt}.resume h3+p{margin:0 0 3pt;font-size:9pt}.resume p{margin:6pt 0 0}.resume ul{margin:2pt 0 0}.resume li{margin:2pt 0;font-size:9.5pt}}.back{color:var(--muted);font-size:15px}.back:hover{color:var(--ink)}.meta{grid-template-columns:max-content 1fr;gap:4px 20px;margin:0;padding:0;font-size:16px;list-style:none;display:grid}.meta dt{color:var(--muted)}.meta dd{margin:0}.prose h1{font-family:var(--serif);color:var(--ink);margin:0;font-size:40px;font-weight:500;line-height:1.15}.prose h2{font-family:var(--serif);color:var(--ink);margin:2em 0 .4em;font-size:26px;font-weight:500;line-height:1.3}.prose h3{color:var(--ink);margin:1.6em 0 .2em;font-size:18px;font-weight:600}.prose p,.prose ul{margin:0 0 1em}.prose a{border-bottom:1px solid var(--link-line)}:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:2px}@media (width<=520px){.page{padding:56px 20px 80px}.cs-title{font-size:36px}.cs-summary{font-size:21px}.glance{padding:4px 20px}.glance-row{grid-template-columns:1fr;gap:4px}.glance-text{font-size:19px}.name{font-size:34px}.lead .headline{font-size:23px}}
