:root{color-scheme:dark;--ink:#eee6d7;--paper:#e8e1d4;font-family:Georgia,'Times New Roman',serif;background:#11100e;color:var(--ink)}
*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:5px}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid #d9c9a6;outline-offset:6px}[hidden]{display:none!important}
.skip-link{position:fixed;top:-100px;left:20px;padding:12px;background:#111;z-index:10}.skip-link:focus{top:20px}
.room{position:relative;height:100vh;height:100svh;min-height:540px;overflow:hidden;overflow:clip;isolation:isolate}.stage{position:absolute;width:100%;aspect-ratio:1672/941;top:50%;transform:translateY(-50%)}.room-image{display:block;width:100%;height:100%;object-fit:contain}.scene-effects{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.masthead{position:absolute;top:0;left:0;right:0;padding:clamp(24px,4vw,64px) clamp(24px,6.7vw,112px);display:flex;justify-content:space-between;align-items:baseline;gap:30px;background:linear-gradient(#11100e66,transparent);pointer-events:none}.masthead a,.masthead nav{pointer-events:auto}.identity{display:inline-grid;grid-template-columns:max-content}.wordmark{font-family:Baskerville,"Baskerville Old Face","Times New Roman",serif;color:rgba(255,255,255,.86);font-size:clamp(30px,3.5vw,58px);letter-spacing:-.035em;font-weight:normal}.wordmark:hover{text-decoration:none}.identity p{margin:10px 0 0;font-size:clamp(13px,1.3vw,22px);color:rgba(255,255,255,.74);width:0;min-width:100%;display:flex;justify-content:space-between;align-items:baseline;gap:.4em;white-space:nowrap}.masthead nav{display:flex;gap:clamp(18px,2.6vw,44px);font-size:16px;white-space:nowrap}
.hotspot{position:absolute;display:flex;align-items:flex-end;justify-content:center;min-width:44px;min-height:44px;border-radius:50%;font-size:clamp(19px,2.1vw,34px);text-shadow:0 1px 7px #000,0 1px 3px #000}.hotspot span{opacity:0;transform:translateY(16px);transition:opacity .25s,transform .25s}.hotspot:hover{text-decoration:none}.hotspot:hover span,.hotspot:focus-visible span{opacity:1;transform:translateY(16px)}.research{left:75.3%;top:15%;width:10%;height:13%}.paths{left:9.7%;top:52%;width:14%;height:17%}.cv{left:35.8%;top:64.5%;width:30%;height:16%}.contact{left:72%;top:72%;width:25%;height:13.5%}
.room-footer{position:absolute;bottom:0;left:0;right:0;padding:22px clamp(24px,4vw,64px);display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:13px;color:#c7bdab;background:linear-gradient(transparent,#11100eb3)}.motion-controls{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.motion-controls button{border:0;border-bottom:1px solid #c7bdab66;padding:4px 0;background:transparent;font-size:12px}#preview-status{font-size:12px;font-style:italic}.no-script{position:absolute;bottom:80px;padding:20px;background:#111}
dialog{color-scheme:light;width:min(850px,calc(100vw - 40px));max-height:calc(100vh - 48px);max-height:calc(100svh - 48px);padding:0;border:1px solid #9c9079;background:var(--paper);color:#2c2924;box-shadow:0 30px 120px #0009}dialog::backdrop{background:#080807b8;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.page-toolbar{position:sticky;top:0;display:flex;justify-content:space-between;align-items:center;padding:18px 28px;background:var(--paper);border-bottom:1px solid #2c292422;font-size:13px;z-index:1}.page-toolbar button{background:none;border:0;font-size:30px;line-height:1;padding:0 6px}#page-content{padding:28px clamp(24px,5vw,64px) 54px;font-size:17px;line-height:1.65}#page-content a{text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere}h1{font-size:clamp(36px,5vw,57px);font-weight:normal;letter-spacing:-.035em;line-height:1.1;margin:8px 0 28px}h2{font-size:21px;font-weight:normal}.eyebrow{text-transform:uppercase;letter-spacing:.15em;font-size:11px;color:#736752}.lead{font-size:23px;line-height:1.5}.topics{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin-top:32px;border-top:1px solid #2c292433}.download{display:flex;justify-content:space-between;padding:18px 24px;margin-top:30px;background:#292721;color:#eee6d7;text-decoration:none!important}.download span{font-size:13px}.external-links{display:flex;gap:16px 30px;flex-wrap:wrap}
@media(min-aspect-ratio:2/1){.stage{width:auto;height:100%;left:50%;transform:translate(-50%,-50%)}}
@media(max-width:900px){.masthead{display:block;padding:30px}.masthead nav{margin-top:25px}.identity{display:inline-grid;grid-template-columns:max-content}.wordmark{font-family:Baskerville,"Baskerville Old Face","Times New Roman",serif;color:rgba(255,255,255,.86);font-size:42px}}
@media(max-width:580px){.room{min-height:640px}.masthead{padding:32px 24px}.identity{display:inline-grid;grid-template-columns:max-content}.wordmark{font-family:Baskerville,"Baskerville Old Face","Times New Roman",serif;color:rgba(255,255,255,.86);font-size:36px}.identity p{font-size:13px}.masthead nav{font-size:14px;gap:23px}.stage{top:52%}.room-footer{align-items:flex-start;flex-direction:column;gap:16px}.motion-controls{gap:16px}.hotspot span{transform:translateY(19px)}dialog{width:calc(100vw - 24px)}.page-toolbar{padding:15px 20px}.topics{grid-template-columns:1fr;gap:0}.lead{font-size:20px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Hover follows the object silhouettes; labels also appear for keyboard focus. */
.object-glows>*{opacity:0;transition:opacity .3s}
.stage:has(.research:hover,.research:focus-visible) .glow-research,
.stage:has(.paths:hover,.paths:focus-visible) .glow-paths,
.stage:has(.cv:hover,.cv:focus-visible) .glow-cv,
.stage:has(.contact:hover,.contact:focus-visible) .glow-contact{opacity:.75}
.hotspot span{pointer-events:none;white-space:nowrap}

.explore-links{display:grid;gap:0}.explore-links a{padding:16px 0;border-bottom:1px solid #2c292433;display:flex;justify-content:space-between;gap:20px}.explore-links span{font-size:14px;color:#736752}

#preview-effect{font:12px Georgia,serif;color:#c7bdab;background:#191713;border:1px solid #c7bdab44;padding:4px 6px;max-width:105px}
.hotspot:focus-visible{outline:none}.hotspot:focus-visible span{text-decoration:underline;text-underline-offset:6px}

.cv-highlights{margin:0 0 28px}.cv-highlights>div{display:grid;grid-template-columns:125px 1fr;gap:20px;padding:18px 0;border-bottom:1px solid #2c292422}.cv-highlights dt{font-size:14px;color:#736752;padding-top:2px}.cv-highlights dd{margin:0}.cv-more{margin-top:28px}.cv-more a{font-size:20px}
@media(max-width:580px){.cv-highlights>div{grid-template-columns:1fr;gap:5px}}

/* A separate cutout preserves the room geometry and existing animation alignment. */
.seminars{left:30%;top:23%;width:11.5%;height:25.5%;border-radius:0}
.seminars img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;filter:brightness(calc(.82 - var(--lamp-blackout,0)*.72)) saturate(.8) drop-shadow(5px 7px 5px #0009);transition:filter .3s;pointer-events:none}
.seminars span{position:relative;font-size:clamp(16px,1.65vw,28px);transform:translateY(30px)}
.seminars:hover span,.seminars:focus-visible span{transform:translateY(30px)}
.seminars:hover img,.seminars:focus-visible img{filter:brightness(calc(.96 - var(--lamp-blackout,0)*.82)) saturate(.8) drop-shadow(0 0 5px #e6c99399) drop-shadow(5px 7px 5px #0009)}

#ladybug{filter:brightness(calc(1 - var(--lamp-blackout,0)*.9))}

/* Keep the continuous animation on a small transform/opacity layer. */
.star-effects{position:absolute;left:74.9402%;top:0;width:19.6770%;height:52.7099%;pointer-events:none;overflow:hidden}
.ladybug-effects{position:absolute;left:0;top:0;width:.95694%;height:1.70032%;pointer-events:none;visibility:hidden;will-change:transform}
.ladybug-effects svg{display:block;width:100%;height:100%;overflow:visible}
.stage[data-bug-active="true"] .ladybug-effects{visibility:visible}
.black-hole-effects{position:absolute;left:79.4856%;top:22.6355%;width:7.7751%;height:13.8151%;pointer-events:none;transform:translate(-50%,-50%) rotate(-32deg) scaleY(.43);opacity:.27;animation:accretion-breathe 12.566s linear infinite;will-change:opacity}
#accretion-drift{display:block;width:100%;height:100%;animation:accretion-orbit 51.4286s linear infinite;will-change:transform}
@keyframes accretion-orbit{to{transform:rotate(360deg)}}
@keyframes accretion-breathe{0%,50%,100%{opacity:.27}25%{opacity:.335}75%{opacity:.205}}
.stage[data-motion="paused"] .black-hole-effects,.stage[data-motion="paused"] #accretion-drift{animation-play-state:paused}

.room-footer{justify-content:flex-end}.recognition-list{padding-left:1.2em}.recognition-list li{margin:6px 0}

.publication-list{list-style:none;padding:0;margin:0}.publication-list li{padding:11px 0;border-bottom:1px solid #2c29242b}.publication-list h3{font-size:17px;font-weight:normal;line-height:1.35;margin:0 0 5px}.publication-list p{font-size:13px;line-height:1.4;margin:3px 0;color:#635b4d}#publications-status{font-size:15px;color:#736752}a[aria-disabled="true"]{cursor:default}

/* A fixed viewport-sized frame for the cover and every photograph. */
.photo-gallery{color-scheme:dark;box-sizing:border-box;width:min(1140px,calc(100vw - 64px));height:calc(100vh - 48px);height:calc(100svh - 48px);max-width:none;max-height:none;margin:auto;padding:42px 18px 12px;background:#12110f;color:#eee6d7;border:1px solid #51493d;overflow:hidden;box-shadow:0 24px 100px #000b}
.photo-gallery[open]{display:grid;grid-template-rows:minmax(0,1fr) auto;gap:12px}
.photo-gallery::backdrop{background:rgba(0,0,0,.88);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.photo-gallery [hidden]{display:none!important}
.photo-gallery figure{margin:0;min-height:0;min-width:0;display:grid;grid-template-rows:minmax(0,1fr) auto;gap:14px}
.photo-gallery img{display:block;width:100%;height:100%;min-height:0;min-width:0;object-fit:contain}
.photo-gallery figcaption{max-width:700px;margin:0 auto;text-align:center;font-size:17px;line-height:1.5;max-height:25svh;overflow:auto}
.gallery-close{position:absolute;top:5px;right:10px;border:0;background:none;font-size:30px;line-height:1;padding:3px 8px}
.gallery-navigation{display:flex;align-items:center;justify-content:center;gap:28px;margin:0}
.gallery-navigation button{min-width:48px;min-height:42px;background:none;border:1px solid #82746066;font-size:25px}
.gallery-navigation button:disabled{opacity:.25;cursor:default}
#gallery-error{position:absolute;top:12px;left:20px;right:50px;font-size:14px;text-align:center;margin:0}
.gallery-intro{width:min(560px,100%);max-height:100%;overflow:auto;align-self:center;justify-self:center;padding:24px 28px;box-sizing:border-box}
.gallery-intro p{font-size:17px;line-height:1.7;color:#d3c9b8;margin:0}
@media(max-width:580px){.photo-gallery{width:calc(100vw - 24px);height:calc(100vh - 24px);height:calc(100svh - 24px);padding:40px 10px 10px}.photo-gallery figcaption{font-size:15px}.gallery-intro{padding:16px 15px}.gallery-intro p{font-size:16px}}

.profile-line{display:flex;align-items:baseline;gap:clamp(12px,3vw,26px);flex-wrap:nowrap;font-size:inherit}.profile-line a{white-space:nowrap}@media(max-width:400px){.profile-line{gap:10px}}

/* A quiet paper edition on phones; content comes from the desktop templates. */
.mobile-page{display:none}
.cv-intro{display:grid;grid-template-columns:minmax(0,1fr) 132px;align-items:start;gap:28px;margin-bottom:28px}
.cv-intro p{margin:0}
.cv-portrait{display:block;width:132px;height:auto;border:1px solid #73675240}
@media(max-width:760px), (max-width:950px) and (max-height:500px){
  .room{display:none}
  :root{color-scheme:light;background:var(--paper);color:#2c2924}
  body{background:var(--paper)}
  .mobile-page{display:block;max-width:680px;margin:0 auto;padding:0 clamp(24px,6.5vw,42px);font-size:17px;line-height:1.65;
    background:radial-gradient(ellipse at 5% 0%,#fff8e54d,transparent 65%),repeating-linear-gradient(0deg,#79694b03 0px,#79694b03 1px,transparent 1px,transparent 4px)}
  .mobile-header{padding:45px 0 30px;border-bottom:1px solid #73675255}
  .mobile-site-title{margin:0;font-weight:normal}
  .mobile-wordmark{display:block;font-family:Baskerville,"Baskerville Old Face","Times New Roman",serif;font-size:clamp(36px,10.6vw,57px);letter-spacing:-.045em;line-height:1.12;white-space:nowrap}
  .mobile-wordmark:hover{text-decoration:none}
  .mobile-bio{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:22px 0 20px}
  .mobile-identity{margin:0;font-size:18px;line-height:1.55}
  .mobile-identity span{display:block;font-size:15px;color:#736752}
  .mobile-portrait{display:block;width:92px;height:auto;flex:none;border:1px solid #73675240}
  .mobile-navigation{display:flex;flex-wrap:wrap;gap:0 21px;font-size:14px}
  .mobile-navigation a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none}
  .mobile-navigation a:hover{text-decoration:underline}
  .mobile-section{padding:34px 0 38px;border-bottom:1px solid #73675240;scroll-margin-top:24px}
  .mobile-section>h2{font-family:Baskerville,"Baskerville Old Face","Times New Roman",serif;font-size:36px;letter-spacing:-.025em;line-height:1.15;margin:0 0 22px}
  .mobile-section>h3{font-weight:normal;font-size:21px;line-height:1.3;margin:28px 0 12px}
  .mobile-section p{margin:0 0 18px}
  .mobile-section>:last-child{margin-bottom:0}
  .mobile-section a{text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere}
  .mobile-section .lead{font-size:inherit;line-height:inherit}
  .mobile-section .profile-line{gap:4px 17px;flex-wrap:wrap;font-size:inherit}
  .mobile-section .publication-list h3{font-size:17px;margin:0 0 6px}
  .mobile-section .publication-list p{font-size:13px;margin:3px 0;line-height:1.5}
  .mobile-section .publication-list{margin-bottom:18px}
  .mobile-section .cv-highlights>div{grid-template-columns:1fr;gap:4px;padding:14px 0}
  .mobile-section .cv-highlights dt{font-size:14px}
  .mobile-section .cv-more a{font-size:17px}
  .mobile-section .cv-intro{display:block;margin-bottom:18px}
  .mobile-footer{padding:28px 0 40px;font-size:14px;color:#736752}
  .mobile-page a:focus-visible,.skip-link:focus-visible{outline-color:#736752;outline-offset:3px}
  .skip-link{background:#2c2924;color:var(--paper)}
  .photo-gallery{overscroll-behavior:contain}
  .gallery-close{min-width:44px;min-height:44px;top:0;right:0}
}

.seminars picture{position:absolute;inset:0;pointer-events:none}
