@font-face{font-family:__plexSans_66298a;src:url(/_next/static/media/a7358d2e3dd919a9-s.p.woff2) format("woff2");font-display:swap;font-weight:100 700;font-style:normal}@font-face{font-family:__plexSans_Fallback_66298a;src:local("Arial");ascent-override:101.35%;descent-override:27.19%;line-gap-override:0.00%;size-adjust:101.13%}.__className_66298a{font-family:__plexSans_66298a,__plexSans_Fallback_66298a;font-style:normal}.__variable_66298a{--font-plex:"__plexSans_66298a","__plexSans_Fallback_66298a"}:root{--paper:#fff;--surface:#f5f5f5;--ink:#202020;--muted:#616161;--accent:#315c86;--line:#e2e2e2;--line-soft:#efefef;--font-sans:var(--font-plex),"Helvetica Neue",sans-serif;--ease-out:cubic-bezier(0.23,1,0.32,1);color-scheme:light}html.dark{--paper:#161616;--surface:#242424;--ink:#ededed;--muted:#adadad;--accent:#9ebede;--line:#363636;--line-soft:#262626;color-scheme:dark}*,:after,:before{box-sizing:border-box}html{scroll-padding-top:32px}body,html{background:var(--paper)}body{margin:0;padding-inline:env(safe-area-inset-left,0) env(safe-area-inset-right,0);color:var(--ink);font:1rem/1.65 var(--font-sans);-webkit-font-smoothing:antialiased}::selection{background:var(--accent);color:var(--paper)}a{-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:4px}a,button{color:inherit}button{font:inherit;cursor:pointer}a,button,summary{-webkit-tap-highlight-color:transparent}a,button{transition:color .15s ease,background-color .15s ease}button:disabled{cursor:default;opacity:.5}:focus-visible{outline:2px solid var(--accent);outline-offset:5px}main:focus{outline:none}h1,h2,h3,h4,h5,p{margin:0}h1,h2,h3,h4,h5{text-wrap:balance}dd,li,p{text-wrap:pretty}dd,dl,ol{margin:0}article[id],section[id]{scroll-margin-top:32px}.page-shell{width:min(800px,calc(100% - 64px));margin-inline:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;z-index:100;top:12px;left:12px;padding:10px 16px;background:var(--ink);color:var(--paper);transform:translateY(-200%)}.skip-link:focus{transform:translateY(0);color:var(--paper)}.button,.copy-email,.theme-toggle{transition-property:color,background-color,scale;transition-duration:.15s;transition-timing-function:ease,ease,ease-out}.button:active,.copy-email:active,.theme-toggle:active{scale:.96}.arrow{flex:none;display:inline-block;width:12px;height:12px;vertical-align:-1px}.arrow--up-right{rotate:-45deg}.arrow--up{rotate:-90deg}.arrow--left{rotate:180deg}.education-list__period,.experience-row__period,.project__period,.publication__venue,.resume-education p,.resume-job__heading>p,.resume-paper p,.section-label>p{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.site-header{display:flex;align-items:center;gap:24px;min-height:100px}.brand{display:inline-flex;align-items:center;min-width:44px;min-height:44px;margin-right:auto;font-size:15px;font-weight:550;letter-spacing:-.01em;text-decoration:none;white-space:nowrap}.site-navigation{display:flex;flex-wrap:wrap;gap:24px}.site-navigation a{display:inline-flex;align-items:center;min-width:44px;min-height:44px;font-size:14px;text-decoration:none}.site-navigation a[aria-current=page]{color:var(--muted)}.theme-toggle{display:grid;place-items:center;flex:0 0 44px;height:44px;padding:0;border:0;background:transparent;border-radius:4px}.theme-toggle__icon{position:relative;display:block;width:16px;height:16px;border:1.5px solid;border-radius:50%;overflow:hidden}.theme-toggle__icon:after{content:"";display:block;width:50%;height:100%;background:currentColor}html.dark .theme-toggle__icon{transform:rotate(180deg)}.intro{padding-block:36px 44px}.intro h1{font-size:clamp(1.7rem,3.5vw,2.15rem);line-height:1.25;font-weight:550;letter-spacing:-.035em}.intro__location{margin-top:12px;font-size:13px;color:var(--muted)}.intro__about{padding-top:24px;max-width:70ch;color:var(--muted);font-size:1rem;line-height:1.75}.intro__about p+p{margin-top:16px}.intro__about a{color:var(--ink);-webkit-text-decoration-color:var(--muted);text-decoration-color:var(--muted)}.intro__links{display:flex;align-items:center;flex-wrap:wrap;gap:24px;margin-top:24px}.button{justify-content:center;gap:10px;padding:10px 14px 10px 16px;background:var(--ink);color:var(--paper);border:0;border-radius:4px;font-weight:550}.button,.text-link{display:inline-flex;align-items:center;min-height:44px;font-size:14px;text-decoration:none}.text-link{gap:8px;color:var(--ink)}.text-link .arrow{color:var(--muted)}.section-layout{padding-block:36px 44px;border-top:1px solid var(--line)}.section-label{display:flex;align-items:baseline;justify-content:space-between;gap:20px;margin-bottom:28px}.section-label h2{font-size:1.2rem;font-weight:550;line-height:1.4;letter-spacing:-.015em}.section-label>p{font-size:12px;color:var(--muted)}.section-label>a{font-size:13px;color:var(--muted)}.project+.project{margin-top:56px}.project__heading{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.project__heading h3{font-size:1.125rem;font-weight:600;letter-spacing:-.02em;line-height:1.5}.project__period{color:var(--muted);font-size:12px;white-space:nowrap}.project__role{color:var(--muted);font-size:13px;margin-top:4px}.project h4{margin-top:16px;margin-bottom:8px;font-size:1rem;line-height:1.5;font-weight:500}.project__description{color:var(--muted);max-width:70ch;line-height:1.75}.project__stack{margin-top:20px;font-size:12px;color:var(--muted);line-height:1.7}.project__links{display:flex;flex-wrap:wrap;gap:24px;margin-top:12px}.project-details{margin-top:16px}.project-details summary{display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:44px;cursor:pointer;font-size:13px;list-style:none}.project-details summary::-webkit-details-marker{display:none}.details-mark{position:relative;width:12px;height:12px;flex:0 0 12px}.details-mark:after,.details-mark:before{content:"";position:absolute;top:calc(50% - .75px);left:0;width:12px;height:1.5px;background:currentColor}.details-mark:after{transform:rotate(90deg);transition:transform .2s var(--ease-out)}details[open] .details-mark:after{transform:rotate(0)}.project-details__body{padding:20px 0 4px}details[open] .project-details__body{animation:details-enter .2s var(--ease-out)}@keyframes details-enter{0%{opacity:0;translate:0 -4px}}.project-details__body>div+div{margin-top:16px}.project-details__body h5{font-size:14px;font-weight:600;margin-bottom:4px}.project-details__body p{color:var(--muted);font-size:14px;line-height:1.8}.experience-list{list-style:none;padding:0}.experience-row{display:grid;grid-template-columns:150px minmax(0,1fr);grid-column-gap:32px;column-gap:32px;padding-block:24px;border-bottom:1px solid var(--line-soft)}.experience-row:first-child{padding-top:0}.experience-row__period{font-size:12px;color:var(--muted);padding-top:4px}.experience-row h3{font-size:16px;line-height:1.5;font-weight:650}.experience-row__role{font-size:14px;margin-top:4px}.experience-row__summary{color:var(--muted);font-size:13px;margin-top:4px;line-height:1.7}.tools-section{padding-top:32px}.tools-section>h3{font-size:16px;font-weight:600;margin-bottom:16px}.tools-list>div{display:grid;grid-template-columns:115px minmax(0,1fr);grid-gap:20px;gap:20px;margin-top:8px;font-size:13px;line-height:1.75}.tools-list dt{font-weight:550}.research-intro,.tools-list dd{color:var(--muted)}.research-intro{max-width:65ch;line-height:1.8}.publications{margin-top:28px}.publication{padding-block:24px;border-top:1px solid var(--line-soft)}.publication__venue{color:var(--muted);font-size:12px;margin-bottom:8px}.publication h3{font-size:1rem;font-weight:500;line-height:1.65;text-wrap:pretty}.publication h3 a{text-decoration:none}.publication h3 .arrow{color:var(--accent)}.publication__authors{color:var(--muted);font-size:12px;margin-top:8px}.education-list{display:grid;grid-template-columns:1fr 1fr;grid-gap:28px;gap:28px;padding-top:24px;border-top:1px solid var(--line-soft)}.education-list h3{font-size:15px;font-weight:600}.education-list p{font-size:13px;margin-top:4px}.education-list .education-list__period{font-size:12px;color:var(--muted)}.contact{padding-bottom:68px}.contact__intro{color:var(--muted);max-width:58ch}.contact__email{display:inline-block;margin-top:20px;min-height:44px;font-size:clamp(1.1rem,2.3vw,1.35rem);letter-spacing:-.015em;text-decoration:underline;overflow-wrap:anywhere}.contact__links{display:flex;align-items:center;flex-wrap:wrap;gap:24px;margin-top:16px}.copy-email{background:transparent;border:0;padding:0}.copy-email__labels{display:grid;text-align:start}.copy-email__label{grid-area:1/1;transition:opacity .15s ease}.copy-email__label[data-active=false]{opacity:0}.site-footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px;padding-block:24px 40px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}.site-footer>div{display:flex;gap:28px}.site-footer a{display:inline-flex;align-items:center;gap:8px;min-height:44px;text-decoration:none}.site-footer>span{align-self:center}.resume{max-width:860px;padding-bottom:80px}.resume-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-block:32px 48px}.resume-heading h1{font-size:clamp(1.7rem,3.5vw,2.15rem);font-weight:550;line-height:1.25;letter-spacing:-.035em}.resume-heading__role{font-size:19px;margin-top:8px}.resume-heading>p:not(.resume-heading__role):not(.resume-summary){color:var(--muted);font-size:14px;margin-top:4px}.resume-heading__links{display:flex;flex-wrap:wrap;gap:4px 20px;margin-top:12px;font-size:12px}.resume-summary{margin-top:24px;color:var(--muted)}.resume-section{margin-top:36px;padding-top:24px;border-top:1px solid var(--line)}.resume-section>h2{font-size:1.2rem;font-weight:550;line-height:1.4;margin-bottom:24px}.resume-job{margin-top:24px}.resume-job__heading{display:flex;justify-content:space-between;gap:20px;align-items:baseline}.resume-job h3{font-size:17px;font-weight:650}.resume-job__heading>p{font-size:12px;color:var(--muted);flex-shrink:0}.resume-job__role{margin-top:4px;font-size:14px}.resume-job ul{margin-block:8px 0;padding-left:18px;font-size:14px;color:var(--muted)}.resume-job li+li{margin-top:4px}.resume-education+.resume-education,.resume-paper+.resume-paper{margin-top:16px}.resume-education h3,.resume-paper h3{font-size:15px;font-weight:550;line-height:1.65}.resume-education p,.resume-paper p{font-size:12px;color:var(--muted);margin-top:4px}@media (hover:hover) and (pointer:fine){a:hover{color:var(--accent);-webkit-text-decoration-color:currentColor;text-decoration-color:currentColor}.button:hover{color:var(--paper);background:var(--accent)}.text-link:hover{text-decoration:underline}.theme-toggle:hover{background:var(--surface)}.project-details summary:hover{color:var(--accent)}.publication h3 a:hover{text-decoration:underline}}@media (max-width:760px){.page-shell{width:calc(100% - 40px)}.site-header{min-height:80px;gap:16px}.brand{font-size:14px}.site-navigation{gap:16px}.site-navigation a{font-size:13px}.intro{padding-block:32px 36px}.intro__about{padding-top:20px;max-width:65ch}.intro__links{gap:12px 24px;margin-top:24px}.section-layout{padding-block:28px 36px}.section-label{margin-bottom:24px}.project+.project{margin-top:48px}.project__description{font-size:1rem}.experience-row{grid-template-columns:126px minmax(0,1fr);gap:20px}.contact{padding-bottom:44px}.resume-toolbar{padding-block:24px 36px}.resume-job__heading{flex-wrap:wrap;gap:4px 20px}}@media (max-width:600px){.site-header{display:grid;grid-template-columns:1fr 44px;grid-gap:0;gap:0;padding-top:12px}.brand{grid-column:1;grid-row:1;justify-self:start;font-size:15px}.theme-toggle{grid-column:2;grid-row:1}.site-navigation{grid-column:1/-1;grid-row:2;justify-content:space-between;gap:12px;padding-block:4px}.site-navigation a{min-height:44px}.intro__links{gap:8px 20px}.intro__links .button{flex-basis:100%;justify-content:space-between;margin-bottom:4px}.experience-row{grid-template-columns:1fr;gap:8px;padding-block:20px}.tools-list>div{grid-template-columns:1fr;gap:2px;margin-top:16px}.education-list{grid-template-columns:1fr;gap:24px}.site-footer{flex-direction:column;padding-bottom:28px;gap:12px}.site-footer>span{align-self:start}.site-footer>div{justify-content:space-between}.resume-toolbar{align-items:flex-start;gap:12px}.resume-heading__links,.resume-toolbar{flex-direction:column}}@media (prefers-reduced-motion:reduce){.button,.copy-email,.theme-toggle{transition-property:color,background-color}.button:active,.copy-email:active,.theme-toggle:active{scale:1}.details-mark:after{transition:none}details[open] .project-details__body{animation:none}}@page{size:A4;margin:14mm}@media print{:root,html.dark{--paper:#fff;--surface:#fff;--ink:#222;--muted:#444;--line:#bbb;--line-soft:#ccc;--accent:#222;color-scheme:light}body{font-size:10pt;line-height:1.4}.resume-toolbar,.site-footer,.site-header,.skip-link{display:none!important}.resume.page-shell{width:100%;max-width:none;padding:0}.resume-heading h1{font-size:27pt}.resume-heading__role{font-size:12pt;margin-top:5px}.resume-heading>p:not(.resume-heading__role):not(.resume-summary){font-size:9pt}.resume-heading__links{font-size:8pt;gap:4px 14px;margin-top:8px}.resume-summary{font-size:9.5pt;margin-top:12px}.resume-section{margin-top:19px;padding-top:12px}.resume-section+.resume-section{page-break-inside:avoid;break-inside:avoid}.resume-section>h2{font-size:16pt;margin-bottom:12px;page-break-after:avoid;break-after:avoid}.resume-job{margin-top:14px;page-break-inside:avoid;break-inside:avoid}.resume-job h3{font-size:10.5pt}.resume-job__heading>p,.resume-job__role{font-size:9pt}.resume-job ul{font-size:9pt;margin-top:6px}.resume-job li+li{margin-top:3px}.tools-list>div{font-size:9pt;margin-top:5px;grid-template-columns:105px 1fr;gap:12px}.resume-education,.resume-paper{page-break-inside:avoid;break-inside:avoid}.resume-education h3,.resume-paper h3{font-size:9.5pt}.resume-education p,.resume-paper p{font-size:8pt}.resume-education+.resume-education,.resume-paper+.resume-paper{margin-top:10px}a{text-decoration:none}}