@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--base:#111214;--surface:#1d1f23;--surface2:#272a2f;--ink:#f1efec;--muted:#aaadb3;--subtle:#81858e;--line:#303339;--accent:#ea7773;--sans:'DM Sans',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--base);color:var(--ink);font:16px/1.75 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}button,input{font:inherit}button,a,input,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.wrap{width:min(1050px,88%);margin-inline:auto}header{height:112px;display:flex;align-items:center;justify-content:space-between}.brand{font-size:24px;font-weight:700;letter-spacing:-1.5px}.brand-dot{color:var(--accent)}nav{display:flex;gap:33px;align-items:center;font-size:12px;color:var(--muted)}nav .nav-cv{color:var(--ink);border-bottom:1px solid var(--line);padding-bottom:2px}.hero{display:grid;grid-template-columns:1.1fr 1fr;gap:90px;align-items:center;padding:63px 0 105px}.eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:2.2px;color:var(--accent);margin:0 0 22px;font-weight:600}h1{font-size:clamp(64px,6vw,83px);line-height:1.02;letter-spacing:-4px;font-weight:500;margin:0 0 24px}h1>span{color:var(--accent)}.role{font-size:15px;font-weight:500;margin:0 0 20px}.intro{color:var(--muted);font-size:15px;max-width:440px;line-height:1.85;margin:0}.availability{font-size:11px;margin:24px 0;color:var(--ink);line-height:1.7}.availability>span{width:5px;height:5px;display:inline-block;vertical-align:2px;background:var(--accent);border-radius:50%;margin-right:8px}.availability small{font-size:10px;color:var(--subtle);margin-left:13px}.hero-links{display:flex;align-items:center;gap:25px;font-size:12px}.button{display:inline-block;background:var(--accent);color:#151518;font-weight:600;padding:11px 19px;border-radius:3px}.button:hover{color:#151518;background:#f79791}.profile-links{display:flex;gap:21px;font-size:11px;margin-top:26px;color:var(--subtle)}.portrait{margin:0;align-self:center}.portrait img{display:block;width:100%;height:410px;object-fit:cover;object-position:50% 44%;border-radius:4px;filter:saturate(.65);background:var(--surface)}.portrait figcaption{font-size:10px;color:var(--subtle);margin:15px 0 0;text-align:right}.section{border-top:1px solid var(--line);padding:69px 0;display:grid;grid-template-columns:185px 1fr;gap:45px}.section-label{display:flex;gap:16px;align-items:baseline;padding-top:7px}.section-label>span{font-size:9px;color:var(--accent);font-weight:600}.section-label h2{font-size:12px;font-weight:500;letter-spacing:.1px;margin:0}.section-body{min-width:0}.section-body>p{font-size:14px;color:var(--muted);max-width:680px}.lead-title{font-size:32px;line-height:1.27;letter-spacing:-.9px;font-weight:500;margin:0 0 22px}.section-body .lead{font-size:16px;line-height:1.85;margin:0 0 16px}.research-details,.side-projects{margin-top:28px;background:var(--surface);border-radius:3px}.research-details summary,.side-projects summary{padding:15px 20px;font-size:12px;cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center}.research-details summary::-webkit-details-marker,.side-projects summary::-webkit-details-marker{display:none}summary>span{font-size:20px;color:var(--subtle);font-weight:400}details[open]>summary>span{transform:rotate(45deg)}.details-body{padding:0 23px 24px}.approach-list{padding-left:19px;color:var(--muted);font-size:13px}.approach-list li{padding:7px 0}.approach-list b{color:var(--ink);font-weight:500}.illustration{max-width:440px;margin:27px auto 0;background:#e9eee8;padding:0 20px 15px;border-radius:3px;color:#172e38}.illustration canvas{display:block;width:100%;height:auto}.illustration label{display:flex;justify-content:space-between;font-size:11px}.illustration input{width:100%;accent-color:#b45130}.illustration p{font-size:10px;margin:5px 0 0;color:#58676a}.background-note{margin-top:32px;padding-left:19px;border-left:2px solid var(--surface2)}.background-note p{font-size:13px;color:var(--muted);margin:0 0 8px}.background-note a{color:var(--ink);border-bottom:1px solid var(--line)}.background-note .small{font-size:10px;color:var(--subtle)}.section-intro{margin:0 0 20px!important}.tool-card{width:100%;display:block;text-align:left;padding:21px 31px 21px 0;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);cursor:pointer;position:relative}.tool-card:first-child{border-top:1px solid var(--line)}.tool-card:after{content:'↗';position:absolute;right:2px;top:29px;font-size:16px;color:var(--subtle)}.tool-card:hover h3,.tool-card:hover:after{color:var(--accent)}.tool-icon,.tool-card .view{display:none}.tag{font-size:9px;text-transform:uppercase;letter-spacing:1.1px;color:var(--subtle)}.tool-card h3{font-size:17px;line-height:1.4;letter-spacing:-.2px;font-weight:500;margin:5px 0 7px}.tool-card p{font-size:12px;color:var(--muted);margin:0;max-width:570px}.side-projects{margin-top:27px}.project-row{margin:0 20px;display:flex;gap:20px;justify-content:space-between;border-top:1px solid var(--line);padding:20px 0}.project-row h3{font-size:15px;font-weight:500;margin:0 0 6px}.project-row p{font-size:12px;color:var(--muted);margin:0}.project-row a{flex-shrink:0;font-size:10px;color:var(--accent);margin-top:5px}.filters{display:flex;gap:23px;border-bottom:1px solid var(--line);margin-top:1px}.filters button{font-size:10px;background:none;color:var(--subtle);border:0;border-bottom:2px solid transparent;padding:0 0 15px;cursor:pointer}.filters button.active{border-bottom-color:var(--accent);color:var(--ink)}.pub{display:grid;grid-template-columns:39px 1fr;gap:18px;padding:25px 0;border-bottom:1px solid var(--line)}.pub-year{font-size:10px;color:var(--subtle);padding-top:2px}.pub h3{font-size:15px;font-weight:500;line-height:1.65;margin:0 0 9px;letter-spacing:-.1px}.pub .authors{font-size:10px;line-height:1.8;color:var(--subtle);margin:0 0 7px}.pub .authors strong{font-weight:500;color:var(--muted)}.pub .journal{font-size:10px;color:var(--muted);margin:0;line-height:1.8}.pub .journal span{font-size:9px;color:var(--subtle)}.pub>a{grid-column:2;font-size:10px;color:var(--accent);margin-top:-8px}.show-all{border:0;background:none;color:var(--ink);padding:19px 0;font-size:11px;cursor:pointer}.show-all span{margin-left:10px;color:var(--accent)}.scholar-link{display:block;font-size:10px;color:var(--subtle);margin-top:9px}.contact-section{padding-bottom:80px}.contact-section .lead-title{font-size:32px}.contact-section .section-body>p{max-width:590px}.email{display:inline-block;font-size:20px;letter-spacing:-.4px;border-bottom:1px solid var(--accent);padding-bottom:5px;margin-top:17px}.cv-downloads{display:flex;gap:26px;font-size:11px;color:var(--muted);margin-top:27px}footer{border-top:1px solid var(--line);padding-top:25px;padding-bottom:33px;display:flex;justify-content:space-between;font-size:9px;color:var(--subtle)}dialog{background:var(--surface);color:var(--ink);border:1px solid #3c3f47;border-radius:5px;padding:45px;width:90%;max-width:700px;max-height:85vh}dialog::backdrop{background:#060709db;backdrop-filter:blur(5px)}.close{position:absolute;right:14px;top:8px;background:none;border:0;color:var(--muted);font-size:29px;cursor:pointer}dialog h2{font-size:32px;line-height:1.2;letter-spacing:-1px;font-weight:500;margin:15px 0 24px}dialog p{font-size:14px;color:var(--muted)}dialog .eyebrow{font-size:9px;color:var(--accent)}.workflow{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:27px 0}.workflow>div{background:var(--surface2);padding:19px 15px;font-size:12px}.workflow b{display:block;color:var(--accent);font-size:9px;font-weight:500;letter-spacing:1px;margin-bottom:12px}.detail-note{font-size:11px!important;border-top:1px solid #393d45;padding-top:18px}.text-link{font-size:12px;color:var(--accent)}@media(min-width:1450px){.hero{padding-top:95px;padding-bottom:130px}}@media(max-width:950px){.hero{gap:45px}.portrait img{height:355px}.section{grid-template-columns:135px 1fr;gap:30px}h1{font-size:68px}.role{font-size:13px}.intro{font-size:14px}}@media(max-width:650px){.wrap{width:88%}header{height:84px}nav{gap:20px;font-size:10px}nav a:nth-child(3){display:none}.hero{grid-template-columns:1fr;gap:30px;padding:32px 0 55px}.portrait{grid-row:1;display:flex;gap:20px;align-items:end}.portrait img{width:132px;height:148px;object-position:50% 40%}.portrait figcaption{text-align:left;max-width:140px;font-size:10px;margin:0 0 8px;line-height:1.8}.hero-copy .eyebrow{font-size:9px;margin-bottom:17px}h1{font-size:61px;letter-spacing:-3px;line-height:1.02;margin-bottom:19px}.role{font-size:13px;margin-bottom:17px}.intro{font-size:14px;line-height:1.8}.availability{margin:20px 0}.hero-links{font-size:11px}.profile-links{font-size:10px;margin-top:22px}.section{grid-template-columns:1fr;gap:25px;padding:42px 0}.section-label{padding:0;gap:12px}.section-label h2{font-size:11px}.lead-title{font-size:28px}.section-body .lead{font-size:15px}.section-body>p{font-size:13px}.tool-card{padding:20px 22px 20px 0}.tool-card h3{font-size:16px}.tool-card p{font-size:12px}.filters{gap:19px}.filters button{font-size:9px}.pub{gap:12px;grid-template-columns:29px 1fr}.pub h3{font-size:14px}.pub .authors{font-size:10px}.project-row{display:block}.project-row a{display:inline-block;margin-top:13px}.email{font-size:20px}footer span:nth-child(2){display:none}dialog{padding:35px 24px}.workflow{grid-template-columns:1fr}.contact-section{padding-bottom:55px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
