@font-face{font-family:Playwrite VN;src:url(/Playwrite_VN/PlaywriteVN-VariableFont_wght.ttf) format("truetype");font-weight:100 400;font-style:normal;font-display:swap}:root{--bg: #0c1118;--bg-elev: #141a24;--text: #f3efe6;--muted: #9aa3b0;--hair: #2a3344;--gold: #c4a35a;--serif: "Playfair Display", Georgia, "Times New Roman", serif;--mono: "IBM Plex Mono", ui-monospace, Menlo, Consolas, monospace;--script: "Playwrite VN", var(--serif)}html[data-theme=light]{--bg: #f6f3ec;--bg-elev: #ece7dc;--text: #12161c;--muted: #5c6370;--hair: #d4cec2;--gold: #8a6b28}html{color-scheme:dark}html[data-theme=light]{color-scheme:light}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--bg);color:var(--text);font-family:var(--serif);font-size:16px;line-height:1.5;transition:background .25s ease,color .25s ease}a{color:var(--gold);text-decoration:none}a:hover{text-decoration:underline}a:focus-visible,button:focus-visible{outline:1px solid var(--gold);outline-offset:3px}button{font:inherit}.nav{position:sticky;top:0;z-index:8;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:18px 40px;background:color-mix(in srgb,var(--bg) 68%,transparent);-webkit-backdrop-filter:blur(18px) saturate(1.15);backdrop-filter:blur(18px) saturate(1.15);border-bottom:1px solid color-mix(in srgb,var(--hair) 85%,transparent)}.nav-brand{font-family:var(--script);font-size:18px;font-weight:300;color:var(--text);letter-spacing:.02em}.nav-brand:hover{text-decoration:none;color:var(--gold)}.nav-links{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}.nav-links a,.nav-links button{background:none;border:0;color:var(--muted);font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;padding:8px 12px;cursor:pointer}.nav-links a:hover,.nav-links button:hover{color:var(--text);text-decoration:none}.nav-links a.active{color:var(--text);box-shadow:inset 0 -1px 0 var(--gold)}.page{animation:rise .45s ease}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.hero{min-height:calc(100vh - 61px);display:flex;align-items:center;padding:64px 40px 72px;max-width:1120px;margin:0 auto}.hero-inner{display:grid;grid-template-columns:1.15fr .85fr;gap:56px;align-items:center;width:100%}.hero-photo{aspect-ratio:4 / 5;overflow:hidden;border:1px solid color-mix(in srgb,var(--text) 14%,transparent);background:color-mix(in srgb,var(--bg-elev) 55%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:28% 80%;display:block}.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--gold);margin:0 0 18px}.hero h1{font-size:clamp(52px,9vw,92px);font-weight:600;letter-spacing:-.03em;line-height:.95;margin:0}.hero .line{font-style:italic;font-weight:500;font-size:clamp(20px,2.4vw,28px);color:var(--gold);margin:18px 0 0}.hero .lede{max-width:36rem;margin:22px 0 0;font-size:18px;color:var(--muted);font-weight:500}.cta{display:flex;gap:16px;margin-top:32px;flex-wrap:wrap}.cta a{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;padding:12px 20px;border:1px solid var(--gold);color:var(--gold)}.cta a.solid{background:var(--gold);color:var(--bg)}.cta a:hover{text-decoration:none;filter:brightness(1.08)}.wrap{max-width:1120px;margin:0 auto;padding:24px 40px 96px}h2.section{font-family:var(--mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);font-weight:500;margin:64px 0 8px;padding-bottom:12px;border-bottom:1px solid var(--gold)}.home-board{display:grid;grid-template-columns:repeat(3,1fr);gap:28px 22px;margin-top:8px}.home-card{color:inherit;text-decoration:none}.home-card:hover{text-decoration:none;color:inherit}.home-card h3{font-size:18px;font-weight:600;letter-spacing:-.02em;margin:14px 0 6px}.home-card:hover h3{color:var(--gold)}.home-card .meta{margin-bottom:4px}.home-firm{margin:0;font-family:var(--mono);font-size:11px;color:var(--muted)}.cv{max-width:760px;margin:0 auto;padding:48px 40px 96px}.cv-head{padding-bottom:28px;margin-bottom:8px;border-bottom:2px solid var(--gold)}.cv-head h1{font-size:clamp(36px,6vw,52px);font-weight:600;letter-spacing:-.03em;margin:0;line-height:1}.cv-line{margin:12px 0 0;font-style:italic;color:var(--gold);font-size:17px}.cv-contact{margin:10px 0 0;font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--muted)}.cv-contact a{color:var(--muted)}.cv-contact a:hover{color:var(--gold);text-decoration:none}.cv section{margin-top:28px}.cv h2{font-family:var(--mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);font-weight:500;margin:0 0 14px;padding-bottom:8px;border-bottom:1px solid var(--hair)}.cv-item{margin-bottom:22px}.cv-item:last-child{margin-bottom:0}.cv-row{display:flex;justify-content:space-between;gap:16px;align-items:baseline}.cv h3{margin:0;font-size:18px;font-weight:600;letter-spacing:-.02em}.cv-dates,.cv-place{font-family:var(--mono);font-size:11px;color:var(--muted);white-space:nowrap}.cv-sub{margin:4px 0 0;font-style:italic;font-weight:500}.cv-note{margin:4px 0 0;font-family:var(--mono);font-size:11px;color:var(--muted)}.cv-item ul{margin:8px 0 0;padding-left:1.15em}.cv-item li{margin-bottom:4px;font-size:15px;font-weight:500;color:var(--muted)}.cv-skills{margin:0;font-family:var(--mono);font-size:13px;line-height:1.7;color:var(--text)}.cv-plain{margin:0;padding:0;list-style:none;font-family:var(--mono);font-size:13px;color:var(--muted)}.cv-plain li{margin-bottom:6px}.strip{margin:8px 0 0}.strip a,.strip button.strip-row{display:grid;grid-template-columns:4.5rem 1fr auto;gap:16px;align-items:baseline;width:100%;padding:18px 0;border:0;border-bottom:1px solid var(--hair);background:none;color:inherit;text-align:left;cursor:pointer;text-decoration:none}.strip a:hover,.strip button.strip-row:hover{color:inherit;text-decoration:none}.strip a:hover .strip-role,.strip button.strip-row:hover .strip-role{color:var(--gold)}.strip-year{font-family:var(--mono);font-size:12px;color:var(--muted)}.strip-role{font-size:20px;font-weight:600;letter-spacing:-.02em}.strip-firm{font-family:var(--mono);font-size:11px;color:var(--muted);text-align:right}.section-more{display:inline-block;margin-top:18px;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase}.projects-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:64px 0 0}.projects-head h2.section{margin:0;flex:1}.rail-btns{display:flex;gap:8px;padding-bottom:12px}.rail-btns button{background:none;border:1px solid var(--gold);color:var(--gold);font-family:var(--mono);font-size:11px;letter-spacing:.14em;padding:6px 12px;cursor:pointer}.rail-btns button:hover{background:var(--gold);color:var(--bg)}.rail{display:flex;gap:28px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;padding:20px 0 32px;cursor:grab}.rail.is-drag{cursor:grabbing}.rail::-webkit-scrollbar{display:none}.card{flex:0 0 min(78vw,360px);color:inherit;text-decoration:none}.card:hover{text-decoration:none;color:inherit}.card .xp-shot{margin-bottom:16px}.card h3{font-size:22px;font-weight:600;margin:0 0 8px;letter-spacing:-.02em}.xp-shot{aspect-ratio:16 / 10;background:var(--bg-elev);overflow:hidden}.xp-shot img{width:100%;height:100%;object-fit:cover;display:block}.xp-shot.logo{background:#fff;padding:16px;display:flex;align-items:center;justify-content:center}html[data-theme=dark] .xp-shot.logo{background:#f4f1ea}.xp-shot.logo img{object-fit:contain}.meta{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.04em;margin:0 0 12px}.blurb{margin:0;font-size:17px;font-weight:500;color:var(--muted);line-height:1.55}.more{display:inline-block;margin-top:14px;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase}.skills-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 48px;margin:0;padding:8px 0 0;list-style:none;font-family:var(--mono);font-size:13px}.skills-grid li{padding:10px 0;border-bottom:1px solid var(--hair)}.certs{margin-top:28px;font-family:var(--mono);font-size:12px;color:var(--muted)}.certs span{display:block;margin-bottom:6px}.contact a.big{display:block;font-size:28px;color:var(--text);margin-top:10px}.contact a.big:hover{color:var(--gold)}.timeline{margin-top:8px}.tl-row{border-bottom:1px solid var(--hair)}.tl-head{display:grid;grid-template-columns:4.5rem 1fr auto;gap:16px;align-items:baseline;width:100%;padding:22px 0;border:0;background:none;color:inherit;text-align:left;cursor:pointer}.tl-head:hover .tl-role{color:var(--gold)}.tl-year{font-family:var(--mono);font-size:12px;color:var(--muted)}.tl-role{font-size:24px;font-weight:600;margin:0;letter-spacing:-.02em}.tl-firm{font-family:var(--mono);font-size:11px;color:var(--muted)}.tl-body{display:grid;grid-template-columns:280px 1fr;gap:32px;align-items:center;max-height:0;overflow:hidden;opacity:0;transition:max-height .45s ease,opacity .35s ease,padding .35s ease}.tl-row.open .tl-body{max-height:420px;opacity:1;padding-bottom:28px}.deck{height:calc(100vh - 61px);overflow:hidden;display:flex;cursor:grab;touch-action:none;overscroll-behavior:none}.deck.is-drag{cursor:grabbing}.slide{flex:0 0 100%;display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center;padding:40px 56px 72px}.slide .xp-shot{aspect-ratio:16 / 10}.slide h2{font-size:clamp(28px,4vw,48px);margin:0 0 8px;letter-spacing:-.03em}.deck-ui{position:fixed;right:40px;bottom:28px;display:flex;gap:8px;z-index:6}.resume-intro{max-width:36rem;margin:8px 0 20px;font-size:18px;font-style:italic;color:var(--muted)}.resume-actions{display:flex;gap:28px;flex-wrap:wrap;margin-bottom:28px}.resume-actions a{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--text)}.resume-actions a:hover{color:var(--gold);text-decoration:none}.resume-frame{width:100%;min-height:75vh;border:1px solid var(--hair);background:var(--bg-elev)}footer{border-top:1px solid var(--hair);padding:18px 40px 28px;display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}footer .sign{font-family:var(--script);font-size:13px;letter-spacing:.02em;text-transform:none}.cursor{display:none}@media (hover: hover) and (pointer: fine){html.has-cursor,html.has-cursor *{cursor:none}.cursor{display:block;position:fixed;top:0;left:0;z-index:40;width:18px;height:18px;margin:-9px 0 0 -9px;pointer-events:none}.cursor-petal{position:absolute;top:0;right:0;bottom:0;left:0;transition:transform .18s ease}.cursor-petal:before,.cursor-petal:after{content:"";position:absolute;left:50%;top:50%;width:7px;height:16px;margin:-8px 0 0 -3.5px;border:1px solid var(--gold);border-radius:50%}.cursor-petal:after{transform:rotate(90deg)}html.has-cursor .cursor.is-on .cursor-petal{transform:scale(1.45)}}@media (prefers-reduced-motion: reduce){html.has-cursor,html.has-cursor *{cursor:auto}.cursor{display:none!important}.page{animation:none}.tl-body{transition:none}}@media (max-width: 820px){.nav,.hero,.wrap,footer,.slide,.cv{padding-left:20px;padding-right:20px}.hero-inner,.tl-body,.slide,.skills-grid,.home-board{grid-template-columns:1fr}.hero-photo{max-width:360px}.strip a,.strip button.strip-row,.tl-head{grid-template-columns:3.5rem 1fr}.strip-firm,.tl-firm{grid-column:2;text-align:left}.contact a.big{font-size:20px}.deck-ui{right:20px}.cv-row{flex-wrap:wrap}.cv-dates,.cv-place{white-space:normal}}@media (min-width: 821px) and (max-width: 1020px){.home-board{grid-template-columns:repeat(2,1fr)}}
