:root{--font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}:root{color-scheme:light dark;--paper:light-dark(#fff,#1b1c20);--ink:light-dark(#313439,#eeedf0);--quiet:light-dark(#62666c,#b8b6c0);--green:light-dark(#2f6654,#a1ccb7);--line:light-dark(#d1cdd0,#49454c);--soft:light-dark(#edf5f0,#273d33)}*{box-sizing:border-box}html{scroll-padding-top:6rem}body{margin:0;background:var(--paper);color:var(--ink);font:15.5px/1.55 var(--font-family)}a{color:var(--green);text-decoration:none;text-underline-offset:3px;overflow-wrap:anywhere}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}img,video,iframe{max-width:100%}img{height:auto}p{margin:0 0 .85rem}h1,h2,h3,h4{line-height:1.3;font-weight:600;color:var(--ink)}h1{font-size:2rem;letter-spacing:-.025em;margin:0 0 .6rem}h2{font-size:1.35rem;margin:0 0 1rem}h3{font-size:1.05rem;margin:1.2rem 0 .5rem}h4{font-size:.95rem;margin:1rem 0 .4rem}li{margin:.3rem 0}li::marker{color:var(--green)}ul,ol{padding-left:1.3rem}blockquote{border-left:2px solid var(--green);margin:1rem 0;padding-left:.85rem;color:var(--quiet);font-size:1.1rem}blockquote p:last-child{margin:0}pre{overflow-x:auto;padding:1rem;background:var(--soft);font-size:.85rem}code{overflow-wrap:anywhere}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{padding:.45rem;text-align:left;border-bottom:1px solid var(--line);overflow-wrap:anywhere}figure{margin:1rem 0}figcaption,.small{font-size:.8rem;color:var(--quiet)}.icon{display:inline-block;flex:none;vertical-align:-.15em}.site-container{max-width:1060px;margin:auto;padding:0 46px}.site-nav{position:sticky;top:0;z-index:20;background:var(--paper);display:flex;justify-content:space-between;align-items:center;gap:1.5rem;padding:1rem 0;border-bottom:1px solid var(--line);font-size:.85rem}.site-nav a{color:var(--ink)}.desktop-menu{display:flex;flex-wrap:wrap;gap:.4rem 1.3rem;list-style:none;margin:0;padding:0}.desktop-menu li{margin:0}.nav-menu{display:none}.nav-menu>summary{display:none}.nav-menu>ul{display:flex!important;flex-wrap:wrap;gap:.4rem 1.3rem;list-style:none;margin:0;padding:0}.nav-menu li{margin:0}main{padding-bottom:2rem}.skip-link{position:absolute;transform:translateY(-200%);background:var(--paper);padding:.6rem;z-index:30}.skip-link:focus{transform:none}.home-section,.archive-year{margin-top:2.1rem;scroll-margin-top:1.3rem}.section-heading{display:flex;align-items:baseline;gap:.8rem;margin-bottom:1rem}.section-heading h2{margin:0;font-size:1.35rem}.section-heading>span{height:1px;flex:1;min-width:.5rem;background:var(--line)}.section-heading>a{font-size:.8rem;white-space:nowrap}.disclosure-toggle{font:inherit;font-size:.8rem;border:0;padding:.15rem 0;background:0 0;color:var(--green);cursor:pointer;white-space:nowrap}.disclosure-toggle:focus-visible{outline:2px solid var(--green);outline-offset:3px}.profile-intro{display:grid;grid-template-columns:minmax(0,1fr)180px;gap:2.5rem}.role{font-size:.95rem;color:var(--quiet);margin-bottom:1.2rem}.biography{text-align:left}.portrait{margin:0;max-width:180px}.portrait .portrait-photo{display:block;width:180px;border-radius:14px;box-shadow:0 3px 14px #00000012}.portrait figcaption{font-size:.65rem;margin-top:.3rem}.profile-links{display:grid;grid-template-columns:1fr 1fr;gap:.3rem .7rem;margin-top:.65rem;font-size:.75rem}.profile-links a,.profile-link-placeholder{display:inline-flex;align-items:center;gap:.3rem;min-height:2rem;white-space:nowrap}.news{margin-top:2rem}.news ul{font-size:.9rem}.publication-row{display:grid;grid-template-columns:minmax(0,1fr)fit-content(12rem);gap:.25rem 1rem;align-items:start;margin:1rem 0}.publication-copy{min-width:0}.publication-row h3{font-size:1.05rem;line-height:1.3;margin:0}.publication-row h3 a{color:var(--ink)}.authors{font-size:.9rem;color:var(--quiet)}.authors a{font-style:normal;color:inherit}.authors .self{font-style:normal;color:var(--ink)}.publication-row .authors{margin-top:.1rem;line-height:1.35;min-width:0}.publication-aside{min-width:5.2rem;max-width:12rem;text-align:right;padding-top:.15rem}.venue{font-size:.8rem;line-height:1.35;margin:0}.venue time{color:var(--quiet);margin-left:.25rem}.award{display:inline-block;vertical-align:baseline;white-space:nowrap;margin-left:.4rem;color:light-dark(#94601d,#e7b96c);font-size:.8rem;font-weight:600;line-height:1.35}.award svg{width:1em;height:1em;vertical-align:-.12em;margin-right:.18em}.award path{stroke:currentColor}.resource-links{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem 1rem;font-size:.8rem}.publication-row .resource-links{margin-top:.25rem;gap:.3rem .8rem;line-height:1.35;min-height:24px}.artifact-links{display:flex;justify-content:flex-end;align-items:center;gap:.2rem;margin-top:.35rem}.mobile-artifact-links{display:none}.publication-row .artifact-badge{margin:0;display:inline-flex;align-items:center}.publication-row .artifact-badge img{height:24px;width:auto}.artifact-badge{display:inline-flex;align-items:center;gap:.2rem}.artifact-badge img{display:block;width:auto;height:40px;object-fit:contain}.resource-links .artifact-badge:first-of-type{margin-left:auto}.resource-links .artifact-badge{margin-left:auto}.resource-links .artifact-badge~.artifact-badge{margin-left:0}.publication-row .artifact-links .artifact-badge,.publication-row .mobile-artifact-links .artifact-badge{margin:0}.abstract{grid-column:1/-1;font-size:.85rem;color:var(--quiet)}.abstract summary{color:var(--green)}.abstract>div{margin:.6rem 0}.publication-row>.abstract{margin:0;font-size:.8rem;line-height:1.4}.talk-row{display:grid;grid-template-columns:68px minmax(0,1fr)160px;gap:.8rem;align-items:baseline;padding:4px 0;line-height:1.4;font-size:.9rem}.talk-row time,.talk-event,.talk-duration{color:var(--quiet);font-size:.8rem}.talk-row time{white-space:nowrap}.talk-title{color:var(--ink);font-weight:600}.talk-event{text-align:right}.mobile-event{display:none}.software-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.7rem}.project-row{margin:.8rem 0}.project-row h3{font-size:1rem;margin:0 0 .3rem}.project-row p,.section-intro{font-size:.9rem;color:var(--quiet)}.disclosure{font-size:.9rem;margin:0}.disclosure>summary{padding:.6rem 0;color:var(--ink);font-weight:500}.disclosure>summary::marker{color:var(--green)}.disclosure>div{padding:0 0 .5rem 1.3rem}.section-teaching .disclosure{border:0}.section-teaching .disclosure>div{border:0}.subheading{font-size:.9rem;color:var(--quiet);font-weight:500;margin:1.4rem 0 .6rem}.year-group{display:grid;grid-template-columns:94px minmax(0,1fr);gap:1rem;align-items:start;margin:.6rem 0}.year-period{justify-self:start;width:fit-content;max-width:100%;padding:3px 0;font-size:.8rem;color:var(--quiet);text-decoration:none;border-bottom:1px dotted var(--line);cursor:help;white-space:nowrap;align-self:start}.student-entry{font-size:.9rem;line-height:1.45;padding:3px 0}.student-entry+.student-entry{margin-top:3px}.quiet{color:var(--quiet);font-size:.85rem}.quiet a{color:inherit}.contact-grid{display:grid;grid-template-columns:minmax(0,.8fr)minmax(0,1.2fr);gap:2rem;font-size:.9rem}address{font-style:normal;margin-bottom:1rem}.location-map{display:block;width:100%;height:260px;border:0;margin-bottom:.35rem}.page-heading{padding:2rem 0 1rem}.year-nav{display:flex;flex-wrap:wrap;gap:.5rem 1rem;font-size:.9rem}.archive-year{scroll-margin-top:1rem}.article-container,.universal-wrapper{max-width:780px;margin:0 auto;text-align:left}.article-container .article-container{width:100%}.article-style{overflow-wrap:anywhere}.article-style img,.featured-image{height:auto;max-width:100%}.article-style iframe{border:0}.pub-row-heading{font-weight:500}.row{display:flex;flex-wrap:wrap;gap:.5rem}.row>[class*=col-]{flex:1;min-width:0}.pub .row .col-md-1{display:none}.pub .row .col-md-3{flex:0 0 22%}.pub .row .col-md-9{flex:1}.space-below{margin-bottom:1rem}.d-none,.sr-only{display:none!important}.article-widget{margin-top:2rem}.media{display:flex;gap:1rem;margin:1rem 0}.media img{max-width:100px}.media-body{flex:1;min-width:0}.btn-links{display:flex;gap:.6rem;flex-wrap:wrap;font-size:.85rem}.article-metadata{color:var(--quiet);font-size:.85rem}.section-posts .item-list{font-size:.9rem}@media(max-width:680px){html:has(.nav-menu[open]){scroll-padding-top:16rem}.site-container{padding:0 22px}.site-nav{align-items:flex-start}.desktop-menu{display:none}.nav-menu{display:block;flex:1}.nav-menu>summary{display:block;text-align:right;min-height:32px;color:var(--green)}.nav-menu:not([open])>ul{display:none!important}.nav-menu>ul{display:grid!important;grid-template-columns:1fr 1fr;gap:0 1rem;padding:.5rem 0}.nav-menu a{display:flex;align-items:center;min-height:40px}.profile-intro{display:flex;flex-direction:column-reverse;gap:1.3rem}.portrait{align-self:center;max-width:142px}.biography h1,.role{text-align:center}.software-grid,.contact-grid{grid-template-columns:1fr;gap:1rem}.publication-row{grid-template-columns:minmax(0,1fr);gap:.2rem}.publication-row h3{font-size:1rem}.publication-row .publication-aside{display:none}.publication-row .award{font-size:.75rem}.publication-row .resource-links{gap:.3rem .8rem}.publication-row .resource-links>a{min-height:32px;display:inline-flex;align-items:center}.publication-row .mobile-artifact-links{display:inline-flex;align-items:center;gap:.2rem}.publication-row .artifact-badge{min-height:32px;margin:0}.publication-row .artifact-badge img{height:22px}.authors{font-size:.85rem}.talk-row{grid-template-columns:57px minmax(0,1fr);gap:0 .6rem;font-size:.85rem;line-height:1.35}.talk-row time{font-size:.72rem}.talk-copy{min-width:0}.talk-event{display:none}.mobile-event{display:inline;font-weight:400;font-size:.75rem;color:var(--quiet)}.disclosure>summary{min-height:44px}.year-group{grid-template-columns:82px minmax(0,1fr);gap:.65rem}.pub .row{display:block}}@media(pointer:coarse){.profile-links a{min-height:44px}.disclosure-toggle{min-height:44px}}@media print{.site-nav,.profile-links,.location-map{display:none}.site-container{padding:0}.disclosure:not([open])>div{display:block}.abstract:not([open])>div{display:block}}@media print{.disclosure-toggle{display:none}}.publication-facts{display:grid;grid-template-columns:130px minmax(0,1fr);gap:.5rem 1rem;font-size:.9rem;margin:1.5rem 0}.publication-facts dt{font-weight:500}.publication-facts dd{margin:0}@media(max-width:680px){.publication-facts{grid-template-columns:1fr;gap:.25rem}.publication-facts dd{margin-bottom:.7rem}}.mobile-venue{display:none}.archive-controls{display:flex;align-items:end;flex-wrap:wrap;gap:.7rem 1rem;margin:1rem 0}.archive-controls label{display:grid;gap:.25rem;font-size:.8rem;color:var(--quiet)}.archive-controls input[type=search],.archive-controls select{max-width:100%;min-height:38px;border:1px solid var(--line);border-radius:3px;padding:.4rem .6rem;background:var(--paper);color:var(--ink)}.archive-controls .search-control{flex:1 1 240px}.archive-controls .featured-control{display:flex;align-items:center;gap:.5rem;font-size:.9rem;min-height:38px}.archive-controls input[type=checkbox]{accent-color:var(--green);width:1rem;height:1rem}.archive-controls button{min-height:38px;padding:.4rem .7rem;border:1px solid var(--line);border-radius:3px;background:var(--paper);color:var(--green);cursor:pointer}.archive-status{font-size:.8rem;color:var(--quiet);margin:.7rem 0}[hidden]{display:none!important}@media(min-width:1280px){html{font-size:17px}body{font-size:17px}.site-container{max-width:1160px}}@media(min-width:1800px){html{font-size:18px}body{font-size:18px}.site-container{max-width:1220px}}@media(max-width:680px){.mobile-venue{display:inline;font:inherit;color:var(--quiet)}.publication-row h3 .mobile-venue a{color:inherit}.artifact-badge img{width:auto;height:34px}.archive-controls{align-items:stretch}.archive-controls .search-control{flex-basis:100%}}.profile-link-placeholder{color:var(--quiet)}.site-updated{padding:1rem 0 1.5rem;color:var(--quiet);font-size:.75rem;text-align:right}.student-period-row{margin:.4rem 0}@media(max-width:680px){.portrait .portrait-photo{width:142px;border-radius:12px}.site-updated{text-align:center}}