
/* Shared design tokens. No external fonts or JavaScript are required by the hosted site. */
:root{color-scheme:light;--bg:#fff;--ink:#192b43;--body:#3c4c5f;--muted:#5b697b;--accent:#245ba8;--accent-dark:#173f7d;--line:#dce3ed;--soft:#f2f6fb;--focus:#a94715;--serif:Georgia,"Times New Roman",serif;--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}
*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;color:var(--body);background:var(--bg);font:1rem/1.7 var(--sans);-webkit-font-smoothing:antialiased}h1,h2,h3,h4,p,ul,figure,dl,dd{margin:0}h1,h2,h3,h4{color:var(--ink);line-height:1.3;font-weight:500}h1,h2{font-family:var(--serif)}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.23em}a:hover{color:var(--accent-dark);text-decoration-thickness:2px}a,summary{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--focus);outline-offset:5px;border-radius:2px}::selection{background:#dbe8fa;color:var(--ink)}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.container{width:min(1080px,calc(100% - 5rem));margin-inline:auto}.skip{position:fixed;top:1rem;left:1rem;transform:translateY(-180%);background:var(--ink);color:#fff;padding:.7rem 1rem;z-index:100}.skip:focus{transform:none;color:#fff}.site-header{border-bottom:1px solid var(--line)}.header-inner{min-height:88px;display:flex;justify-content:space-between;align-items:center;gap:2rem}.wordmark{font-family:var(--serif);font-size:1.28rem;letter-spacing:-.02em;text-decoration:none;color:var(--ink);min-height:44px;display:inline-flex;align-items:center;white-space:nowrap}.wordmark:hover{color:var(--accent)}.primary-nav ul{display:flex;gap:1.65rem;align-items:center;list-style:none;padding:0}.primary-nav a{font-size:.88rem;color:var(--body);text-decoration:none;min-height:44px;display:inline-flex;align-items:center;border-bottom:2px solid transparent;padding:.6rem 0}.primary-nav a:hover{text-decoration:underline;color:var(--accent)}.primary-nav a[aria-current="page"]{color:var(--accent);border-bottom-color:var(--accent)}.primary-nav .nav-cv{gap:.4rem;color:var(--accent);font-weight:600}.main{min-height:calc(100vh - 230px)}.home-hero{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:5rem;align-items:center;padding:4.5rem 0 4.25rem}.eyebrow{font-size:.79rem;font-weight:600;letter-spacing:.095em;text-transform:uppercase;color:var(--accent);margin-bottom:1rem}.home-hero h1{font-size:clamp(2.8rem,4.7vw,3.7rem);font-weight:400;line-height:1.14;letter-spacing:-.035em;text-wrap:balance}.affiliation{margin-top:1rem;line-height:1.8;font-size:.98rem;color:var(--muted)}.affiliation a{color:var(--body);text-decoration:none}.affiliation a:hover{text-decoration:underline}.hero-bio{font-size:1.17rem;line-height:1.75;margin-top:1.55rem;max-width:580px}.hero-method{font-size:1rem;line-height:1.8;margin-top:1rem;max-width:580px}.hero-actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:1.65rem}.button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;gap:1rem;padding:.65rem 1.1rem;background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:4px;font-size:.88rem;font-weight:500;text-decoration:none}.button:hover{color:#fff;background:var(--accent-dark);border-color:var(--accent-dark);text-decoration:none}.button.secondary{background:#fff;border-color:#a8b8ce;color:var(--accent)}.button.secondary:hover{background:var(--soft);border-color:var(--accent);color:var(--accent)}.portrait{display:block;width:100%;height:auto;aspect-ratio:756/900;object-fit:cover;max-width:308px;margin-left:auto;border-radius:6px}.portrait-caption{max-width:308px;margin:.8rem 0 0 auto;font-size:.76rem;color:var(--muted);line-height:1.65}.home-topics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2.8rem;padding:1.8rem 0 2.1rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.topic{border-top:2px solid #8aa7d0;padding-top:.9rem}.topic h2{font-family:var(--sans);font-size:.94rem;font-weight:600}.topic p{font-size:.88rem;line-height:1.75;margin-top:.5rem;color:var(--muted)}.home-feature{display:grid;grid-template-columns:170px minmax(0,1fr);gap:2.5rem;padding:2.4rem 0 2.6rem}.small-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);padding-top:.25rem}.home-feature h2{font-size:1.2rem;line-height:1.55;max-width:740px}.home-feature h2 a{color:var(--ink);text-decoration:none}.home-feature h2 a:hover{color:var(--accent);text-decoration:underline}.home-feature p{font-size:.9rem;color:var(--muted);margin-top:.7rem}.inline-link{display:inline-flex;align-items:center;gap:.7rem;min-height:44px;font-size:.86rem;margin-top:.3rem}.page-heading{padding:3.8rem 0 2.4rem;border-bottom:1px solid var(--line)}.page-heading h1{font-size:3rem;letter-spacing:-.03em;line-height:1.15;font-weight:400}.page-heading p{font-size:1.06rem;line-height:1.8;max-width:730px;margin-top:1.2rem}.page-heading .eyebrow{margin:0 0 1rem;font-size:.76rem}.research-layout{display:grid;grid-template-columns:190px minmax(0,1fr);gap:3.7rem;padding:2.6rem 0 3.5rem}.research-side{align-self:start;position:sticky;top:2rem}.research-side nav{border-top:1px solid var(--line)}.research-side a{min-height:46px;display:flex;align-items:center;border-bottom:1px solid var(--line);font-size:.85rem;text-decoration:none;color:var(--body)}.research-side a:hover{color:var(--accent);text-decoration:underline}.research-side p{font-size:.8rem;color:var(--muted);line-height:1.8;margin-top:1.5rem}.paper-group{scroll-margin-top:2rem}.paper-group+.paper-group{margin-top:2.6rem}.paper-group h2{font-size:1.65rem;padding-bottom:1.1rem;border-bottom:1px solid var(--line);font-weight:400}.paper{padding:1.6rem 0 1.5rem;border-bottom:1px solid var(--line)}.paper:last-child{border-bottom:0}.paper-heading{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.6rem}.paper-year{font-size:.8rem;color:var(--muted);flex-shrink:0}.paper h3{font-family:var(--serif);font-size:1.28rem;font-weight:600;line-height:1.45;letter-spacing:-.008em}.paper h3 a{color:var(--ink);text-decoration:none}.paper h3 a:hover{color:var(--accent);text-decoration:underline}.paper-authors{font-size:.83rem;color:var(--muted);margin-top:.6rem}.paper-status{font-size:.83rem;color:var(--muted);margin-top:.3rem;font-style:italic}.paper-status.published{font-size:.91rem;color:var(--accent);font-style:normal}.paper-description{font-size:.95rem;line-height:1.8;margin-top:.85rem;max-width:68ch}.paper-links{display:flex;gap:0 1.2rem;flex-wrap:wrap;margin-top:.55rem}.paper-links a{display:inline-flex;align-items:center;min-height:44px;font-size:.83rem}.paper details{margin-top:.15rem}summary{cursor:pointer;width:fit-content;max-width:100%;min-height:44px;padding:.55rem .1rem;color:var(--accent);font-size:.85rem;line-height:1.7}summary:hover{text-decoration:underline;text-underline-offset:.2em}summary::marker{font-size:.78em}.abstract{padding:1.1rem 1.2rem;background:var(--soft);border-left:2px solid #7f9fc9;font-size:.94rem;line-height:1.85;margin:.35rem 0 .7rem;overflow-wrap:anywhere}.teaching-layout{display:grid;grid-template-columns:minmax(0,1fr) 258px;gap:4rem;padding:2.8rem 0 3.4rem}.course{padding:1.6rem 0 1.8rem;border-bottom:1px solid var(--line)}.course:first-child{padding-top:0}.course:last-child{border-bottom:0}.course-code{font-size:.79rem;color:var(--accent);font-weight:600;margin-bottom:.65rem;letter-spacing:.03em}.course h2{font-size:1.5rem;line-height:1.4}.course-description{font-size:.95rem;line-height:1.85;margin-top:.8rem}.course .syllabus{display:inline-flex;gap:.6rem;align-items:center;min-height:44px;font-size:.85rem;margin-top:.6rem}.format{font-size:.65rem;line-height:1.3;padding:.12rem .25rem;border:1px solid #a5b4c9;color:var(--muted);border-radius:2px}.course details{margin-top:.3rem}.course dl{margin:.6rem 0 .5rem;padding:.6rem 0 .3rem 1rem;border-left:2px solid var(--line)}.term+.term{margin-top:1.1rem}.term dt{font-size:.85rem;color:var(--ink);font-weight:600;margin-bottom:.3rem}.term dd{font-size:.86rem;line-height:1.85}.term a{min-height:30px;display:inline-block}.score{color:var(--ink);font-weight:600}.student-aside{align-self:start;background:var(--soft);padding:1.5rem 1.4rem;border-radius:4px;border-top:2px solid #7b9dc8}.student-aside h2{font-family:var(--sans);font-size:1rem;font-weight:600}.student-aside p{font-size:.88rem;line-height:1.85;margin-top:.7rem}.student-aside a{display:inline-flex;align-items:center;min-height:44px;font-size:.84rem}.student-aside .button{margin-top:1rem;font-size:.8rem;gap:.5rem;display:flex}.contact-layout{display:grid;grid-template-columns:1.1fr 1fr;gap:4.2rem;padding:2.8rem 0 3.6rem}.contact-block+.contact-block{margin-top:2.1rem}.contact-block h2{font-family:var(--sans);font-size:.85rem;font-weight:600;color:var(--muted);margin-bottom:.7rem}.contact-block p,.contact-block address{font-size:.97rem;line-height:1.9;font-style:normal}.email-large{font-family:var(--serif);font-size:1.8rem;display:inline-flex;align-items:center;min-height:44px;overflow-wrap:anywhere;max-width:100%}.contact-block .phone{min-height:44px;display:inline-flex;align-items:center;font-size:.94rem}.contact-block .button{margin-top:1rem}.contact-links{display:flex;gap:0 1.2rem;flex-wrap:wrap}.contact-links a{min-height:44px;display:inline-flex;align-items:center;font-size:.9rem}.about-strip{background:var(--soft);border-top:1px solid var(--line);padding:2rem 0}.about-strip-inner{display:flex;justify-content:space-between;align-items:center;gap:2rem}.about-strip p{font-size:.92rem;color:var(--muted)}.about-strip a{min-height:44px;display:inline-flex;align-items:center;gap:.75rem;white-space:nowrap;font-size:.86rem}.site-footer{border-top:1px solid var(--line);padding:1.5rem 0}.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}.footer-name{font-family:var(--serif);font-size:.99rem;color:var(--ink)}.footer-affiliation{font-size:.75rem;color:var(--muted);margin-top:.25rem}.footer-links{display:flex;gap:1.2rem;flex-wrap:wrap}.footer-links a{display:inline-flex;min-height:44px;align-items:center;font-size:.79rem;color:var(--muted)}
@media(max-width:1000px){.container{width:calc(100% - 4rem)}.home-hero{gap:3rem;grid-template-columns:1.5fr 1fr}.home-hero h1{font-size:3rem}.primary-nav ul{gap:1.1rem}.header-inner{gap:1rem}.research-layout{grid-template-columns:160px minmax(0,1fr);gap:2.5rem}.teaching-layout{grid-template-columns:minmax(0,1fr) 235px;gap:2.5rem}.contact-layout{gap:2.8rem}.home-topics{gap:1.8rem}}
@media(max-width:760px){.container{width:calc(100% - 2.6rem)}.header-inner{min-height:0;display:block;padding:1.1rem 0 .7rem}.wordmark{font-size:1.25rem;min-height:36px}.primary-nav ul{gap:1.45rem;flex-wrap:wrap;margin-top:.2rem}.primary-nav a{font-size:.86rem;padding:.4rem 0;min-height:44px}.home-hero{padding:2.8rem 0 2.7rem;gap:2rem;grid-template-columns:1.5fr 1fr}.home-hero h1{font-size:2.6rem}.eyebrow{font-size:.72rem;letter-spacing:.07em}.hero-bio{font-size:1.05rem;line-height:1.8}.hero-method{font-size:.94rem}.affiliation{font-size:.88rem}.hero-actions{gap:.7rem}.button{font-size:.82rem;padding:.6rem .85rem;gap:.7rem}.portrait-caption{font-size:.71rem}.home-topics{gap:1.4rem}.topic h2{font-size:.85rem}.topic p{font-size:.82rem}.home-feature{grid-template-columns:1fr;gap:.75rem;padding:2rem 0}.home-feature h2{font-size:1.14rem}.page-heading{padding:2.5rem 0 1.9rem}.page-heading h1{font-size:2.5rem}.page-heading p{font-size:1rem}.research-layout{grid-template-columns:1fr;gap:1.8rem;padding-top:1.7rem}.research-side{position:static}.research-side nav{display:flex;gap:.5rem 1.6rem;flex-wrap:wrap;border:0}.research-side a{border:0;min-height:44px}.research-side p{display:none}.paper-group h2{font-size:1.55rem}.paper h3{font-size:1.24rem}.teaching-layout{grid-template-columns:1fr;gap:2rem;padding-top:2rem}.student-aside{max-width:100%;padding:1.4rem 1.5rem}.student-aside .button{width:fit-content}.contact-layout{gap:2rem;padding-top:2rem}.email-large{font-size:1.5rem}.about-strip-inner{align-items:start}.footer-inner{gap:.75rem}.footer-links{gap:1rem}}
@media(max-width:540px){.container{width:calc(100% - 2.4rem)}.primary-nav ul{gap:0 1.2rem}.primary-nav a{font-size:.82rem}.home-hero{display:flex;flex-direction:column;align-items:stretch;gap:2rem;padding-top:2.1rem}.home-hero h1{font-size:2.9rem;max-width:440px}.home-hero .eyebrow{font-size:.73rem}.hero-bio{font-size:1.12rem}.hero-method{font-size:.97rem}.hero-portrait{display:flex;gap:1.2rem;align-items:center}.portrait{width:142px;max-width:45%;margin:0;border-radius:4px}.portrait-caption{margin:0;max-width:185px;font-size:.8rem;line-height:1.85}.home-topics{grid-template-columns:1fr;gap:1.25rem;padding:1.7rem 0}.topic{padding-top:.75rem}.topic h2{font-size:.94rem}.topic p{font-size:.88rem;max-width:48ch}.home-feature h2{font-size:1.12rem}.page-heading h1{font-size:2.4rem}.research-side nav{gap:0 1.1rem}.research-side a{font-size:.79rem}.paper-heading{display:block}.paper-year{display:block;margin-top:.45rem}.paper h3{font-size:1.18rem}.paper-links{gap:0 1.1rem}.paper-description{font-size:.92rem}.abstract{font-size:.9rem;padding:.9rem 1rem}.course h2{font-size:1.32rem}.course-description{font-size:.92rem}.contact-layout{grid-template-columns:1fr;gap:2rem}.contact-block+.contact-block{margin-top:1.6rem}.email-large{font-size:1.65rem}.about-strip-inner{display:block}.about-strip a{margin-top:.5rem}.footer-inner{display:block}.footer-links{margin-top:.65rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media(forced-colors:active){a{color:LinkText}.button,.abstract,.student-aside{border:1px solid CanvasText}:focus-visible{outline-color:Highlight}.primary-nav a[aria-current="page"]{border-bottom-color:LinkText}}
@media print{html{scroll-padding-top:0}body{font-size:10pt;background:#fff;color:#000}.container{width:100%}.site-header,.site-footer,.skip,.hero-actions,.research-side,.about-strip{display:none}.main{min-height:0}.home-hero{padding:0 0 1rem;grid-template-columns:1fr 160px;gap:2rem}.home-hero h1{font-size:28pt}.hero-bio,.hero-method,.page-heading p{font-size:11pt}.page-heading{padding:0 0 1rem}.page-heading h1{font-size:26pt}.research-layout,.teaching-layout{display:block;padding-top:1rem}.paper,.course{break-inside:avoid}.paper h3{font-size:13pt}.paper,.course{padding:1rem 0}.paper-links a{min-height:0;font-size:9pt}.paper details,.course details,.student-aside{display:none}.contact-layout{padding:1rem 0}.contact-block a{color:#000}a{color:#000}.paper-description{font-size:10pt}.paper-group+.paper-group{margin-top:1.5rem}}
