@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@300;400;500&family=Manrope:wght@400;500;600&family=Newsreader:ital,opsz,wght@1,6..72,400;1,6..72,500&display=swap";:root{--ink:#171a1d;--muted:#60635f;--paper:#f1eee7;--paper-deep:#e8e3d9;--white:#fbfaf6;--line:#171a1d2e;--acid:#d5ed65;--acid-deep:#c4dd4a;--display:"Manrope", "Helvetica Neue", sans-serif;--serif:"Newsreader", "Iowan Old Style", serif;--mono:"DM Mono", "SFMono-Regular", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--paper)}body{color:var(--ink);background:var(--paper);font-family:var(--display);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.5}a{color:inherit;text-decoration:none}a,button{-webkit-tap-highlight-color:transparent}img{max-width:100%;display:block}.skip-link{z-index:100;background:var(--ink);color:#fff;padding:10px 14px;position:fixed;top:12px;left:12px;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.site-header{z-index:30;border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--paper) 88%, transparent);backdrop-filter:blur(16px);grid-template-columns:1fr auto 1fr;align-items:center;min-height:72px;padding:0 3vw;display:grid;position:sticky;top:0}.wordmark{align-items:center;gap:12px;width:fit-content;font-size:13px;font-weight:600;display:inline-flex}.wordmark>span:first-child{border:1px solid var(--ink);border-radius:50%;place-items:center;width:36px;height:36px;font-size:11px;display:grid}.site-header nav{font-family:var(--mono);text-transform:uppercase;letter-spacing:.04em;gap:30px;font-size:11px;display:flex}.site-header nav a,.header-contact,.text-links a,.publication-links a,footer a{transition:opacity .18s}.site-header nav a:hover,.header-contact:hover,.text-links a:hover,.publication-links a:hover,footer a:hover{opacity:.55}.header-contact{font-family:var(--mono);justify-self:end;font-size:12px}.header-contact span,.button span,.text-links span,.publication-heading a span,.contact-email span,footer a span{margin-left:6px}.hero{border-bottom:1px solid var(--line);isolation:isolate;flex-direction:column;min-height:calc(100svh - 72px);padding:clamp(52px,7vw,108px) 3vw 0;display:flex;position:relative;overflow:hidden}.hero:before{z-index:-1;aspect-ratio:1;background:var(--acid);content:"";border-radius:50%;width:clamp(420px,42vw,680px);position:absolute;top:-16%;right:-13%}.hero-main{flex:1;align-items:stretch;gap:2.6vw;display:flex;position:relative}.hero-copy{z-index:2;flex-direction:column;flex:1;justify-content:center;margin-right:clamp(-140px,-8vw,-40px);display:flex;position:relative}.hero-photo{z-index:1;width:clamp(300px,27vw,440px);position:absolute;bottom:0;right:0}.hero-photo img{width:100%;height:auto;display:block}.eyebrow{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:10px;margin:0 0 30px;font-size:11px;display:flex}.eyebrow>span{background:var(--acid);border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 4px #171a1d12}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.045em;margin-bottom:40px;font-size:clamp(40px,5.8vw,96px);font-weight:500;line-height:.98}h1>span{animation:.6s ease-out both h1-rise;display:block}h1>span:nth-child(2){animation-delay:90ms}h1>span:nth-child(3){animation-delay:.18s}h1>span:nth-child(4){animation-delay:.27s}@keyframes h1-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}h1>span:nth-child(2){margin-left:1.15em}h1>span:nth-child(3){margin-left:2.3em}h1>span:nth-child(4){margin-left:3.45em}h1 em{font-family:var(--serif);font-weight:400}.hero-summary{max-width:620px;color:var(--muted);margin-bottom:34px;font-size:clamp(16px,1.2vw,20px);line-height:1.6}.hero-actions{flex-wrap:wrap;gap:10px;display:flex}.button{border:1px solid var(--ink);min-height:48px;font-family:var(--mono);text-transform:uppercase;justify-content:space-between;align-items:center;gap:30px;padding:0 18px;font-size:11px;transition:transform .18s,background-color .18s;display:inline-flex}.button:hover{transform:translateY(-2px)}.button-dark{background:var(--acid);color:var(--ink)}.button-dark:hover{background:var(--acid-deep)}.button-light:hover{background:var(--white)}.hero-focus{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;row-gap:8px;margin:0;padding:20px 0 22px;list-style:none;display:flex}.hero-focus li{font-size:13px}.hero-focus a:hover{text-decoration:underline;text-decoration-color:var(--acid);text-underline-offset:4px;text-decoration-thickness:2px}.section{border-bottom:1px solid var(--line);grid-template-columns:minmax(120px,.55fr) minmax(0,2.45fr);gap:3vw;padding:clamp(72px,8vw,132px) 3vw;display:grid}.section-label{font-family:var(--mono);text-transform:uppercase;writing-mode:vertical-rl;place-self:start;align-items:center;gap:14px;font-size:10px;display:flex;transform:rotate(180deg)}.section-label span{background:var(--acid);width:22px;height:22px;color:var(--ink);place-items:center;display:grid}.section-label p{letter-spacing:.08em;margin:0}.about-copy{max-width:1180px}.about-body{grid-template-columns:minmax(0,1.5fr) minmax(220px,.6fr);align-items:start;gap:5vw;display:grid}.bio-prose p{max-width:660px;color:var(--muted);font-size:17px;line-height:1.75}.bio-prose a{text-underline-offset:3px;text-decoration:underline}.about-rail{border-top:1px solid var(--ink);padding-top:22px}.education-block{margin:0}.education-block h3{color:var(--muted);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;margin-bottom:14px;font-size:10px;font-weight:500}.education-block p{color:var(--muted);margin-bottom:6px;font-size:14px;line-height:1.65}.text-links{font-family:var(--mono);text-transform:uppercase;flex-wrap:wrap;gap:14px 28px;margin:34px 0 0;font-size:11px;display:flex}.text-links a{white-space:nowrap}.section-heading{justify-content:space-between;align-items:end;gap:40px;margin-bottom:70px;display:flex}.section-heading h2{letter-spacing:-.06em;margin-bottom:0;font-size:clamp(44px,6vw,96px);font-weight:500;line-height:1}.section-heading>p{max-width:420px;color:var(--muted);margin-bottom:4px;line-height:1.7}.work>.section-heading,.work>.filter-row,.work>.filter-status,.work>.publication-list,.experience>.section-heading,.experience>.timeline,.service>.section-heading,.service>.service-grid{grid-column:2}[hidden]{display:none!important}.filter-row{flex-wrap:wrap;gap:8px;margin:-18px 0 48px;display:flex}.filter-status{color:var(--muted);font-family:var(--mono);margin:-32px 0 16px;font-size:10px}.filter-button{border:1px solid var(--ink);color:var(--ink);cursor:pointer;font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;background:0 0;border-radius:0;padding:8px 14px;font-size:10px;transition:background .18s,color .18s}.filter-button:hover{background:#171a1d14}.filter-button.active{background:var(--acid);color:var(--ink)}.service-grid{grid-template-columns:1fr 1fr;gap:5vw;max-width:1080px;display:grid}.service-block h3{color:var(--muted);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;margin-bottom:18px;font-size:10px;font-weight:500}.service-block>p{max-width:460px;line-height:1.7}.service-detail{color:var(--muted);font-size:13px}.service-block ul{color:var(--muted);margin:0;padding-left:18px}.service-block li{margin-bottom:12px;padding-left:6px;line-height:1.65}.service-block a{text-underline-offset:3px;text-decoration:underline;transition:opacity .18s}.service-block a:hover{opacity:.55}.timeline{border-top:1px solid var(--ink)}.timeline-item{border-bottom:1px solid var(--line);grid-template-columns:minmax(110px,.55fr) minmax(230px,.9fr) minmax(0,1.55fr);gap:3vw;padding:36px 0 44px;display:grid}.timeline-date,.timeline-place{font-family:var(--mono);text-transform:uppercase;font-size:10px}.timeline-place{color:var(--muted);margin-bottom:10px}.timeline-item h3{letter-spacing:-.04em;margin-bottom:0;font-size:clamp(22px,2vw,34px);font-weight:500;line-height:1.15}.timeline-item ul{color:var(--muted);margin:0;padding-left:18px}.timeline-item li{margin-bottom:12px;padding-left:6px;line-height:1.65}.publication-heading>a{font-family:var(--mono);text-transform:uppercase;flex:none;margin-bottom:8px;font-size:10px}.publication-list{border-top:1px solid var(--ink)}.publication-item{border-bottom:1px solid var(--line);grid-template-columns:54px minmax(0,1fr) auto auto;gap:24px;padding:26px 0;display:grid}.publication-index{color:var(--ink);font-family:var(--mono);font-size:9px}.publication-main h3{letter-spacing:-.025em;max-width:960px;margin-bottom:8px;font-size:clamp(17px,1.6vw,24px);font-weight:500;line-height:1.35}.publication-main p{max-width:950px;color:var(--muted);margin-bottom:0;font-size:12px;line-height:1.6}.publication-links{font-family:var(--mono);text-transform:uppercase;align-items:start;gap:16px;padding-top:31px;font-size:9px;display:flex}.selected-extra{display:none}.publication-list[data-density=expanded] .publication-item-selected{padding:36px 0}.publication-list[data-density=expanded] .selected-extra{display:block}.publication-title-row{align-items:flex-start;gap:18px;margin-bottom:10px;display:flex}.publication-title-row h3{margin-bottom:0}.publication-list[data-density=expanded] .publication-item-selected .publication-title-row h3{letter-spacing:-.03em;font-size:clamp(20px,2vw,30px);line-height:1.2}.publication-venue{color:var(--muted);font-family:var(--mono);text-transform:uppercase;white-space:nowrap;align-self:start;padding-top:31px;font-size:10px}.pub-chip{border:1px solid var(--ink);width:40px;height:40px;font-family:var(--mono);text-transform:uppercase;border-radius:50%;flex:none;place-items:center;font-size:10px;display:grid}.publication-list[data-density=expanded] .pub-chip{width:54px;height:54px;font-size:12px}.publication-description{color:#171a1db8;max-width:640px;margin-bottom:16px;font-size:15px;line-height:1.65}.publication-authors{max-width:640px;color:var(--muted);font-family:var(--mono);margin-bottom:16px;font-size:10px;line-height:1.7}.publication-authors strong{color:#171a1de0;font-weight:500}.publication-tags{flex-wrap:wrap;gap:6px;margin:0 0 18px;padding:0;list-style:none;display:flex}.publication-tags li{border:1px solid var(--line);font-family:var(--mono);text-transform:uppercase;border-radius:0;padding:5px 8px;font-size:8px}.publication-item-selected .publication-links{gap:22px;font-size:10px}.contact{grid-template-columns:minmax(0,1.5fr) minmax(280px,.7fr);gap:8vw;padding:clamp(80px,10vw,150px) 3vw;display:grid}.contact h2>span{display:block}.contact h2 em{background:var(--acid);padding:.02em .08em .04em;font-style:normal;line-height:.9;display:inline-block}.contact h2{letter-spacing:-.065em;margin:0;font-size:clamp(50px,7vw,112px);font-weight:500;line-height:.95}.contact-right{align-self:end}.contact-right>p{max-width:440px;margin-bottom:34px;line-height:1.7}.contact-email{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);font-family:var(--mono);justify-content:space-between;gap:40px;padding:16px 0;font-size:11px;display:flex}footer{border-top:1px solid var(--line);background:var(--paper-deep);min-height:130px;color:var(--ink);font-family:var(--mono);text-transform:uppercase;grid-template-columns:1fr 1.4fr 1fr auto;align-items:center;gap:30px;padding:24px 3vw;font-size:9px;display:grid}footer p{color:var(--muted);margin:0}footer>div{gap:20px;display:flex}.footer-mark>span:first-child{border-color:var(--ink)}@media (width<=1100px){.hero-main{flex-direction:column}.hero:before{display:none}.hero-copy{margin-right:0}.hero-photo{isolation:isolate;width:min(78vw,460px);margin:clamp(36px,6vh,56px) -3vw 0 auto;display:block;position:relative;bottom:auto;right:auto}.hero-photo:before{z-index:-1;aspect-ratio:1;background:var(--acid);content:"";border-radius:50%;width:62%;position:absolute;top:-12%;right:-16%}}@media (width<=780px){.site-header{grid-template-columns:1fr auto;padding:0 18px}.site-header nav,.wordmark-name{display:none}.hero{padding:52px 18px 0}.hero-photo{width:min(84vw,460px);margin-right:-18px}h1{letter-spacing:-.035em;font-size:clamp(30px,9.2vw,56px)}h1>span:nth-child(2){margin-left:.55em}h1>span:nth-child(3){margin-left:1.1em}h1>span:nth-child(4){margin-left:1.65em}.hero-focus{flex-direction:column;gap:8px}.section{grid-template-columns:1fr;padding:82px 18px}.section-label{writing-mode:horizontal-tb;margin-bottom:30px;transform:none}.work>.section-heading,.work>.filter-row,.work>.filter-status,.work>.publication-list,.experience>.section-heading,.experience>.timeline,.service>.section-heading,.service>.service-grid{grid-column:1}.about-body,.service-grid{grid-template-columns:1fr}.text-links{flex-wrap:wrap}.section-heading{margin-bottom:44px;display:block}.section-heading h2{margin-bottom:24px}.timeline-item{grid-template-columns:1fr;gap:12px}.timeline-item ul{margin-top:10px}.publication-item{grid-template-columns:34px minmax(0,1fr);gap:12px}.publication-venue{grid-column:2;padding-top:0}.publication-links{grid-column:2;padding-top:4px}.publication-title-row{flex-wrap:wrap}.contact{grid-template-columns:1fr;padding:86px 18px}.publication-links a,.text-links a,footer a{align-items:center;min-height:36px;display:inline-flex}.contact-right{margin-top:30px}footer{grid-template-columns:1fr auto;padding:30px 18px}footer>p:first-of-type{display:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@page{size:letter;margin:.55in .65in}@media screen{.print-only{display:none!important}}.text-links button,footer button{color:inherit;cursor:pointer;font:inherit;letter-spacing:inherit;text-transform:inherit;white-space:nowrap;background:0 0;border:0;padding:0;transition:opacity .18s}.text-links button:hover,footer button:hover{opacity:.55}.print-icon{vertical-align:-.1em;width:1em;height:1em;margin-left:6px}@media (width<=780px){.text-links button,footer button{align-items:center;min-height:36px;display:inline-flex}}@media print{:root{--paper:#fff;--paper-deep:#fff;--line:#171a1d4d}html,body{background:#fff}body{font-size:10.5pt;line-height:1.5}.skip-link,.site-header nav,.header-contact,.hero:before,.hero-photo,.hero-actions,.hero-focus,.hero h1,.eyebrow>span,.filter-row,.filter-status,.pub-chip,.selected-extra,.text-links,.section-label,.section-heading h2,.publication-heading>a,.hero-summary,.contact,footer{display:none!important}.site-header{backdrop-filter:none;background:0 0;border-bottom:0;min-height:0;padding:0;display:block;position:static}.wordmark{pointer-events:none;gap:0}.wordmark>span:first-child{display:none}.wordmark-name{letter-spacing:.02em;text-transform:uppercase;font-size:20pt;font-weight:600;display:block}.hero{border-bottom:1.2pt solid var(--ink);min-height:0;padding:2pt 0 10pt;display:block;overflow:visible}.hero-main{display:block}.hero-copy{margin-right:0}.eyebrow{letter-spacing:.12em;margin:6pt 0 0;font-size:9pt}.print-contact{font-family:var(--mono);letter-spacing:.03em;margin:4pt 0 0;font-size:8.5pt}.print-contact span{color:var(--muted);margin:0 7px}.bio-prose:before{content:"01 About"}.experience .section-heading:before{content:"02 Experience"}.work .section-heading:before{content:"03 Publications"}.service .section-heading:before{content:"04 Service"}.bio-prose:before,.section-heading:before,.education-block h3{border-bottom:.75pt solid var(--ink);color:var(--ink);font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;margin:0 0 5pt;padding-bottom:3pt;font-size:9pt;font-weight:500;line-height:1.2;display:block}.section-heading,.bio-prose:before,.education-block h3{break-after:avoid}.section{border-bottom:0;padding:9pt 0 0;display:block}.section-heading{margin-bottom:6pt;display:block}.about-body{display:block}.bio-prose p{max-width:none;color:var(--muted);margin-bottom:5pt;font-size:10.5pt;line-height:1.45}.about-rail{border-top:0;margin-top:8pt;padding-top:0}.education-block p{color:var(--muted);margin-bottom:3pt;font-size:10.5pt;line-height:1.45}.timeline{border-top:0}.timeline-item{border-bottom:.5pt solid var(--line);break-inside:avoid;grid-template-columns:66pt 125pt 1fr;gap:12pt;padding:5pt 0}.timeline-item:last-child{border-bottom:0}.timeline-date,.timeline-place{font-size:8pt}.timeline-place{margin-bottom:4pt}.timeline-item h3{letter-spacing:0;font-size:11.5pt;line-height:1.25}.timeline-item ul{color:var(--muted);padding-left:14pt;font-size:10pt}.timeline-item li{margin-bottom:3pt;padding-left:2pt;line-height:1.4}.publication-list{counter-reset:pub;border-top:0}.publication-item{counter-increment:pub}.publication-item[hidden]{display:grid!important}.publication-list[data-density] .publication-item{border-bottom:.5pt solid var(--line);break-inside:avoid;grid-template-columns:18pt minmax(0,1fr) 108pt;align-items:start;gap:3pt 12pt;padding:2.5pt 0}.publication-list[data-density] .publication-item:last-child{border-bottom:0}.publication-index{grid-area:1/1;padding-top:1pt;font-size:0}.publication-index:before{content:counter(pub, decimal-leading-zero);color:var(--ink);font-size:8pt}.publication-main{grid-area:1/2/span 2}.publication-title-row{margin-bottom:0;display:block}.publication-list[data-density] .publication-title-row h3,.publication-list[data-density] .publication-item-selected .publication-title-row h3{letter-spacing:0;max-width:none;margin-bottom:2pt;font-size:10pt;font-weight:600;line-height:1.35}.publication-description{display:none}.publication-main .publication-authors{max-width:none;margin-bottom:0;font-size:8pt;line-height:1.45}.publication-venue{text-align:right;grid-area:1/3;padding-top:1pt;font-size:8pt}.publication-list .publication-links{grid-area:2/3;justify-content:flex-end;gap:9pt;padding-top:0;font-size:7.5pt}.publication-list:after{content:"* Equal contribution";color:var(--muted);font-family:var(--mono);margin-top:5pt;font-size:7.5pt;display:block}.service-grid{grid-template-columns:1fr 1fr;gap:16pt;max-width:none}.service-block{break-inside:avoid}.service-block h3{color:var(--ink);margin-bottom:4pt;font-size:8pt}.service-block>p{max-width:none;font-size:10pt;line-height:1.45}.service-block>p+p{margin-top:2pt}.service-detail{font-size:8.5pt}.service-block ul{color:var(--muted);padding-left:14pt;font-size:10pt}.service-block li{margin-bottom:2pt;padding-left:2pt;line-height:1.4}}
