/* Layout and palette inspired by vCard by codewithsadee. See licenses/vcard-MIT.txt. */
:root{color-scheme:light;--bg:#f5f5ef;--panel:#fffefa;--raised:#f1f5ef;--line:#dce4dc;--ink:#243c3b;--muted:#65736e;--accent:#176b63;--soft:#435954;--radius:20px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:radial-gradient(ellipse at 5% 0%,#e4eee5 0,transparent 35%),var(--bg);color:var(--ink);font:14px/1.85 'Avenir Next','Segoe UI',Arial,sans-serif;min-height:100vh}a{color:inherit;text-decoration:none}button{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button{cursor:pointer}[hidden]{display:none!important}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.35}p{margin-bottom:18px}a:hover{color:var(--accent)}.portfolio-layout{max-width:1280px;margin:60px auto;padding:0 32px;display:grid;grid-template-columns:290px minmax(0,1fr);gap:26px;align-items:start}.profile-sidebar,.page-content{border:1px solid var(--line);background:var(--panel);border-radius:var(--radius);box-shadow:0 16px 48px #2548380d}.profile-sidebar{position:sticky;top:30px;padding:30px 22px;text-align:center}.hero-visual{margin:0 auto 22px;max-width:170px}.portrait-frame{height:200px;overflow:hidden;border-radius:18px;background:#f5f2eb;border:1px solid #d8e1d8}.portrait-frame img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 25%;filter:none;mix-blend-mode:normal}.hero-copy h1{font-family:Georgia,'Times New Roman',serif;font-size:27px;letter-spacing:-.7px;font-weight:400;margin-bottom:15px;overflow-wrap:anywhere}.accent{color:var(--accent)}.hero-copy .eyebrow{font-size:9px;letter-spacing:.6px;background:#eaf1eb;border-radius:8px;padding:8px;margin-bottom:18px;line-height:1.7;color:var(--soft)}.status-dot{display:inline-block;width:5px;height:5px;margin-right:7px;vertical-align:middle;background:var(--accent);border-radius:50%}.portrait-affiliation p{margin:0}.portrait-position{font-size:11px;color:var(--soft)}.portrait-location{font-size:10px;color:var(--muted);margin-top:5px!important}.sidebar-divider{height:1px;background:var(--line);margin:25px 0}.sidebar-detail{display:flex;gap:13px;align-items:center;text-align:left;margin:18px 0;min-width:0}.detail-icon{flex:0 0 40px;height:40px;display:grid;place-items:center;border:1px solid #d5e4d9;border-radius:11px;color:var(--accent);background:linear-gradient(135deg,#f6f9f2,#eaf2ec);box-shadow:0 4px 10px #25483808;font-size:20px}.sidebar-detail>div{min-width:0}.detail-label{display:block;font-size:9px;color:var(--muted);letter-spacing:1px;margin-bottom:3px}.sidebar-detail a,.sidebar-location{display:block;font-size:11px;overflow-wrap:anywhere;line-height:1.6}.location-icon:before{content:'';width:10px;height:13px;border:1.5px solid var(--accent);border-radius:50% 50% 50% 0;transform:rotate(-45deg)}.sidebar-socials{display:flex;flex-wrap:wrap;justify-content:center;gap:9px 13px;margin:24px 0 20px;font-size:10px;color:var(--muted)}.button{display:inline-flex;align-items:center;justify-content:center;gap:22px;border:1px solid #a7c8b9;border-radius:10px;padding:10px 18px;color:var(--accent);background:linear-gradient(135deg,#eff6ef,#e4f0e9);font-size:12px;font-weight:500}.cv-button{width:100%}.button:hover{background:#d9eadf}.sidebar-note{font-size:10px;color:var(--muted);margin:18px 0 0}.page-content{position:relative;min-width:0;overflow:hidden;min-height:760px}.content-header{display:flex;justify-content:flex-end;align-items:center;min-height:70px;border-bottom:1px solid var(--line);background:linear-gradient(110deg,#fffefa,#f0f5ee);padding:0 25px}.header-label{margin-right:auto;font-size:8px;letter-spacing:1.5px;color:#63786c}#navigation{display:flex;align-items:center;gap:25px}#navigation a{font-size:12px;color:var(--soft);position:relative;padding:24px 0}#navigation a[aria-current="page"]{color:var(--accent)}#navigation a[aria-current="page"]:after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--accent)}.page-panel{padding:34px 34px 20px;min-height:650px;animation:appear .25s ease}.page-panel>section{margin-bottom:30px}.eyebrow{font-size:9px;letter-spacing:1.7px;color:var(--accent);font-weight:500;margin-bottom:13px}h2{font-family:Georgia,'Times New Roman',serif;font-size:34px;letter-spacing:-.7px;font-weight:400;margin-bottom:30px}h2:after{content:'';display:block;width:38px;height:4px;border-radius:8px;background:var(--accent);margin-top:17px}h3{font-size:17px;font-weight:550;letter-spacing:-.2px;margin-bottom:12px}.about{display:block}.editorial-intro{border:1px solid #d6e4d4;background:linear-gradient(120deg,#eaf3e7,#f4f7ed);border-radius:14px;padding:23px 25px;margin:0 0 25px}.hero-tagline{font-family:Georgia,'Times New Roman',serif;font-size:28px;line-height:1.45;letter-spacing:-.6px;white-space:pre-line;margin:0 0 12px;font-weight:400}.hero-description{color:#526b60;font-size:12px;line-height:1.9;margin:0;max-width:540px}.about-copy p{font-size:14px;color:var(--soft);line-height:1.95}.about-copy .lead{color:#304c43}.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:25px}.tags span,.pill{font-size:10px;padding:4px 12px;border:1px solid #c4d9ca;border-radius:6px;color:var(--accent);background:#eef5eb}.research-strip{border-top:1px solid var(--line);padding-top:25px}.research-interests h2{font-size:21px;letter-spacing:-.3px;margin-bottom:18px}.research-interests h2:after{display:none}.research-interests ul{display:grid;grid-template-columns:1fr 1fr;gap:10px 26px;margin:0;padding-left:17px;font-size:12px;color:var(--soft)}.research-interests li::marker{color:var(--accent)}.section-top{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:27px}.section-top h2{margin-bottom:0}.section-top>p{font-size:11px;color:var(--muted);max-width:170px;margin:0}.text-link{font-size:11px;color:var(--accent);text-decoration:underline;text-decoration-color:#9cbeac;text-underline-offset:5px;overflow-wrap:anywhere}.research-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.research-card{position:relative;border:1px solid var(--line);background:linear-gradient(135deg,#fafbf5,#f0f5ed);padding:23px;border-radius:14px;box-shadow:0 8px 18px #25483808}.research-card:last-child{grid-column:1/-1}.card-symbol{font-size:28px;color:var(--accent)}.card-number{float:right;color:#6c7f73;font-size:10px}.research-card h3{margin-top:16px}.research-card p{color:var(--muted);font-size:12px;margin-bottom:18px}.card-bottom{border-top:1px solid var(--line);padding-top:12px;font-size:8px;letter-spacing:1.2px;color:var(--accent)}.current-project{position:relative;border:1px solid #cfdfc9;border-radius:14px;padding:23px;margin-top:25px;background:linear-gradient(120deg,#eaf3e4,#f4f7ef)}.current-project>.eyebrow{display:block;font-size:8px;margin-bottom:14px}.current-project h3{font-size:19px;line-height:1.6}.current-project p{font-size:12px;color:var(--muted);margin:0}.project-arrow{display:none}.filters{display:flex;flex-wrap:wrap;gap:8px;margin:28px 0 15px}.filter{font-size:10px;padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--muted)}.filter:hover{color:var(--accent)}.filter.active{background:#e5f1e5;border-color:#a7c8b9;color:var(--accent)}.publication{display:grid;grid-template-columns:46px 1fr;gap:18px;border-bottom:1px solid var(--line);padding:25px 0}.pub-year{font-size:12px;color:var(--accent);font-weight:600;padding-top:2px}.publication .eyebrow{font-size:8px;letter-spacing:1px}.publication h3{font-size:16px;line-height:1.65;margin:8px 0 10px}.publication p{color:var(--muted);font-size:11px;margin:0;line-height:1.9}.pub-source{font-style:italic}.publication-title:hover{color:var(--accent);text-decoration:underline;text-underline-offset:4px}.publication-links{display:flex;gap:10px 20px;flex-wrap:wrap;margin-top:13px}.publication-pdf{display:inline-block}.journey-intro{font-size:12px;color:var(--muted);margin-bottom:25px}.journey{display:flex;flex-direction:column}.timeline{border-left:1px solid var(--line);margin:0 0 25px 10px;padding:0 0 0 27px;order:2}.timeline article{position:relative;padding-bottom:28px}.timeline article:last-child{padding-bottom:0}.timeline article:before{position:absolute;content:'';width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px #e1ebda;left:-31px;top:7px}.timeline .eyebrow{font-size:10px;letter-spacing:.5px}.timeline h3{font-size:17px;margin:7px 0 8px}.timeline p{font-size:12px;color:var(--soft);margin-bottom:10px}.timeline .muted{color:var(--muted)}.language-box{background:#f5f8f0;border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin:0 0 30px}.language-box>.eyebrow{font-size:8px}.language-box p{display:flex;justify-content:space-between;gap:16px;font-size:12px;border-bottom:1px solid var(--line);padding:8px 0;margin:0}.language-box p:last-child{border:0}.language-box p span{font-size:11px;color:var(--muted)}.experience{border-top:1px solid var(--line);padding-top:28px}.experience h2{font-size:23px}.experience h2:after{display:none}.experience-grid{display:grid;grid-template-columns:1fr;gap:15px}.experience-grid article{border:1px solid var(--line);border-radius:12px;background:linear-gradient(120deg,#fafbf5,#f4f7ef);padding:20px}.experience-grid .eyebrow{font-size:8px}.experience-grid h3{font-size:17px;margin:10px 0}.experience-grid p{font-size:12px;color:var(--muted);margin:0}.contact>p:not(.eyebrow){font-size:13px;color:var(--muted);max-width:520px}.contact-email{font-size:clamp(17px,2vw,25px);color:var(--accent);display:inline-block;margin:18px 0 30px;border-bottom:1px solid #a7c8b9;padding-bottom:8px;overflow-wrap:anywhere;max-width:100%;line-height:1.6}.contact-email span{margin-left:10px}.social-links{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:40px}.social-links a{font-size:12px;border:1px solid var(--line);border-radius:10px;background:linear-gradient(135deg,#f6f9f2,#f4f7ef);padding:13px 19px;display:inline-flex;gap:25px}.contact-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding-top:24px;color:var(--muted);font-size:9px;letter-spacing:.7px}.contact-bottom a{color:var(--accent)}.portfolio-footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:18px 34px;color:#65756b;font-size:9px}.portfolio-footer a{color:var(--muted);white-space:nowrap}.skip{position:fixed;top:-100px;left:20px;z-index:20;background:var(--accent);color:#ffffff;padding:10px 20px}.skip:focus-visible{top:10px}.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}@keyframes appear{from{opacity:.4;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media(min-width:1500px){.portfolio-layout{margin-top:80px}}@media(max-width:1100px){.portfolio-layout{grid-template-columns:250px minmax(0,1fr);gap:20px;padding:0 24px}.profile-sidebar{padding:25px 18px}.header-label{display:none}#navigation{gap:22px}.page-panel{padding:28px}.research-interests ul{grid-template-columns:1fr}.hero-copy h1{font-size:23px}.content-header{justify-content:center}}@media(max-width:850px){.portfolio-layout{display:block;max-width:760px;margin:28px auto}.profile-sidebar{position:relative;top:0;display:grid;grid-template-columns:125px 1fr;column-gap:24px;text-align:left;margin-bottom:22px;padding:24px}.hero-visual{grid-row:1/4;margin:0;width:125px}.portrait-frame{height:155px;border-radius:14px}.hero-copy h1{font-size:25px;margin-bottom:10px}.hero-copy .eyebrow{display:inline-block;margin-bottom:12px;padding:5px 9px}.portrait-affiliation{grid-column:2}.sidebar-divider{grid-column:1/-1;margin:22px 0 0}.sidebar-detail{margin-bottom:0}.sidebar-socials{justify-content:flex-start;grid-column:2;margin:16px 0 0}.cv-button{grid-column:1;width:100%;grid-row:6;margin-top:16px;font-size:10px;padding:8px}.sidebar-note{display:none}.page-content{min-height:650px}.content-header{padding:0 20px}#navigation{gap:30px;width:100%;justify-content:space-between}#navigation a{font-size:12px}.page-panel{min-height:500px}.research-interests ul{grid-template-columns:1fr 1fr}}@media(max-width:550px){.portfolio-layout{margin:16px auto 30px;padding:0 14px}.profile-sidebar{grid-template-columns:90px 1fr;gap:0 17px;border-radius:16px;padding:20px 17px;margin-bottom:16px}.hero-visual{width:90px}.portrait-frame{height:115px;border-radius:12px}.hero-copy h1{font-size:21px;letter-spacing:-.5px}.hero-copy .eyebrow{font-size:8px;margin-bottom:7px;letter-spacing:.2px}.portrait-position{font-size:9px}.portrait-location{font-size:9px}.sidebar-divider{margin-top:20px}.sidebar-detail{grid-column:1/-1;margin-top:15px;gap:12px}.sidebar-detail a,.sidebar-location{font-size:11px}.detail-icon{height:35px;flex-basis:35px;font-size:17px}.sidebar-socials{grid-column:1/-1;grid-row:auto;margin:20px 0 14px;justify-content:center;gap:22px;font-size:11px}.cv-button{grid-column:1/-1;grid-row:auto;margin:0;padding:9px;font-size:11px}.page-content{border-radius:16px}.content-header{min-height:60px;padding:0 15px}#navigation{gap:12px}#navigation a{font-size:10px;padding:20px 0}.page-panel{padding:25px 20px 15px;min-height:450px}h2{font-size:27px}.eyebrow{font-size:8px;letter-spacing:1.2px}.editorial-intro{padding:19px}.hero-tagline{font-size:22px}.hero-description{font-size:11px}.about-copy p{font-size:12px}.research-interests ul{grid-template-columns:1fr;font-size:11px}.research-interests h2{font-size:20px}.section-top{display:block}.section-top>.text-link{display:inline-block;margin-top:20px}.section-top>p{margin-top:22px;max-width:none}.research-grid{grid-template-columns:1fr}.research-card:last-child{grid-column:auto}.research-card{padding:20px}.publication{grid-template-columns:34px 1fr;gap:10px;padding:22px 0}.publication h3{font-size:15px}.pub-year{font-size:11px}.publication .eyebrow{font-size:7px}.filters{gap:6px}.filter{font-size:9px;padding:6px 9px}.contact-email{font-size:18px}.social-links{gap:8px}.social-links a{padding:10px 12px;font-size:11px;gap:10px}.portfolio-footer{padding:16px 20px;font-size:8px}.language-box{padding:14px}.language-box p{font-size:11px}.language-box p span{font-size:10px}.current-project h3{font-size:17px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.page-panel{animation:none}}
