@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Instrument+Serif:ital@0;1&display=swap');
:root{--ink:#23212c;--muted:#655f72;--line:#e3e0e8;--purple:#6433aa;--green:#267455;--blue:#2563a7;--amber:#99630c;--paper:#fff;--tint:#f6f4fa;--serif:'Instrument Serif',Georgia,serif;--sans:'DM Sans',Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;color:var(--ink);background:var(--paper);font:400 1rem/1.7 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input{font:inherit}a,button{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a:focus-visible,button:focus-visible,summary:focus-visible,canvas:focus-visible{outline:3px solid var(--purple);outline-offset:5px}button:disabled{cursor:default}img{display:block;max-width:100%;height:auto}p{margin:0 0 1.2rem}h1,h2,h3,h4{font-weight:400;margin:0;line-height:1.1}h1,h2,h3{font-family:var(--serif)}h2{font-size:clamp(2.4rem,4.2vw,3.75rem);letter-spacing:-.025em}h3{font-size:2rem}::selection{background:#e9dcff;color:#352252}.wrap{max-width:1264px;margin:auto;padding-inline:40px}.skip{position:fixed;left:12px;top:-100px;background:white;padding:12px;z-index:50}.skip:focus{top:12px}.site-header{position:sticky;top:0;z-index:10;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);backdrop-filter:blur(14px)}.header-inner{display:flex;align-items:center;justify-content:space-between;min-height:84px;gap:30px}.wordmark{display:flex;align-items:center;gap:13px;font-weight:550;line-height:1.2}.monogram{display:grid;place-items:center;width:40px;height:40px;border:1px solid #d1c3e4;border-radius:50%;font:1.4rem var(--serif);color:var(--purple)}.nav{display:flex;gap:28px;align-items:center;font-size:.9rem}.nav a{position:relative}.nav a:hover,.nav a.active{color:var(--purple)}.nav a.active:after{content:'';position:absolute;bottom:-7px;left:0;right:0;height:2px;background:var(--purple)}.nav .nav-cv{padding:8px 16px;border:1px solid #cfc7db;border-radius:3px}.menu-toggle{display:none;border:1px solid var(--line);background:white;border-radius:3px;padding:7px 12px;color:var(--ink)}.eyebrow{font-size:.75rem;text-transform:uppercase;letter-spacing:.15em;font-weight:600;line-height:1.5;color:var(--purple)}.hero{padding:76px 0 62px;display:grid;grid-template-columns:1fr 1.08fr;align-items:center;gap:60px}.hero h1{font-size:clamp(4rem,6.35vw,5.6rem);line-height:.99;letter-spacing:-.035em;margin:22px 0 27px}.hero h1 span{color:var(--purple)}.hero .lead{font-size:1.25rem;line-height:1.55;max-width:430px}.hero .bio{color:var(--muted);max-width:425px;font-size:1rem}.hero .bio a{text-decoration:underline;text-decoration-color:#ccc0dc;text-underline-offset:4px}.actions{display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin-top:28px}.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;padding:11px 19px;border:1px solid var(--purple);border-radius:3px;background:var(--purple);color:white;font-size:.9rem;font-weight:500;min-height:46px;transition:background .2s,transform .2s}.button:hover{background:#48217f;transform:translateY(-2px)}.button.secondary{background:white;color:var(--ink);border-color:#d1c9dc}.button.secondary:hover{background:var(--tint)}.text-link{font-size:.9rem;font-weight:550;color:var(--purple);display:inline-flex;align-items:center;gap:10px}.text-link:hover{text-decoration:underline;text-underline-offset:5px}.hero-visual{position:relative;margin:0}.hero-visual:before{content:'';position:absolute;z-index:-1;inset:28px -20px -18px 25px;background:linear-gradient(140deg,#eee7f8,#f8f6fc);border:1px solid #e9e0f3}.visual-bar{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;background:#f5f1fa;border:1px solid #e2d7f1;font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:#5c407b}.hero-visual img{width:100%;aspect-ratio:1.22;object-fit:cover;object-position:48% center}.hero-visual figcaption{padding:18px 20px;border:1px solid var(--line);border-top:0;background:white;font-size:.85rem;display:flex;justify-content:space-between;gap:16px;align-items:center}.hero-visual figcaption strong{display:block;font-weight:500;color:var(--ink)}.hero-visual figcaption span{color:var(--muted);font-size:.78rem}.hero-visual .round-arrow{color:var(--purple);font-size:1.4rem}.research-strip{display:flex;justify-content:space-between;align-items:center;gap:24px;border-block:1px solid var(--line);padding:22px 0;color:var(--muted);font-size:.8rem}.research-strip .label{color:var(--ink);font-weight:600}.section{padding:88px 0}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:40px}.section-heading .eyebrow{display:block;margin-bottom:13px}.section-intro{max-width:400px;color:var(--muted);font-size:.95rem;margin-bottom:3px}.research-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:28px}.theme{--theme-color:var(--purple);padding-top:21px;border-top:2px solid var(--theme-color)}.theme.green{--theme-color:var(--green)}.theme.blue{--theme-color:var(--blue)}.theme.amber{--theme-color:var(--amber)}.theme-number{font-size:.75rem;color:var(--theme-color);font-weight:600;letter-spacing:.08em}.theme h3{font-size:1.9rem;margin:19px 0 13px}.theme p{font-size:.92rem;color:var(--muted);line-height:1.7}.interface{font-size:.72rem;color:var(--theme-color);display:block;margin-top:22px}.theme a:hover h3{color:var(--theme-color)}.projects-section{background:var(--tint);border-block:1px solid var(--line)}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}.project-card{background:white;border:1px solid var(--line);display:flex;flex-direction:column;transition:box-shadow .25s,transform .25s}.project-card:hover{transform:translateY(-4px);box-shadow:0 15px 36px #3021450b}.project-image{overflow:hidden;background:#fdfdfd;display:block;border-bottom:1px solid var(--line)}.project-image img{width:100%;aspect-ratio:1.83;object-fit:cover;transition:transform .6s}.project-card:hover .project-image img{transform:scale(1.025)}.project-image img.figure{object-fit:contain;padding:16px}.project-image img.language{object-fit:cover;object-position:48% center}.project-content{padding:28px 30px 26px;display:flex;flex-direction:column;flex:1}.project-meta{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px;color:var(--purple);font-size:.7rem;text-transform:uppercase;letter-spacing:.1em}.project-meta .venue{color:var(--muted);text-transform:none;letter-spacing:0;font-size:.77rem}.project-content h3{margin-bottom:15px;font-size:2.1rem}.project-content p{font-size:.95rem;color:var(--muted)}.project-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:15px;font-size:.8rem}.project-bottom span{color:var(--muted)}.pub-list{border-top:1px solid var(--line)}.publication{display:grid;grid-template-columns:65px 1fr;gap:22px;padding:28px 0;border-bottom:1px solid var(--line)}.pub-year{color:var(--muted);font-size:.85rem;padding-top:4px}.pub-title{font:500 1.12rem/1.5 var(--sans);margin:0 0 9px}.pub-title a:hover{color:var(--purple)}.pub-authors{font-size:.85rem;color:var(--muted);margin-bottom:6px}.pub-authors strong{color:var(--ink);font-weight:550}.pub-venue{font-size:.8rem;color:var(--purple);margin-bottom:10px}.pub-takeaway{font-size:.9rem;color:var(--muted);margin-bottom:12px}.pub-links{display:flex;align-items:center;flex-wrap:wrap;gap:18px;font-size:.8rem;color:var(--purple)}.pub-links a:hover{text-decoration:underline}.citation{margin-top:12px}.citation summary{cursor:pointer;color:var(--purple);font-size:.8rem;width:max-content}.citation pre{font-size:.75rem;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--tint);padding:20px;border:1px solid var(--line)}.copy-citation{padding:6px 12px;border:1px solid var(--line);background:white;color:var(--purple);font-size:.8rem;border-radius:3px}.about-section{border-top:1px solid var(--line)}.about-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:100px}.about-text .eyebrow{display:block;margin-bottom:15px}.about-text h2{margin-bottom:28px}.about-text p{color:var(--muted)}.about-text .intro{color:var(--ink);font-size:1.18rem}.expertise{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}.expertise span{border:1px solid var(--line);padding:5px 10px;font-size:.75rem;border-radius:3px}.timeline-title{font-size:.77rem;text-transform:uppercase;letter-spacing:.13em;margin-bottom:15px;font-weight:600}.timeline-entry{display:grid;grid-template-columns:98px 1fr;gap:15px;padding:20px 0;border-top:1px solid var(--line)}.timeline-entry time{font-size:.76rem;color:var(--muted)}.timeline-entry strong{display:block;font-size:.95rem;font-weight:500;line-height:1.5}.timeline-entry span{display:block;font-size:.85rem;color:var(--muted);margin-top:4px}.contact-section{background:#292131;color:#f6f1fc;padding:65px 0}.contact-inner{display:flex;justify-content:space-between;gap:30px;align-items:center}.contact-section .eyebrow{color:#d5b8f6;display:block;margin-bottom:14px}.contact-section h2{font-size:3rem}.contact-section p{color:#d2c7db;max-width:450px;margin-top:15px;font-size:.95rem}.contact-links{display:flex;flex-direction:column;gap:14px}.contact-email{font-size:1.1rem;border-bottom:1px solid #766583;padding-bottom:8px;overflow-wrap:anywhere}.social-links{display:flex;gap:22px;font-size:.85rem;color:#d7c4e8}.social-links a:hover{color:white}.footer{padding:23px 0;font-size:.75rem;color:var(--muted)}.footer-inner{display:flex;justify-content:space-between;align-items:center;gap:15px}.footer a:hover{color:var(--purple)}.detail-top{padding:48px 0 50px}.back-link{color:var(--muted);font-size:.85rem;display:inline-block;margin-bottom:46px}.back-link:hover{color:var(--purple)}.detail-kicker{display:flex;gap:18px;align-items:center;margin-bottom:20px;flex-wrap:wrap}.detail-top h1{font-size:clamp(3.4rem,6vw,5.1rem);max-width:1000px;letter-spacing:-.03em}.detail-subtitle{font-size:1.3rem;color:var(--muted);max-width:800px;line-height:1.6;margin:25px 0 0}.detail-image{margin:0 0 55px}.detail-image img{width:100%;max-height:600px;object-fit:cover;background:var(--tint)}.detail-image img.contain{object-fit:contain;padding:30px}.detail-image img.language{max-height:290px;object-fit:contain;padding:0}.detail-image figcaption{font-size:.8rem;color:var(--muted);padding:15px 0;max-width:900px}.detail-layout{display:grid;grid-template-columns:235px 1fr;gap:65px;padding-bottom:65px}.detail-sidebar{align-self:start;position:sticky;top:120px}.detail-sidebar strong{font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;display:block;margin-bottom:15px}.detail-sidebar a{display:block;font-size:.86rem;color:var(--muted);padding:7px 0}.detail-sidebar a:hover{color:var(--purple)}.detail-prose{max-width:800px}.detail-prose section{margin-bottom:45px;scroll-margin-top:110px}.detail-prose h2{font-size:2.25rem;margin-bottom:22px}.detail-prose p,.detail-prose li{color:var(--muted);font-size:1rem}.detail-prose ul{padding-left:22px}.detail-prose li{padding-left:6px;margin:10px 0}.contribution{border-left:3px solid var(--purple);background:var(--tint);padding:27px 30px}.contribution h2{font-size:1.9rem}.contribution p:last-child{margin-bottom:0}.detail-figure{margin:30px 0}.detail-figure img{width:100%;max-height:850px;object-fit:contain;border:1px solid var(--line);padding:18px}.detail-figure figcaption{font-size:.8rem;line-height:1.6;color:var(--muted);padding-top:12px}.next-project{border-top:1px solid var(--line);padding:35px 0 60px;display:flex;align-items:center;justify-content:space-between;gap:30px}.next-project span{font-size:.75rem;color:var(--muted)}.next-project h3{font-size:2rem;margin-top:8px}.demo{border:1px solid var(--line);padding:24px;background:#faf9fc}.demo canvas{display:block;width:100%;height:auto;aspect-ratio:1.8;background:white;border:1px solid var(--line)}.demo-controls{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.demo-controls button{border:1px solid #cdc2da;border-radius:3px;background:white;color:var(--purple);padding:7px 14px;font-size:.85rem}.demo .demo-note{font-size:.8rem;margin:15px 0 0}.demo-status{font-size:.8rem;color:var(--muted);margin-top:12px;display:block}.notfound{min-height:70vh;padding:100px 0}.notfound h1{font-size:4rem;margin:20px 0}.notfound p{color:var(--muted)}
.news-section{background:var(--tint);border-top:1px solid var(--line)}
.news-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.news-card{padding:29px 27px;background:white;border:1px solid var(--line);display:flex;flex-direction:column;min-width:0}
.news-meta{display:flex;flex-direction:column;gap:6px;margin-bottom:25px;font-size:.875rem;line-height:1.5}
.news-outlet{font-weight:600;color:var(--purple)}
.news-meta time{color:var(--muted)}
.news-card h3{font-size:1.85rem;line-height:1.18;margin-bottom:18px}
.news-card h3 a:hover{color:var(--purple)}
.news-card p{font-size:1rem;line-height:1.65;color:var(--muted);margin-bottom:25px}
.news-card>.text-link{margin-top:auto;align-self:flex-start}
@media(max-width:900px){.news-grid{grid-template-columns:1fr}.news-meta{flex-direction:row;justify-content:space-between;flex-wrap:wrap;gap:8px 20px;margin-bottom:18px}.news-card{padding:25px}}
@media print{.news-card{break-inside:avoid}.news-grid{display:block}}
@media(min-width:1500px){.hero{padding-top:100px;padding-bottom:80px}}
@media(max-width:1050px){.wrap{padding-inline:28px}.hero{gap:35px}.hero h1{font-size:clamp(3.8rem,6.5vw,4.5rem)}.nav{gap:18px}.research-grid{gap:20px}.theme h3{font-size:1.6rem}.about-grid{gap:50px}.detail-layout{grid-template-columns:175px 1fr;gap:35px}}
@media(max-width:900px){.header-inner{min-height:73px}.wordmark{font-size:.88rem}.monogram{width:35px;height:35px}.js .menu-toggle{display:block}.js .nav{display:none;position:absolute;left:0;right:0;top:73px;background:white;border-bottom:1px solid var(--line);padding:20px 28px;flex-wrap:wrap;gap:22px}.js .nav.open{display:flex}.hero{grid-template-columns:1fr;gap:42px;padding-top:42px}.hero h1{font-size:4.7rem}.hero h1 br{display:none}.hero h1 span{display:block}.hero .lead,.hero .bio{max-width:590px}.hero-visual{margin-right:12px}.hero-visual img{aspect-ratio:1.7;object-position:center}.research-strip{justify-content:start;flex-wrap:wrap;gap:12px 24px;font-size:.75rem}.research-strip .label{width:100%}.section{padding:65px 0}.section-heading{align-items:start;flex-direction:column;gap:20px}.research-grid{grid-template-columns:1fr 1fr;gap:30px}.theme h3{font-size:1.9rem}.project-content{padding:24px}.project-meta{align-items:start;flex-direction:column;gap:4px}.project-content h3{font-size:1.8rem}.project-bottom{gap:12px;align-items:start;flex-direction:column}.about-grid{grid-template-columns:1fr;gap:48px}.contact-inner{align-items:start;flex-direction:column}.contact-links{width:100%;max-width:420px}.detail-layout{grid-template-columns:1fr;gap:30px}.detail-sidebar{position:static;border-block:1px solid var(--line);padding:15px 0}.detail-sidebar a{display:inline-block;margin-right:20px}.detail-sidebar strong{display:none}.detail-top h1{font-size:3.8rem}.detail-top{padding-top:30px}.back-link{margin-bottom:30px}.detail-image{margin-bottom:25px}}
@media(max-width:520px){.wrap{padding-inline:22px}.hero h1{font-size:clamp(3.3rem,13.4vw,4.5rem)}.hero .lead{font-size:1.13rem}.hero-visual img{aspect-ratio:1.35}.hero-visual figcaption{padding:15px}.visual-bar{font-size:.62rem}.research-grid{grid-template-columns:1fr}.theme{padding-top:18px}.theme h3{margin:13px 0}.interface{margin-top:15px}.project-grid{grid-template-columns:1fr}.project-content h3{font-size:2.1rem}.project-meta{flex-direction:row;align-items:center}.project-bottom{flex-direction:row;align-items:center}.publication{grid-template-columns:1fr;gap:8px}.pub-year{color:var(--purple)}.pub-title{font-size:1.04rem}.contact-section h2{font-size:2.65rem}.contact-email{font-size:.97rem}.footer-inner{flex-direction:column;align-items:start;gap:9px}.detail-top h1{font-size:3rem}.detail-subtitle{font-size:1.12rem}.detail-image img.contain{padding:10px}.contribution{padding:23px}.detail-prose h2{font-size:2.05rem}.demo{padding:14px}.next-project h3{font-size:1.6rem}.nav{gap:12px;font-size:.78rem;flex-wrap:wrap}.header-inner{flex-wrap:wrap;padding-block:16px}.js .header-inner{flex-wrap:nowrap;padding-block:0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
@media print{.site-header,.contact-section,.footer,.detail-sidebar,.demo-controls,.actions,.next-project{display:none}.wrap{max-width:none;padding:0}.hero,.about-grid,.detail-layout{display:block}.section{padding:25px 0}.hero-visual{display:none}.project-card,.publication{break-inside:avoid}a{text-decoration:underline}.detail-top h1{font-size:36pt}}
