:root{--color-bg:#fdfbf8;--color-surface:#f5f0eb;--color-text:#2d2926;--color-text-muted:#6b6560;--color-accent:#1a5296;--color-accent-hover:#0f3a70;--color-border:#e2ddd5;--color-highlight:#f0ebe3;--nav-height:3.4rem}html[data-theme=dark]{--color-bg:#2a2727;--color-surface:#383434;--color-text:#ece9e5;--color-text-muted:#b5aeaa;--color-accent:#b7d5ee;--color-accent-hover:#dcecfa;--color-border:#4a4444;--color-highlight:#383434}*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,sans-serif;font-size:1rem;line-height:1.6}img{max-width:100%;height:auto}h1,h2,h3{line-height:1.25}h1{font-size:2rem;font-weight:700;margin:0 0 1.25rem}h2{font-size:1.4rem;font-weight:600;margin:2.5rem 0 .9rem;padding-bottom:.35rem;border-bottom:1px solid var(--color-border)}[id]{scroll-margin-top:calc(var(--nav-height) + 1rem)}p{margin:0 0 1.1rem}a{color:var(--color-accent);text-decoration:none}a:hover{color:var(--color-accent-hover);text-decoration:underline}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.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:absolute;top:-3rem;left:.75rem;z-index:100;padding:.5rem .9rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text)}.skip-link:focus{top:.6rem}.site-nav{position:sticky;top:0;z-index:50;background:var(--color-bg);border-bottom:1px solid var(--color-border)}.nav-inner{max-width:1080px;margin:0 auto;padding:.85rem 1.25rem;display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.brand{font-family:iowan old style,palatino linotype,Palatino,Georgia,times new roman,serif;font-weight:700;font-size:1.18rem;letter-spacing:.01em;color:var(--color-text);margin-right:auto;order:0}.brand:hover{color:var(--color-accent-hover);text-decoration:none}.nav-links{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:1.4rem;order:1}.nav-links a{font-family:iowan old style,palatino linotype,Palatino,Georgia,times new roman,serif;color:var(--color-text);font-weight:500;font-size:1.02rem;letter-spacing:.01em}.nav-links a:hover,.nav-links a[aria-current=page]{color:var(--color-accent-hover)}.nav-links a[aria-current=page]{text-decoration:underline;text-underline-offset:.3em}.theme-toggle{order:2;display:inline-flex;align-items:center;margin-left:.35rem;padding:.35rem;background:0 0;border:0;color:var(--color-text);cursor:pointer}.theme-toggle:hover{color:var(--color-accent-hover)}.icon-moon{display:none}html[data-theme=dark] .icon-sun{display:none}html[data-theme=dark] .icon-moon{display:block}.nav-toggle{display:none;order:3;padding:.35rem;background:0 0;border:0;color:var(--color-text);cursor:pointer}.layout{max-width:1080px;margin:0 auto;padding:2.75rem 1.25rem 3.5rem;display:grid;grid-template-columns:230px minmax(0,1fr);gap:3.25rem;align-items:start}main{max-width:720px}.sidebar{position:sticky;top:calc(var(--nav-height) + 1.75rem);text-align:center}.profile-photo{width:170px;height:170px;border-radius:50%;object-fit:cover;border:3px solid var(--color-bg);box-shadow:0 1px 4px rgba(0,0,0,.25)}.author-name{font-size:1.2rem;font-weight:600;margin:.9rem 0 .15rem}.author-byline{color:var(--color-text-muted);font-size:.92rem;margin:0 0 1.1rem}.author-links{list-style:none;margin:0 auto;padding:0;width:max-content;max-width:100%;text-align:left;display:flex;flex-direction:column;gap:.5rem;font-size:.92rem}.author-links li{display:flex;align-items:center}.author-links a,.author-links .author-meta,.author-links li>span{display:inline-flex;align-items:center;gap:.5rem}.author-links svg{width:16px;height:16px;flex:none;color:var(--color-text-muted)}.author-meta{color:var(--color-text-muted)}.page-title{margin-top:0}.home p:last-child{margin-bottom:0}.pub-group h2:first-child{margin-top:0}.pub-item{margin:1.25rem 0 1.5rem}.pub-cite{margin:0 0 .3rem}.pub-keywords{margin:.1rem 0 .4rem;font-size:.92rem;color:var(--color-text-muted)}.pub-keywords strong{color:var(--color-text);font-weight:600}.pub-abstract{margin:.35rem 0 .7rem;font-size:.95rem}.pub-abstract summary{cursor:pointer;font-weight:600;list-style:none;width:max-content}.pub-abstract summary::-webkit-details-marker{display:none}.pub-abstract summary::before{content:"\25B8";display:inline-block;margin-right:.4rem;transition:transform .15s ease}.pub-abstract[open] summary::before{transform:rotate(90deg)}.pub-abstract p{margin:.5rem 0 0 1.15rem}.badge{display:inline-block;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:3px;padding:.08rem .45rem;margin-left:.4rem;vertical-align:1px;white-space:nowrap}.teaching-section{margin-bottom:2rem}.teaching-section h2{margin-bottom:.6rem}.teaching-list{list-style:none;margin:0;padding:0}.teaching-list li{position:relative;padding-left:1.15rem;margin-bottom:.45rem}.teaching-list li::before{content:"\2022";position:absolute;left:0}.course-row{margin-bottom:.45rem}.note-tag{font-size:.8em;font-style:italic;color:var(--color-text-muted);margin-left:.15em}.cv-download{margin:.25rem 0 1.1rem;font-weight:500}.cv-embed{width:100%;height:82vh;min-height:600px;border:1px solid var(--color-border);border-radius:4px}.site-footer{border-top:1px solid var(--color-border)}.footer-inner{max-width:1080px;margin:0 auto;padding:1.1rem 1.25rem 1.4rem;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1.5rem;font-size:.85rem;color:var(--color-text-muted)}.footer-inner p{margin:0}.credit{margin-left:auto;text-align:right}.footer-inner a{color:var(--color-text-muted);text-decoration:underline}.footer-inner a:hover{color:var(--color-accent-hover)}@media(max-width:760px){.nav-toggle{display:block}.nav-links{display:none;order:4;flex-basis:100%;flex-direction:column;align-items:flex-start;gap:0;padding:.25rem 0 .5rem}.nav-links li{width:100%}.nav-links a{display:block;padding:.55rem 0}.site-nav.open .nav-links{display:flex}.layout{grid-template-columns:1fr;gap:2.25rem;padding-top:2rem}.sidebar{position:static}.profile-photo{width:150px;height:150px}main{max-width:none}h1{font-size:1.7rem}.cv-embed{height:70vh;min-height:420px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}