/* Adapted from Keunhong Park's academic website design, CC BY-SA 4.0. */
.service .review-venues,.service .recognition-list{margin:15px 0 0;padding-left:20px;color:#404040;line-height:1.55}.service .review-venues li+li,.service .recognition-list li+li{margin-top:7px}
[hidden]{display:none!important}
.publication-image{position:relative;padding:0;cursor:zoom-in;font:inherit;color:#555}
.image-hint{position:absolute;bottom:7px;right:7px;background:rgba(255,255,255,.95);border:1px solid #e4e4df;border-radius:3px;padding:2px 7px;font:400 .65rem/1.5 'Source Sans 3',system-ui,sans-serif}
.lightbox-open{overflow:hidden}
.image-lightbox{width:min(1200px,94vw);max-width:94vw;max-height:92dvh;padding:0;border:1px solid #ddd;border-radius:8px;background:white;box-shadow:0 12px 50px #0003;color:#171717}
.image-lightbox::backdrop{background:rgba(20,20,20,.65)}
.lightbox-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 20px;border-bottom:1px solid #e5e5e5}
.lightbox-toolbar h2{font-size:1.3rem;margin:0}
.lightbox-actions{display:flex;gap:8px}
.lightbox-actions button{border:1px solid #ddd;border-radius:4px;background:white;padding:8px 12px;min-height:40px;color:#404040;font:400 .8rem/1.4 'Source Sans 3',system-ui,sans-serif}
.lightbox-viewport{overflow:auto;max-height:calc(92dvh - 77px);min-height:160px;padding:18px;display:flex;align-items:center;justify-content:center;overscroll-behavior:contain}
.lightbox-viewport img{max-width:100%;max-height:calc(92dvh - 115px);width:auto;height:auto;object-fit:contain}
.lightbox-viewport.is-zoomed{display:block}
.lightbox-viewport.is-zoomed img{max-width:none;max-height:none;margin-inline:auto}
.lightbox-viewport p:empty{display:none}
.cv-header{padding-block:60px 35px;border-bottom:1px solid #e5e5e5}
.cv-header h1{font-size:2.5rem}
.cv-role{font-size:1.12rem;margin-top:8px}
.cv-summary{max-width:750px;margin-top:21px;line-height:1.6}
.cv-links{display:flex;flex-wrap:wrap;gap:4px 22px;margin-top:19px}
.cv-links a,.cv-download{font:400 .84rem/1.5 'Source Sans 3',system-ui,sans-serif;min-height:30px}
.cv-download{display:inline-flex;align-items:center;gap:6px;margin-top:16px;text-decoration:none}
.cv-outline{display:flex;flex-wrap:wrap;gap:8px 21px;padding-block:24px;font:400 .8rem/1.5 'Source Sans 3',system-ui,sans-serif}
.cv-outline a{text-decoration:none}
.cv-section{padding-block:24px 12px;scroll-margin-top:20px}
.cv-section h2{font-size:1.7rem;margin-bottom:23px}
.cv-entry{display:grid;grid-template-columns:minmax(0,1fr) 132px;gap:25px;margin-bottom:25px}
.cv-entry h3{font-size:1.15rem}
.cv-entry p{margin-top:8px;line-height:1.55}
.cv-entry .venue{margin-top:5px}
.cv-date{text-align:right;color:#666;font:400 .8rem/1.5 'Source Sans 3',system-ui,sans-serif;padding-top:5px}
.cv-entry ul{padding-left:20px;margin:12px 0 0;color:#404040;line-height:1.55}
.cv-entry li+li{margin-top:6px}
.cv-paper h3 a{color:#171717;text-decoration:none}
.cv-paper .authors{margin-top:7px}
.skill-row{display:grid;grid-template-columns:190px minmax(0,1fr);gap:24px;margin-bottom:15px;line-height:1.55}
.skill-label{font-weight:500;color:#171717}
.cv-simple-list{padding-left:20px;color:#404040;margin-top:12px}
.cv-simple-list li+li{margin-top:8px}
@media(max-width:540px){.lightbox-toolbar{padding:12px;gap:7px}.lightbox-toolbar h2{font-size:1.1rem}.lightbox-actions button{font-size:.72rem;padding:7px 8px}.lightbox-viewport{padding:10px}.cv-header{padding-top:38px}.cv-header h1{font-size:2.15rem}.cv-entry{grid-template-columns:1fr;gap:5px}.cv-date{grid-row:1;text-align:left;font-size:.76rem;padding:0}.skill-row{grid-template-columns:1fr;gap:5px}.cv-outline{gap:9px 18px}}
@media print{.cv-outline,.cv-download,.image-lightbox{display:none}.cv-header{padding-top:0}.cv-section{padding-block:12px}.cv-entry{break-inside:avoid}.cv-date{color:#333}}
.slides-placeholder{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:26px;gap:22px;background:#fafafa}
.slides-placeholder img{max-height:calc(100% - 70px);object-fit:contain;box-shadow:0 1px 7px #0000000a}
.inline-viewer-button{display:flex;align-items:center;gap:8px;padding:10px 18px;min-height:44px;border:1px solid #d5d5d0;background:#fff;border-radius:5px;color:#404040;font:400 .88rem/1.5 'Source Sans 3',system-ui,sans-serif}
.inline-viewer-button:hover{border-color:#aaa}
:root{--surface:#fff;--muted-surface:#faf9f5;--text:#171717;--body:#404040;--muted:#666;--border:#e5e5e5;--serif:'Crimson Pro',Georgia,serif;--display:'Cormorant Garamond',Georgia,serif;--sans:'Source Sans 3',system-ui,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:32px;font-size:18px;line-height:1.65}body{margin:0;background:var(--surface);color:var(--text);font-family:var(--serif);-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}a{color:var(--muted);text-decoration-color:#d4d4d4;text-decoration-thickness:1px;text-underline-offset:3px;transition:color .15s}a:hover{color:var(--text)}a:focus-visible,button:focus-visible{outline:2px solid #405f80;outline-offset:5px;border-radius:3px}button{font:inherit;cursor:pointer}img{display:block;max-width:100%;height:auto}h1,h2,h3,p{margin:0}h1,h2{font-family:var(--display);font-weight:600;line-height:1.18}h1{font-size:2.15rem;letter-spacing:-.02em}h2{font-size:1.6rem}h3{font-family:var(--serif);font-size:1.14rem;font-weight:600;line-height:1.32}p{color:var(--body)}.container{width:min(100%,960px);margin-inline:auto;padding-inline:32px}.section{padding-block:54px}.section h2{margin-bottom:28px}.icon-definitions{position:absolute;width:0;height:0;overflow:hidden}.icon{width:17px;height:17px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;vertical-align:-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:fixed;z-index:20;left:16px;top:-80px;background:white;padding:10px 20px;border:1px solid var(--border)}.skip-link:focus{top:12px}.site-header{padding:25px 20px 0}.site-header nav{display:flex;justify-content:center;gap:30px;font:400 .85rem/1.5 var(--sans)}.site-header a{text-decoration:none;min-height:30px;display:flex;align-items:center}.site-header a[aria-current]{color:var(--text)}.hero{padding-block:65px 58px;display:grid;grid-template-columns:224px minmax(0,1fr);gap:38px;align-items:start}.portrait{width:224px;height:auto;aspect-ratio:274/400;object-fit:contain;margin-top:6px}.bio p{margin-top:16px;line-height:1.62}.bio em{font-style:normal}.profile-links{display:flex;flex-wrap:wrap;gap:10px 20px;margin-top:23px}.profile-links a,.paper-links a,.text-action{display:inline-flex;align-items:center;gap:6px;font:400 .84rem/1.5 var(--sans);text-decoration:none;min-height:30px}.highlights{position:relative;background:linear-gradient(to bottom,#fff 0%,var(--muted-surface) 17%,var(--muted-surface) 85%,#fff 100%)}.highlight-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.highlight-card{background:white;border-radius:8px;overflow:hidden;border:1px solid #ecebe7}.highlight-copy{padding:20px 22px 21px}.highlight-copy h3 a{text-decoration:none;color:var(--text)}.highlight-copy p{font-size:.94rem;line-height:1.55;margin-top:10px}.eyebrow{font:400 .73rem/1.4 var(--sans);letter-spacing:.02em;color:var(--muted);margin-bottom:6px}.demo-stage,.slides-cover{position:relative;aspect-ratio:16/10;display:block;overflow:hidden;background:#f8f8f6}.demo-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:12px}.demo-video{width:100%;height:100%;object-fit:contain;background:#111}.demo-video[hidden]{display:none}.play-demo,.cover-action{position:absolute;bottom:15px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;border:1px solid #deded8;border-radius:20px;background:rgba(255,255,255,.96);color:var(--text);padding:8px 15px;font:500 .8rem/1.4 var(--sans);white-space:nowrap;box-shadow:0 1px 7px #00000008}.play-demo:hover{background:#fff}.play-demo[hidden]{display:none}.slides-cover img{width:100%;height:100%;object-fit:contain;padding:15px;background:white}.slides-cover:hover .cover-action{border-color:#999}.demo-switch{display:flex;align-items:center;gap:6px;margin-top:14px;font:400 .77rem/1.5 var(--sans)}.demo-choice{font:inherit;border:1px solid #ddd;background:#fff;color:var(--muted);padding:5px 12px;border-radius:4px;min-height:34px}.demo-choice[aria-pressed=true]{background:#f2f1ec;border-color:#bdbbb1;color:var(--text)}.demo-switch a{margin-left:auto;display:flex;gap:3px;align-items:center;text-decoration:none}.highlight-copy>.text-action{margin-top:12px}.highlight-copy .media-status{font:400 .73rem/1.4 var(--sans);margin-top:0;min-height:0}.media-status:not(:empty){padding-top:10px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:10px}.section-heading h2{margin-bottom:0}.publication{display:grid;grid-template-columns:180px minmax(0,1fr);gap:26px;padding-block:26px}.publication-image{display:flex;align-items:center;justify-content:center;align-self:start;width:180px;height:180px;overflow:hidden;border-radius:7px;background:#fcfcfc;border:1px solid #f0f0f0}.publication-image img{width:100%;height:100%;object-fit:contain;padding:7px;transition:transform .2s}.publication-image:hover img{transform:scale(1.025)}.publication h3 a{color:var(--text);text-decoration:none}.authors{font-size:.84rem;line-height:1.55;margin-top:8px}.authors strong{font-weight:600;color:var(--text)}.venue{font-size:.82rem;line-height:1.5;color:var(--muted);margin-top:4px}.paper-description{line-height:1.55;margin-top:11px}.paper-links{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:10px}.section-intro{margin-bottom:22px;margin-top:15px}.slides-viewer{height:600px;background:#f5f5f5;border:1px solid var(--border);border-radius:7px;overflow:hidden}.slides-viewer iframe{display:block;width:100%;height:100%;border:0}.viewer-note{font:400 .77rem/1.5 var(--sans);color:var(--muted);margin-top:12px}.experience-row{display:grid;grid-template-columns:110px minmax(0,1fr);gap:24px;margin-top:28px}.experience-date{font:400 .82rem/1.5 var(--sans);color:var(--muted);padding-top:4px}.experience-row p:not(.venue){line-height:1.55;margin-top:10px}.additional-experience{border-top:1px solid var(--border);margin-top:32px;padding-top:23px}.additional-experience p+p{margin-top:10px}.detail-label{color:var(--text);font-weight:500}.service{padding-top:30px}.service p+p{margin-top:14px}.contact{padding-block:54px 25px;text-align:center}.contact h2{margin-bottom:16px}.contact p{max-width:560px;margin:auto}.email-link{display:inline-block;margin-top:16px}.site-footer{text-align:center;padding-block:42px 35px}.footer-links{display:flex;justify-content:center;gap:25px;margin-bottom:27px}.footer-links .icon{width:23px;height:23px}.footer-links a{display:flex;align-items:center;justify-content:center;width:32px;height:32px}.site-footer p{font-size:.8rem;color:var(--muted)}.back-top{margin-top:18px;font-size:.73rem}
@media(min-width:1100px){.hero{padding-block:72px 64px}.section{padding-block:60px}}
@media(max-width:767px){.container{padding-inline:24px}.hero{grid-template-columns:1fr;gap:29px;text-align:center;padding-block:49px 42px}.portrait{width:192px;height:auto;margin:0 auto}.bio{max-width:650px;margin:auto}h1{font-size:1.95rem}.profile-links{justify-content:center}.section{padding-block:42px}.highlight-grid{gap:18px}.highlight-copy{padding:17px}.publication{grid-template-columns:145px minmax(0,1fr);gap:22px}.publication-image{width:145px;height:145px}.section-heading .text-action{font-size:.73rem}.slides-viewer{height:520px}.experience-row{grid-template-columns:90px minmax(0,1fr);gap:18px}}
@media(max-width:540px){html{font-size:18px}.container{padding-inline:22px}.hero{padding-top:39px}.bio p{text-align:left}.profile-links{gap:7px 18px}.highlight-grid{grid-template-columns:1fr;gap:23px}.highlight-copy{padding:20px}.demo-stage,.slides-cover{aspect-ratio:16/9}.publication{grid-template-columns:1fr;gap:18px;padding-block:25px}.publication-image{width:100%;height:190px}.publication-image img{padding:12px}.publication h3{font-size:1.18rem}.authors,.venue{font-size:.86rem}.section-heading{align-items:baseline;gap:10px}.section-heading .text-action{font-size:.71rem;white-space:nowrap}.section-heading .icon{width:14px;height:14px}.slides-viewer{height:460px}.experience-row{grid-template-columns:1fr;gap:7px;margin-top:29px}.experience-date{font-size:.76rem}.section h2{margin-bottom:23px}.section-heading h2{margin-bottom:0}.contact{padding-block:42px 12px}.site-footer{padding-top:35px}.site-footer p{line-height:1.6}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}}
@media print{.site-header,.highlights,.slides-viewer,.viewer-note,.site-footer,.contact{display:none}.section,.hero{padding-block:15px}.container{width:100%;padding:0}a{color:inherit;text-decoration:none}.publication,.experience-row{break-inside:avoid}}
