:root{color-scheme:dark;--neutral-0:#fff;--neutral-1:#fcfcfd;--neutral-3:#f1f2f4;--neutral-5:#dfe3e7;--neutral-10:#bcc4cb;--neutral-20:#99a5b0;--neutral-30:#8694a2;--neutral-40:#6f8090;--neutral-70:#5b6976;--neutral-80:#454f59;--neutral-85:#374048;--neutral-90:#292f35;--neutral-93:#1b1f23;--neutral-95:#121417;--neutral-98:#070809;--neutral-100:#030304;--color-text-primary:var(--neutral-1);--color-text-secondary:var(--neutral-40);--color-text-tertiary:var(--neutral-80);--color-surface-page:var(--neutral-100);--color-surface-secondary:var(--neutral-98);--color-button-default-fill:var(--neutral-40);--color-button-hover-fill:var(--neutral-40);--color-button-hover-bg:var(--neutral-95);--color-button-active-fill:var(--neutral-1);--color-button-active-bg:var(--neutral-95);--font-sans:"Be Vietnam Pro", "Segoe UI", sans-serif;--font-serif:Newsreader, Georgia, serif;--type-display-size:48px;--type-display-line:56px;--type-heading-large-size:32px;--type-heading-large-line:40px;--type-heading-medium-size:24px;--type-heading-medium-line:32px;--type-heading-small-size:20px;--type-heading-small-line:28px;--type-body-large-size:18px;--type-body-large-line:28px;--type-body-default-size:16px;--type-body-default-line:24px;--type-body-small-size:14px;--type-body-small-line:20px;--type-label-size:14px;--type-label-line:20px;--type-caption-size:12px;--type-caption-line:16px}:root[data-theme=light]{color-scheme:light;--color-text-primary:var(--neutral-90);--color-text-secondary:var(--neutral-40);--color-text-tertiary:var(--neutral-80);--color-surface-page:var(--neutral-1);--color-surface-secondary:var(--neutral-3);--color-button-default-fill:var(--neutral-70);--color-button-hover-fill:var(--neutral-70);--color-button-hover-bg:var(--neutral-3);--color-button-active-fill:var(--neutral-98);--color-button-active-bg:var(--neutral-5)}.display,.heading-large,.heading-medium,.heading-small,.label,.caption,.caption-emphasis{font-family:var(--font-sans);letter-spacing:0;font-style:normal;font-weight:400}.body-large,.body-default,.body-small{font-family:var(--font-serif);letter-spacing:0;font-style:normal;font-weight:400}.display{font-size:var(--type-display-size);line-height:var(--type-display-line)}.heading-large{font-size:var(--type-heading-large-size);line-height:var(--type-heading-large-line)}.heading-medium{font-size:var(--type-heading-medium-size);line-height:var(--type-heading-medium-line)}.heading-small{font-size:var(--type-heading-small-size);line-height:var(--type-heading-small-line)}.body-large{font-size:var(--type-body-large-size);line-height:var(--type-body-large-line)}.body-default{font-size:var(--type-body-default-size);line-height:var(--type-body-default-line)}.body-small{font-size:var(--type-body-small-size);line-height:var(--type-body-small-line)}.label{font-size:var(--type-label-size);line-height:var(--type-label-line)}.caption,.caption-emphasis{font-size:var(--type-caption-size);line-height:var(--type-caption-line)}.caption-emphasis{font-weight:500}:root{--bg:var(--color-surface-page);--text:var(--color-text-primary);--link:var(--color-text-primary);--sans:var(--font-sans);--serif:var(--font-serif);--reading-width:570px;--sidebar-width:326px;--layout-gap:48px;--layout-pad:16px;--section-gap:64px;--page-width:calc(var(--reading-width) + var(--layout-gap) + var(--sidebar-width) + (2 * var(--layout-pad)))}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);font-family:var(--sans);margin:0;font-weight:400;position:relative}a{color:var(--link)}a:focus-visible{outline:2px solid var(--text);outline-offset:3px}.page{width:min(var(--page-width), 100%);margin-inline:auto}.page-header{justify-content:center;padding:64px 0 128px;display:flex;overflow:visible}.theme-selector{z-index:3;align-items:center;gap:4px;display:flex;position:absolute;top:8px;right:16px}.theme-option{width:40px;height:40px;color:var(--color-button-default-fill);cursor:pointer;background:0 0;border:0;border-radius:5px;justify-content:center;align-items:center;margin:0;padding:8px;display:flex}.theme-option svg{width:24px;height:24px;display:block}.theme-option:hover{background:var(--color-button-hover-bg);color:var(--color-button-hover-fill)}.theme-option[aria-pressed=true],.theme-option[aria-pressed=true]:hover{background:var(--color-button-active-bg);color:var(--color-button-active-fill)}.theme-option:focus-visible{outline:2px solid var(--text);outline-offset:3px}@media (prefers-reduced-motion:no-preference){html.theme-fade,html.theme-fade *{transition:background-color .32s,fill .32s,stroke .32s}.theme-option,.footer-chip{transition:background-color .35s,color .35s}}.logo{z-index:2;flex-direction:column;width:151px;height:144px;display:flex;position:relative;overflow:visible}.logo-bug,.logo-highlight{width:100%;display:block}.logo-bug{height:61.8949px;color:var(--color-text-primary);margin-top:39.2287px}.logo-highlight{pointer-events:none;height:23.784px;margin-top:19.0924px;position:relative;overflow:visible}.logo-highlight svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.logo-highlight path,.highlight path{stroke:var(--color-text-primary);stroke-opacity:1;stroke-width:1.77225px;stroke-linecap:round}.section-mark path{stroke:var(--color-text-tertiary);stroke-opacity:1;stroke-width:1.77225px;stroke-linecap:round}.icon-open{color:var(--color-text-tertiary);flex:none;display:block}html.is-scrolling .logo-highlight svg,html.is-scrolling .section-mark path,html.is-scrolling .highlight path{animation:line-wiggle var(--wiggle-time) ease-in-out infinite;animation-delay:var(--wiggle-delay)}.logo-highlight svg:first-child{--tilt:8deg;--wiggle-time:.36s;--wiggle-delay:0s;transform-origin:3%}.logo-highlight svg:nth-child(2){--tilt:-6deg;--wiggle-time:.44s;--wiggle-delay:40ms;transform-origin:12%}.logo-highlight svg:nth-child(3){--tilt:7deg;--wiggle-time:.4s;--wiggle-delay:90ms;transform-origin:22%}.logo-highlight svg:nth-child(4){--tilt:-9deg;--wiggle-time:.48s;--wiggle-delay:20ms;transform-origin:34%}.logo-highlight svg:nth-child(5){--tilt:6deg;--wiggle-time:.38s;--wiggle-delay:.11s;transform-origin:48%}.logo-highlight svg:nth-child(6){--tilt:-7deg;--wiggle-time:.42s;--wiggle-delay:60ms;transform-origin:62%}.logo-highlight svg:nth-child(7){--tilt:9deg;--wiggle-time:.5s;--wiggle-delay:.13s;transform-origin:72%}.logo-highlight svg:nth-child(8){--tilt:-5deg;--wiggle-time:.34s;--wiggle-delay:80ms;transform-origin:83%}.logo-highlight svg:nth-child(9){--tilt:8deg;--wiggle-time:.46s;--wiggle-delay:30ms;transform-origin:96%}.section-mark path,.highlight path{transform-box:fill-box;transform-origin:50%}.section-mark path:first-child,.highlight path:first-child{--tilt:8deg;--wiggle-time:.36s;--wiggle-delay:0s}.section-mark path:nth-child(2),.highlight path:nth-child(2){--tilt:-6deg;--wiggle-time:.44s;--wiggle-delay:40ms}.section-mark path:nth-child(3),.highlight path:nth-child(3){--tilt:7deg;--wiggle-time:.4s;--wiggle-delay:90ms}.section-mark path:nth-child(4),.highlight path:nth-child(4){--tilt:-9deg;--wiggle-time:.48s;--wiggle-delay:20ms}.section-mark path:nth-child(5),.highlight path:nth-child(5){--tilt:6deg;--wiggle-time:.38s;--wiggle-delay:.11s}.section-mark path:nth-child(6),.highlight path:nth-child(6){--tilt:-7deg;--wiggle-time:.42s;--wiggle-delay:60ms}.section-mark path:nth-child(7),.highlight path:nth-child(7){--tilt:9deg;--wiggle-time:.5s;--wiggle-delay:.13s}.section-mark path:nth-child(8),.highlight path:nth-child(8){--tilt:-5deg;--wiggle-time:.34s;--wiggle-delay:80ms}.section-mark path:nth-child(9),.highlight path:nth-child(9){--tilt:8deg;--wiggle-time:.46s;--wiggle-delay:30ms}@keyframes line-wiggle{0%,to{transform:rotate(0)}35%{transform:rotate(var(--tilt))}70%{transform:rotate(calc(var(--tilt) * -1))}}@media (prefers-reduced-motion:reduce){html.is-scrolling .logo-highlight svg,html.is-scrolling .section-mark path,html.is-scrolling .highlight path{animation:none}}.main-content{align-items:center;gap:var(--section-gap);flex-direction:column;display:flex}.home-main,.career-layout{gap:var(--layout-gap);width:100%;padding-inline:var(--layout-pad);align-items:flex-start;display:flex}.essay{width:var(--reading-width);flex-direction:column;gap:24px;display:flex}.essay-header{flex-direction:column;gap:16px;display:flex}h1,.subhead,.name,.career-header h2,.role-title,.role-meta,.divider{font-family:var(--sans);font-style:normal;font-weight:400}h1{font-size:var(--type-display-size);line-height:var(--type-display-line);color:var(--text);margin:0}.subhead{font-size:var(--type-heading-medium-size);line-height:var(--type-heading-medium-line);color:var(--text);margin:0}.essay-body p,.panel-copy,.role-summary{font-family:var(--serif);font-size:var(--type-body-large-size);font-weight:400;line-height:var(--type-body-large-line);margin:0}.essay-body{color:var(--text);flex-direction:column;gap:18px;display:flex}.panel{width:var(--sidebar-width);flex-direction:column;gap:32px;display:flex}.panel-block{flex-direction:column;gap:16px;display:flex}.name{font-size:var(--type-heading-large-size);line-height:var(--type-heading-large-line);margin:0}.panel-copy{color:var(--text)}.portrait{border-radius:15px;width:100%;height:auto;display:block}.link-row{gap:16px;display:flex}.link-row a{font-family:var(--serif);font-size:var(--type-body-default-size);text-underline-offset:.12em;line-height:1;text-decoration:underline}.career-header h2{margin:0}.section-mark,.highlight{width:146px;height:24px;display:block;overflow:visible}.career{width:var(--reading-width);flex-direction:column;flex:none;gap:42px;display:flex}.projects{width:var(--sidebar-width);flex-direction:column;flex:none;gap:32px;display:flex}.projects-intro,.project{flex-direction:column;display:flex}.projects-intro{gap:16px}.project{gap:8px}.archive-list{flex-direction:column;gap:32px;display:flex}.archive-project{flex-direction:column;gap:4px;display:flex}.archive-project h4{font-family:var(--sans);font-weight:400;font-size:var(--type-label-size);line-height:var(--type-label-line);color:var(--color-text-secondary);margin:0}.projects-intro h2,.project-title{margin:0;font-weight:400}.projects-intro h2{font-size:var(--type-heading-large-size);line-height:var(--type-heading-large-line)}.projects-intro p,.project p{font-family:var(--serif);font-size:var(--type-body-large-size);line-height:var(--type-body-large-line);color:var(--text);margin:0}.project p a{color:inherit;text-underline-offset:.12em;text-decoration:underline}.project-title{font-size:var(--type-heading-small-size);line-height:var(--type-heading-small-line);align-items:center;display:flex}.project-title a{color:var(--text);text-underline-offset:.12em;text-decoration:underline}.project-title .icon-open,.role-title .icon-open{width:16px;height:16px;margin:8px}.project-image{width:100%;height:auto;display:block}.career-header{flex-direction:column;gap:16px;display:flex}.career-header h2{font-size:var(--type-display-size);line-height:var(--type-display-line)}.role{flex-direction:column;gap:16px;display:flex}.role-header{flex-direction:column;gap:8px;display:flex}.role-title{font-size:var(--type-heading-medium-size);line-height:var(--type-heading-medium-line);align-items:center;margin:0;display:flex}.role-title a,.role-title span{color:var(--text)}.role-title a{text-underline-offset:.12em;text-decoration:underline}.cv{width:var(--reading-width);flex-direction:column;gap:24px;display:flex}.cv-header{flex-direction:column;gap:16px;display:flex}.cv-heading{font-size:var(--type-heading-medium-size);line-height:var(--type-heading-medium-line);margin:0;font-weight:400}.cv-jobs{flex-direction:column;gap:48px;display:flex}.cv-job,.cv-job-header,.cv-titles{flex-direction:column;display:flex}.cv-job{gap:24px}.cv-job-header,.cv-titles{gap:8px}.cv-company{align-items:center;margin:0;font-size:24px;font-weight:400;line-height:30px;display:flex}.cv-company a,.cv-company span,.cv-mention{color:var(--text)}.cv-company a,.cv-mention{text-underline-offset:.12em;text-decoration:underline}.cv-company .icon-open{width:24px;height:24px;margin:8px}.cv-intro a{color:inherit;text-underline-offset:.12em;text-decoration:underline}.cv-intro,.cv-summary,.cv-points{font-family:var(--serif);font-size:var(--type-body-large-size);line-height:var(--type-body-large-line);color:var(--text);margin:0}.cv-titles{color:var(--color-text-secondary);font-size:var(--type-label-size);line-height:var(--type-label-line);margin:0;padding:0;list-style:none}.cv-points{flex-direction:column;gap:16px;padding-left:27px;list-style:outside;display:flex}.page-footer{width:100%;margin-top:var(--section-gap);padding:var(--layout-pad);justify-content:space-between;align-items:center;gap:16px;display:flex}.page-footer p{color:var(--color-text-tertiary);font-size:var(--type-label-size);line-height:var(--type-label-line);text-align:right;margin:0}.footer-mark{align-items:center;gap:16px;display:flex}.footer-chip{color:var(--color-button-default-fill);border-radius:5px;justify-content:center;align-items:center;padding:8px;display:flex}.footer-chip svg{width:24px;height:24px;display:block}.footer-chip:hover{background:var(--color-button-hover-bg);color:var(--color-button-hover-fill)}.special{min-height:100dvh;padding:16px;position:relative}.special-photo{object-fit:cover;border-radius:48px;width:100%;height:calc(100dvh - 32px);display:block}.special-caption{flex-direction:column;gap:32px;display:flex;position:absolute;bottom:53px;left:74px}.special .logo-bug{color:var(--color-surface-page)}.special .logo-highlight path{stroke:var(--color-surface-page)}.special-notes{color:var(--color-surface-page);font-size:var(--type-label-size);line-height:var(--type-label-line);flex-direction:column;gap:10px;display:flex}.special-notes p{margin:0}.special-notes a{color:inherit;text-underline-offset:.12em;text-decoration:underline}.role-meta{font-size:var(--type-label-size);line-height:var(--type-label-line);color:var(--color-text-secondary);margin:0}.role-summary{color:var(--text)}.tags{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.tags li{background:var(--color-surface-secondary);color:var(--color-text-secondary);font-size:var(--type-label-size);line-height:var(--type-label-line);border-radius:5px;padding:8px}@media (width<=980px){.page{max-width:calc(var(--reading-width) + (2 * var(--layout-pad)));width:100%}.page-header{padding:64px 0 72px}.home-main,.career-layout,.essay,.panel,.career,.projects,.cv{width:100%}.career-layout,.page-footer{flex-direction:column;align-items:flex-start}.page-footer p{text-align:left}.home-main{flex-direction:column;gap:48px}h1,.career-header h2{font-size:36px;line-height:44px}}
