@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(../media/77d9a04c69f7b11b-s.p.0udrnr4-18tjo.woff2)format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d81b50f8e1aba043-s.18lx4otehud-r.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(../media/dd018b41519c2d93-s.p.1br53b7gww62p.woff2)format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(../media/b4fb5dfe9580f890-s.p.3bgaltqld2gq2.woff2)format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(../media/1f6c95fdd7b08cc8-s.0mlt1uo-cplt-.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(../media/7f1976624c2b6255-s.p.22m3f6pvfu2zf.woff2)format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6ac706d910f2bd04-s.p.35qbt1_6db49h.woff2)format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(../media/3c61b7007b1b2764-s.1-vmsm_v03uvy.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(../media/25d341d5876d8ede-s.p.092z1_2w2m55_.woff2)format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(../media/6bf0d8dd0c866b9f-s.p.2heyes1wqz_kz.woff2)format("woff2");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:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(../media/341181aba0db3eca-s.37omzjo7pfhh3.woff2)format("woff2");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(../media/83940f62350fcaa7-s.p.31-z0m_4g_6pa.woff2)format("woff2");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:Be Vietnam Pro Fallback;src:local(Arial);ascent-override:90.61%;descent-override:24.01%;line-gap-override:0.0%;size-adjust:110.36%}.m7K9dq_className{font-family:Be Vietnam Pro,Be Vietnam Pro Fallback;font-style:normal}.m7K9dq_variable{--font-be-vietnam:"Be Vietnam Pro", "Be Vietnam Pro Fallback"}
:root{--bg-page:#f8fafc;--bg-surface:#fff;--bg-accent:#4f46e5;--bg-accent-soft:#eef2ff;--bg-subtle:#f1f5f9;--text-primary:#0f172a;--text-secondary:#475569;--text-accent:#4f46e5;--text-muted:#94a3b8;--text-on-accent:#fff;--border:#e2e8f0;--border-accent:#e0e7ff;--radius-md:12px;--radius-lg:16px;--radius-full:999px;--header-height:81px;--shell:min(1200px, calc(100% - 48px));--font:var(--font-be-vietnam), "Be Vietnam Pro", sans-serif}@media (min-width:1280px){:root{--shell:min(1200px, calc(100% - 160px))}}@media (min-width:1440px){:root{--shell:1200px}}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + 12px)}body{min-height:100%;color:var(--text-primary);background:var(--bg-page);font-family:var(--font);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.5}img{max-width:none;display:block}a{color:inherit;text-decoration:none}button,a{font-family:inherit}ul,ol{list-style:none}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.shell{width:var(--shell);margin-inline:auto}.site-header{z-index:20;background:var(--bg-surface);border-bottom:1px solid var(--border);position:sticky;top:0}.header-bar{justify-content:space-between;align-items:center;gap:24px;min-height:80px;padding-block:16px;display:flex}.logo{flex:none;align-items:center;gap:12px;display:flex}.logo-mark{border-radius:var(--radius-md);background:var(--bg-accent);width:40px;height:40px;color:var(--text-on-accent);place-items:center;font-size:20px;font-weight:600;line-height:28px;display:grid}.logo-name{color:var(--text-primary);font-size:16px;font-weight:600;line-height:24px}.desktop-nav{align-items:center;gap:32px;display:flex}.desktop-nav a,.site-footer a{color:var(--text-secondary);font-size:14px;font-weight:600;line-height:20px}.desktop-nav a:hover,.site-footer a:hover,.quick-contact a:hover,.project-links a:hover{color:var(--text-accent)}.button{border-radius:var(--radius-full);white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;min-height:48px;padding:12px 24px;font-size:16px;font-weight:600;line-height:24px;display:inline-flex}.button-primary{background:var(--bg-accent);color:var(--text-on-accent)}.button-primary:hover{background:#4338ca}.button-secondary{background:var(--bg-surface);border-color:var(--border);color:var(--text-primary)}.button-secondary:hover{background:var(--bg-subtle)}.button:focus-visible,.desktop-nav a:focus-visible,.site-footer a:focus-visible,.quick-contact a:focus-visible,.project-links a:focus-visible,.contact-item:focus-visible,.menu-button:focus-visible,.logo:focus-visible{outline:2px solid var(--bg-accent);outline-offset:3px}.menu-button,.mobile-nav{display:none}.hero{background:var(--bg-page);padding:96px 0 120px}.hero-layout{align-items:center;gap:64px;display:flex}.hero-copy{flex-direction:column;flex:1;gap:32px;min-width:0;display:flex}.badge{border:1px solid var(--border);border-radius:var(--radius-full);background:var(--bg-surface);width:fit-content;max-width:100%;color:var(--text-secondary);align-items:center;gap:8px;padding:8px 16px 8px 12px;font-size:14px;font-weight:600;line-height:20px;display:inline-flex}.badge-short{display:none}.hero-title{flex-direction:column;gap:8px;display:flex}.eyebrow{color:var(--text-secondary);font-size:18px;font-weight:400;line-height:28px}.hero-title h1{color:var(--text-primary);letter-spacing:-1.28px;font-size:64px;font-weight:700;line-height:72px}.hero-role{color:var(--text-accent);letter-spacing:-.4px;font-size:40px;font-weight:700;line-height:48px}.lede,.section-desc,.body-lg{font-size:18px;font-weight:400;line-height:28px}.lede,.section-desc{color:var(--text-secondary)}.body-lg{color:var(--text-primary)}.cta-row,.quick-contact{flex-wrap:wrap;align-items:center;display:flex}.cta-row{gap:12px}.quick-contact{gap:24px}.quick-contact a{color:var(--text-secondary);align-items:center;gap:8px;font-size:14px;font-weight:600;line-height:20px;display:inline-flex}.portrait{border:12px solid var(--border-accent);border-radius:var(--radius-full);background:var(--bg-accent-soft);flex:none;width:440px;height:440px;position:relative;overflow:hidden}.portrait-photo{object-fit:cover;object-position:center 72%}.section{scroll-margin-top:calc(var(--header-height) + 12px);padding:96px 0}.section-surface{background:var(--bg-surface)}.section-page{background:var(--bg-page)}.split{align-items:start;gap:64px;display:grid}.split-about{grid-template-columns:minmax(280px,440px) minmax(0,1fr)}.split-experience{grid-template-columns:minmax(240px,360px) minmax(0,1fr)}.stack{flex-direction:column;gap:48px;display:flex}.section-heading{flex-direction:column;gap:12px;display:flex}.section-heading-wide{max-width:720px}.overline{color:var(--text-accent);letter-spacing:1.44px;text-transform:uppercase;font-size:12px;font-weight:600;line-height:16px}.section-heading h2{color:var(--text-primary);letter-spacing:-.32px;font-size:32px;font-weight:700;line-height:40px}.about-body{flex-direction:column;gap:32px;min-width:0;display:flex}.fact-grid,.education-grid,.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:24px;display:grid}.fact-card,.skill-card,.job-card,.project-card,.education-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-surface)}.fact-card{background:var(--bg-page);flex-direction:column;gap:8px;padding:24px;display:flex}.fact-value{color:var(--text-primary);font-size:16px;font-weight:600;line-height:24px}.skill-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch;gap:24px;display:grid}.skill-card{flex-direction:column;gap:16px;padding:24px;display:flex}.skill-card-wide{grid-column:span 2}.skill-card h3,.job-card h3,.project-heading h3,.education-card h3{color:var(--text-primary);font-size:20px;font-weight:600;line-height:28px}.tag-list{flex-wrap:wrap;gap:8px;display:flex}.tag-list li{border-radius:var(--radius-full);background:var(--bg-accent-soft);color:var(--text-accent);padding:4px 12px;font-size:13px;font-weight:500;line-height:20px}.check-list{flex-direction:column;gap:16px;display:flex}.check-list li{color:var(--text-secondary);align-items:flex-start;gap:12px;font-size:14px;font-weight:400;line-height:22px;display:flex}.check-list img{flex:none;margin-top:1px}.timeline{flex-direction:column;min-width:0;display:flex}.timeline-item{grid-template-columns:16px minmax(0,1fr);gap:24px;display:grid}.timeline-rail{flex-direction:column;align-items:center;padding-top:24px;display:flex}.timeline-dot{flex:none;width:16px;height:16px;position:relative}.timeline-dot img{position:absolute;top:-4px;left:-4px}.timeline-line{background:var(--bg-subtle);flex:1;width:2px}.job-card{flex-direction:column;gap:8px;margin-bottom:32px;padding:24px 32px;display:flex}.job-role,.job-card>p:last-child,.project-body>p,.education-major{color:var(--text-secondary);font-weight:400}.job-role{font-size:14px;font-weight:600;line-height:20px}.job-card>p:last-child,.education-major{font-size:16px;line-height:24px}.project-card{flex-direction:column;display:flex;overflow:hidden}.project-thumb{background:var(--bg-accent-soft);height:240px;color:var(--text-accent);text-align:center;place-items:center;font-size:14px;font-weight:600;line-height:20px;display:grid;position:relative;overflow:hidden}.project-thumb-empty{padding:16px}.project-shot{object-fit:contain;object-position:center}.thumb-nav,.thumb-dots button{cursor:pointer;border:0}.thumb-nav{z-index:1;border-radius:var(--radius-full);background:var(--bg-surface);width:32px;height:32px;color:var(--text-primary);place-items:center;display:grid;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 1px 4px #0f172a29}.thumb-prev{left:10px}.thumb-next{right:10px}.thumb-nav:hover,.thumb-dots button:hover{background:var(--bg-accent-soft)}.thumb-dots{z-index:1;justify-content:center;gap:6px;display:flex;position:absolute;bottom:10px;left:12px;right:12px}.thumb-dots button{border-radius:var(--radius-full);background:#0f172a47;width:7px;height:7px;padding:0}.thumb-dots button.is-active{background:var(--bg-accent)}.thumb-nav:focus-visible,.thumb-dots button:focus-visible{outline:2px solid var(--bg-accent);outline-offset:2px}.project-body{flex-direction:column;gap:16px;padding:24px;display:flex}.project-heading{flex-direction:column;gap:8px;display:flex}.project-body>p,.project-role p:last-child{color:var(--text-secondary);font-size:14px;font-weight:400;line-height:22px}.project-role p:last-child{color:var(--text-primary)}.project-body hr{background:var(--bg-subtle);border:0;width:100%;height:1px}.project-role{flex-direction:column;gap:4px;display:flex}.meta-label{color:var(--text-muted);letter-spacing:1.44px;text-transform:uppercase;font-size:12px;font-weight:600;line-height:16px}.project-links{color:var(--text-accent);align-items:flex-start;gap:8px;font-size:14px;font-weight:600;line-height:20px;display:flex}.project-links img{flex:none;margin-top:2px}.project-links a{color:var(--text-accent)}.education-card{align-items:flex-start;gap:24px;padding:32px;display:flex}.education-card>div:last-child{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.icon-box{border-radius:var(--radius-md);background:var(--bg-accent-soft);flex:none;place-items:center;width:48px;height:48px;display:grid}.icon-box-lg{width:56px;height:56px}.contact-panel{border-radius:var(--radius-lg);background:var(--bg-accent);color:var(--text-on-accent);grid-template-columns:minmax(0,1fr) minmax(280px,480px);align-items:center;gap:64px;padding:64px;display:grid}.contact-copy{flex-direction:column;gap:16px;display:flex}.contact-copy .overline{color:var(--text-on-accent);opacity:.8}.contact-copy h2{letter-spacing:-.4px;font-size:40px;font-weight:700;line-height:48px}.contact-copy p:last-child{color:var(--text-on-accent);opacity:.85;font-size:18px;font-weight:400;line-height:28px}.contact-list{flex-direction:column;gap:12px;display:flex}.contact-list li{width:100%}.contact-item{border-radius:var(--radius-md);background:var(--bg-surface);color:var(--text-primary);align-items:center;gap:16px;padding:16px 24px 16px 16px;display:flex}.contact-item:hover{background:var(--bg-accent-soft)}.contact-info{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.contact-value{color:var(--text-primary);overflow-wrap:anywhere;font-size:16px;font-weight:600;line-height:24px}.site-footer{background:var(--bg-surface);border-top:1px solid var(--border)}.footer-bar{justify-content:space-between;align-items:center;gap:16px 24px;padding-block:32px;display:flex}.footer-bar>p,.site-footer a{color:var(--text-secondary);font-size:14px;font-weight:400;line-height:22px}.site-footer nav{flex-wrap:wrap;gap:8px 24px;display:flex}.site-footer a{font-weight:400}@media (max-width:1100px){:root{--header-height:77px;--shell:min(calc(100% - 48px), 720px)}.desktop-nav,.header-cta{display:none}.menu-button{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-surface);cursor:pointer;place-items:center;width:44px;height:44px;display:grid}.mobile-nav.is-open{border-bottom:1px solid var(--border);background:var(--bg-surface);padding-bottom:20px;display:block}.mobile-nav-list{flex-direction:column;align-items:stretch;gap:4px;display:flex}.mobile-nav-list>a:not(.button){color:var(--text-secondary);padding:12px 0;font-size:16px;font-weight:600;line-height:24px}.header-bar{min-height:76px;padding-block:16px}.hero{padding:48px 0 64px}.hero-layout{flex-direction:column;align-items:flex-start;gap:32px}.portrait{border-width:8px;order:-1;width:220px;height:220px}.hero-title h1{letter-spacing:-.8px;font-size:40px;line-height:48px}.hero-role{font-size:28px;line-height:32px}.badge-full{display:none}.badge-short{display:inline}.cta-row{flex-direction:column;align-items:stretch;width:100%}.quick-contact{flex-direction:column;align-items:flex-start;gap:12px}.section{padding:64px 0}.split-about,.split-experience,.fact-grid,.skill-grid,.education-grid,.project-grid,.contact-panel{grid-template-columns:1fr}.split,.stack{gap:32px}.skill-card-wide{grid-column:auto}.job-card,.education-card{padding:24px}.contact-panel{gap:32px;padding:32px 24px}.contact-copy h2{font-size:28px;line-height:32px}.footer-bar{flex-direction:column;align-items:flex-start;gap:16px}}@media (max-width:720px){.project-thumb{height:200px;font-size:13px}}
