:root{--blue: #0848ba;--blue-dark: #062969;--ink: #081a3b;--muted: #53627c;--line: #bfd0ec;--paper: #fbfdff;--white: #ffffff;--serif: Georgia, "Times New Roman", serif;--sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.55}img{max-width:100%}a{color:inherit;text-decoration:none}a:focus-visible{outline:3px solid #77a5ff;outline-offset:4px}.page-shell{width:min(1160px,calc(100% - 40px));margin:0 auto;padding-top:58px}.site-header{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:flex-end;width:auto;min-height:58px;padding-right:max(24px,calc((100vw - 1160px)/2 + 24px));padding-left:max(24px,calc((100vw - 1160px)/2 + 24px));border:0;border-bottom:1px solid var(--blue);background:#fbfdfff2;backdrop-filter:blur(16px)}.site-header nav{display:flex;align-items:stretch;gap:clamp(24px,4vw,50px)}.site-header nav a{position:relative;display:grid;place-items:center;min-height:56px;color:var(--blue-dark);font-weight:600}.site-header nav a:hover,.site-header nav a.active{color:var(--blue)}main{width:100%;margin:0 auto}h1,h2{margin:0;color:var(--blue-dark);font-family:var(--serif)}h1{font-size:clamp(36px,4.4vw,52px);line-height:1;letter-spacing:-.04em}h2{font-size:clamp(24px,2.6vw,29px);line-height:1.1}.hero{position:relative;display:grid;grid-template-columns:190px minmax(0,650px);gap:clamp(28px,5vw,58px);align-items:center;justify-content:center;min-height:310px;padding:34px 28px 26px}.hero h1{font-size:clamp(27px,3vw,34px)}.portrait{display:block;width:190px;height:auto;justify-self:end}.hero-copy{max-width:720px}.intro{max-width:650px;margin:16px 0 0;font-size:14px;line-height:1.6}.contact-line{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:14px;color:var(--blue);font-size:12px;font-weight:600}.contact-line>span{width:1px;height:18px;background:var(--line)}.contact-line a:hover,.experience-title a:hover,.back-link:hover,.paper-links a:hover{text-decoration:underline;text-underline-offset:4px}.email-contact{position:relative;display:inline-flex;width:auto!important;height:auto!important;background:none!important}.email-tip{position:absolute;bottom:calc(100% + 10px);left:0;z-index:30;width:min(390px,calc(100vw - 40px));padding:9px 11px;border-radius:3px;color:#fff;background:var(--blue-dark);font-size:11px;font-weight:500;line-height:1.45;opacity:0;pointer-events:none;transform:translateY(4px);transition:opacity .16s ease,transform .16s ease}.email-tip:after{position:absolute;top:100%;left:18px;content:"";border:5px solid transparent;border-top-color:var(--blue-dark)}.email-contact:hover .email-tip,.email-contact:focus-within .email-tip{opacity:1;transform:translateY(0)}.icon-links{display:flex;align-items:center;gap:9px;padding-left:13px;border-left:1px solid var(--line)}.icon-link{display:grid;place-items:center;width:20px;height:20px;color:var(--blue)}.icon-link svg{width:17px;height:17px;fill:currentColor}.icon-link:hover{color:var(--blue-dark)}.contact-line .icon-link:hover{text-decoration:none}.education{display:grid;gap:5px;margin-top:17px;padding-top:14px;border-top:1px solid var(--line);font-size:12px}.education p{display:flex;gap:12px;margin:0}.education strong{min-width:190px;color:var(--blue-dark)}.education span{color:var(--muted)}.panel{position:relative;margin-top:14px;padding:22px 24px 16px;overflow:hidden;border:1px solid var(--line);background:#ffffffb8}.hero,.panel{scroll-margin-top:76px}.plain-heading{margin-bottom:17px}.plain-heading:after{display:block;width:42px;height:3px;margin-top:9px;content:"";background:var(--blue)}.section-title-group .plain-heading{margin-bottom:0}.section-subtitle{margin:8px 0 17px;color:var(--muted);font-size:12px}.section-subtitle a{color:var(--blue)}.section-subtitle a:hover{text-decoration:underline;text-underline-offset:3px}.publication-card{position:relative;display:grid;grid-template-columns:minmax(230px,310px) 1fr;gap:22px;align-items:center;padding:16px;border:1px solid var(--line);background:var(--white);overflow:hidden;transition:border-color .2s ease,transform .2s ease}.publication-card:hover{border-color:var(--blue);transform:translateY(-2px)}.publication-card:before{position:absolute;right:-22px;bottom:-25px;width:150px;height:120px;content:"";pointer-events:none;background-image:radial-gradient(circle,rgba(8,72,186,.55) 1px,transparent 1.2px);background-size:8px 8px;opacity:0;mask-image:radial-gradient(circle,#000 20%,transparent 72%);transition:opacity .22s ease}.publication-card:hover:before{opacity:.32}.publication-card>*{position:relative;z-index:1}.publication-title-link:after{position:absolute;inset:0;content:""}.authors a{position:relative;z-index:2}.authors a:hover{color:var(--blue);text-decoration:underline;text-underline-offset:3px}.authors .primary-author{color:var(--ink);font-weight:700}.publication-cover{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover}.venue{margin:0 0 6px;color:var(--blue);font-size:12px;font-weight:750;letter-spacing:.08em;text-transform:uppercase}.publication-card h3,.experience-row h3{margin:0;color:var(--blue-dark);line-height:1.3}.publication-card h3{font-size:clamp(17px,1.8vw,21px)}.authors{margin:8px 0 0;color:var(--muted);font-size:12px}.summary{margin:8px 0 0;color:var(--muted);font-size:13px}.experience-row{display:grid;grid-template-columns:95px minmax(300px,350px) minmax(0,1fr);gap:22px;align-items:start;padding:18px 4px;border-top:1px solid #d8e3f2}.experience-row:first-child{border-top:0}.experience-date{margin:0;color:var(--muted);font-size:13px;line-height:1.45}.experience-title{align-self:start}.experience-title h3{font-size:14px;line-height:1.45}.experience-title a{color:var(--blue);font-size:12px}.experience-copy{margin:0;color:var(--muted);font-size:13px;line-height:1.45}footer{padding:24px 0;color:var(--muted);font-size:11px}footer p{margin:0}.detail-main,.gallery-main{padding:46px 0 36px}.back-link{display:inline-block;margin-bottom:38px;color:var(--blue);font-size:13px;font-weight:650}.paper-detail>header{max-width:940px}.paper-detail h1{font-size:clamp(48px,7vw,84px)}.paper-subtitle{max-width:820px;margin:15px 0 11px;color:var(--blue-dark);font:500 clamp(19px,2.6vw,30px)/1.25 var(--serif)}.detail-authors{color:var(--muted)}.paper-links{display:flex;gap:22px;margin-top:18px;color:var(--blue);font-size:13px;font-weight:650}.paper-hero-image{display:block;width:100%;margin:40px 0 52px;border:1px solid var(--line)}.paper-abstract{display:grid;grid-template-columns:150px 1fr;gap:32px;margin-bottom:56px;padding:30px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.paper-abstract h2{font-size:28px}.paper-abstract p{margin:0 0 12px;color:var(--muted);font-size:14px}.paper-abstract p:last-child{margin-bottom:0}.paper-figures{display:grid;gap:46px}.paper-figures figure{margin:0}.paper-figures img{display:block;width:100%;border:1px solid var(--line);background:#fff}.paper-figures figcaption{margin-top:9px;color:var(--muted);font-size:12px}.gallery-intro{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:end;margin-bottom:42px}.gallery-intro h1{font-size:clamp(46px,7vw,78px)}.gallery-intro p{margin:0 0 8px;color:var(--muted);font-size:14px}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr));gap:clamp(14px,2vw,22px);align-items:start}.gallery-item{min-width:0;margin:0;scroll-margin-top:72px}.gallery-item.is-expanded{grid-column:1 / -1}.gallery-card{position:relative;display:block;width:100%;padding:0;overflow:hidden;border:1px solid rgba(8,72,186,.16);border-radius:14px;background:#edf3fc;box-shadow:0 6px 20px #06296912;color:inherit;cursor:zoom-out;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}.gallery-item.is-expanded .gallery-card{cursor:zoom-in}.gallery-frame{position:relative;display:block;width:100%;aspect-ratio:var(--crop-ratio);overflow:hidden;background:#dfe8f5;transition:aspect-ratio .48s cubic-bezier(.22,1,.36,1)}.gallery-frame img{position:absolute;top:calc(-100% * var(--crop-y) / var(--crop-h));left:calc(-100% * var(--crop-x) / var(--crop-w));display:block;width:calc(100% / var(--crop-w));height:auto;max-width:none;transition:top .48s cubic-bezier(.22,1,.36,1),left .48s cubic-bezier(.22,1,.36,1),width .48s cubic-bezier(.22,1,.36,1)}.gallery-card:hover{border-color:#0848ba57;box-shadow:0 14px 32px #06296921;transform:translateY(-3px)}.gallery-item.is-expanded .gallery-frame{aspect-ratio:var(--full-ratio)}.gallery-card:hover img,.gallery-card:focus-visible img{top:var(--peek-top);left:var(--peek-left);width:var(--peek-width)}.gallery-item.is-expanded img,.gallery-item.is-expanded .gallery-card:hover img,.gallery-item.is-expanded .gallery-card:focus-visible img{top:0;left:0;width:100%}.gallery-card:focus-visible{outline:3px solid #77a5ff;outline-offset:4px}@media(max-width:850px){.page-shell{width:min(100% - 20px,1160px)}.site-header{padding:0 20px}.site-header nav{gap:20px}.site-header nav a:nth-child(3){display:none}.hero{grid-template-columns:155px minmax(0,590px);gap:26px;padding-inline:12px}.portrait{width:155px}.publication-card{grid-template-columns:230px 1fr;gap:16px}.experience-row{grid-template-columns:82px minmax(250px,310px) 1fr;gap:16px}}@media(max-width:620px){body{font-size:14px}.site-header{min-height:58px}.site-header nav{gap:15px}.site-header nav a{min-height:56px;font-size:12px}.site-header nav a:nth-child(2){display:none}.hero{grid-template-columns:1fr;gap:16px;min-height:0;padding:38px 6px 28px}.portrait{width:130px;justify-self:start}h1{font-size:35px}.hero h1{font-size:25px}.intro{margin-top:12px;font-size:13px}.education p{flex-direction:column;gap:1px}.education strong{min-width:0}.panel{padding:22px 16px 14px}.publication-card{grid-template-columns:1fr;padding:14px}.experience-row{grid-template-columns:1fr;gap:5px;padding:18px 2px}.experience-copy{margin-top:7px}.paper-abstract,.gallery-intro{grid-template-columns:1fr;gap:16px}.paper-hero-image{margin:32px 0 40px}.gallery-grid{grid-template-columns:1fr;gap:14px}.gallery-card{border-radius:11px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition-duration:.01ms!important}}
