:root{--maroon:#7a1f2b;--brand:#7a1f2b;--brand-rgb:122,31,43;--brand-solid:#7a1f2b;--maroon-light:#f6ecee;--bg:#fff;--surface:#f6ecee;--nav-bg:rgba(246,236,238,.85);--text:#1a1a1a;--muted:#555;--border:#e8dada;--shadow:rgba(0,0,0,.08);--badge-published-bg:#e8f5e9;--badge-published-fg:#2e7d32;--badge-review-bg:#fff8e1;--badge-review-fg:#e65100;--badge-prep-bg:#f3e5f5;--badge-prep-fg:#6a1b9a;--badge-accepted-bg:#e3f2fd;--badge-accepted-fg:#0d47a1;color-scheme:light}:root[data-theme=dark]{--brand:#e7a3ae;--brand-rgb:231,163,174;--brand-solid:#9b2a3a;--bg:#151214;--surface:#221a1d;--maroon-light:#221a1d;--nav-bg:rgba(21,18,20,.85);--text:#ece6e7;--muted:#a89ea1;--border:#3a2c30;--shadow:rgba(0,0,0,.45);--badge-published-bg:#17301a;--badge-published-fg:#81c784;--badge-review-bg:#3a2a10;--badge-review-fg:#ffb74d;--badge-prep-bg:#2d1a33;--badge-prep-fg:#ce93d8;--badge-accepted-bg:#14263d;--badge-accepted-fg:#64b5f6;color-scheme:dark}body{margin:0;font-family:Inter,sans-serif;background:var(--bg);color:var(--text);line-height:1.8;font-size:17px;letter-spacing:.2px;transition:background .3s ease,color .3s ease}::selection{background:var(--brand-solid);color:#fff}:focus-visible{outline:2px solid var(--brand);outline-offset:3px}h1,h2,h3{font-family:Playfair Display,serif;color:var(--brand);margin-top:0}h1{font-size:2.5rem;margin-bottom:15px}h2{font-size:1.5rem;margin-bottom:20px}.container{max-width:900px;margin:auto;padding:60px 25px}section{margin-bottom:70px;position:relative}section:after{content:"";display:block;height:1px;background:var(--border);margin-top:60px}section:last-of-type:after{display:none}.navbar{position:-webkit-sticky;position:sticky;top:0;z-index:50;display:flex;justify-content:space-between;align-items:center;padding:16px 40px;background:var(--nav-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.scroll-progress{position:absolute;left:0;bottom:-1px;width:100%;height:3px;background:var(--brand-solid);transform:scaleX(0);transform-origin:left}.brand{font-family:Playfair Display,serif;font-size:1.35rem;font-weight:700;color:var(--brand)}.navbar nav{display:flex;align-items:center}.navbar a{margin-left:28px;color:var(--brand);text-decoration:none;font-weight:500;font-size:.95rem;transition:opacity .2s;padding-bottom:3px}.navbar a:hover{opacity:.65}.navbar a.nav-active{font-weight:700;border-bottom:2px solid var(--brand)}.theme-toggle{margin-left:24px;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--brand);cursor:pointer;transition:background .2s,transform .3s ease}.theme-toggle:hover{background:var(--surface);transform:rotate(18deg)}.hero{position:relative;overflow:hidden;margin-bottom:60px;padding:44px 40px;border-radius:16px;border:1px solid var(--border);background:var(--surface)}.hero:after{display:none}.flow-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.hero-content{position:relative;display:flex;gap:40px;align-items:flex-start}.hero-focus{margin:0 0 16px;font-size:1rem;color:var(--muted);min-height:1.8em}.typewriter{color:var(--brand);font-weight:600}.caret{display:inline-block;width:2px;height:1.05em;margin-left:2px;vertical-align:text-bottom;background:var(--brand);animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.hero-badges{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.hero-badge{font-size:.75rem;font-weight:600;letter-spacing:.4px;text-transform:uppercase;padding:3px 11px;border-radius:4px;background:var(--brand-solid);color:#fff}.portrait{width:190px;border-radius:8px;border:1px solid var(--border);box-shadow:8px 8px 0 rgba(var(--brand-rgb),.18),0 4px 16px var(--shadow);flex-shrink:0}.profile-info h1{margin-bottom:6px}.profile-title{font-size:1.05rem;color:var(--text);margin:0 0 4px;font-weight:500}.profile-affil{color:var(--muted);margin:0 0 14px;font-size:.95rem}.profile-links{display:flex;gap:12px;flex-wrap:wrap}.profile-links a{display:inline-block;background:var(--bg);color:var(--brand);font-size:.85rem;font-weight:600;padding:5px 14px;border-radius:20px;text-decoration:none;border:1px solid var(--border);transition:background .2s,color .2s,transform .2s}.profile-links a:hover{background:var(--brand-solid);color:#fff;transform:translateY(-2px)}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:16px;gap:16px;margin-top:28px}.card{position:relative;padding:20px 22px;border-radius:12px;border:1px solid var(--border);background:var(--surface);overflow:hidden;transition:transform .3s ease,box-shadow .3s ease,border-color .3s ease}.card:before{content:"";position:absolute;left:0;top:0;width:100%;height:3px;background:var(--brand-solid);transform:scaleX(.18);transform-origin:left;transition:transform .35s ease}.card:hover{transform:translateY(-4px);border-color:var(--brand);box-shadow:0 12px 28px var(--shadow)}.card:hover:before{transform:scaleX(1)}.card h3{font-size:1.1rem;margin-bottom:6px}.card p{margin:0;font-size:.9rem;line-height:1.6;color:var(--muted)}ul{padding-left:20px}li{margin-bottom:10px}.contact-box{background:var(--surface);padding:28px 32px;border-radius:12px;border:1px solid var(--border)}.contact-box p{margin:8px 0}footer{border-top:1px solid var(--border);padding:32px 0;text-align:center;color:var(--muted);font-size:.88rem}@media (max-width:768px){.container{padding:36px 18px}h1{font-size:2rem;line-height:1.25}.hero{padding:28px 20px 130px}.hero-content{flex-direction:column;align-items:center;text-align:center}.portrait{width:150px;margin-bottom:8px}.hero-badges,.profile-links{justify-content:center}.navbar{flex-direction:column;gap:10px;padding:12px 20px}.navbar nav{gap:10px 14px;flex-wrap:wrap;justify-content:center}.navbar a{margin-left:0}.theme-toggle{margin-left:4px}section{margin-bottom:48px}}.fade-in{opacity:0;transform:translateY(15px);transition:opacity .7s ease,transform .7s ease}.fade-in.visible{opacity:1;transform:translateY(0)}.pub-controls{align-items:center;justify-content:space-between;gap:14px;margin-bottom:44px}.chips,.pub-controls{display:flex;flex-wrap:wrap}.chips{gap:8px}.chip{font:inherit;font-size:.85rem;font-weight:600;padding:5px 14px;border-radius:20px;border:1px solid var(--border);background:var(--surface);color:var(--brand);cursor:pointer;transition:background .2s,color .2s}.chip:hover{border-color:var(--brand)}.chip-active{background:var(--brand-solid);border-color:var(--brand-solid);color:#fff}.chip-count{opacity:.7;margin-left:2px}.pub-search{font:inherit;font-size:.9rem;width:260px;max-width:100%;padding:7px 14px;border-radius:20px;border:1px solid var(--border);background:var(--bg);color:var(--text)}.pub-search:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(var(--brand-rgb),.2)}.no-results{color:var(--muted);text-align:center;padding:40px 0}.publication-item{margin-bottom:28px;padding:0 0 28px 16px;border-bottom:1px solid var(--border);border-left:3px solid transparent;transition:border-color .25s ease,background .25s ease}.publication-item:hover{border-left-color:var(--brand-solid)}.publication-item:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.pub-authors{font-size:.9rem;color:var(--muted);margin-bottom:4px}.pub-authors .me,.pub-title{color:var(--text);font-weight:600}.pub-title{font-size:1.02rem;margin:4px 0 6px;line-height:1.5}.pub-venue{font-size:.92rem;color:var(--muted)}.doi{color:var(--brand);font-weight:500}.badge{display:inline-block;font-size:.68rem;font-weight:700;padding:2px 8px;border-radius:20px;margin-left:9px;vertical-align:middle;letter-spacing:.4px;text-transform:uppercase;position:relative;top:-1px}.badge-published{background:var(--badge-published-bg);color:var(--badge-published-fg)}.badge-review{background:var(--badge-review-bg);color:var(--badge-review-fg)}.badge-prep{background:var(--badge-prep-bg);color:var(--badge-prep-fg)}.badge-accepted{background:var(--badge-accepted-bg);color:var(--badge-accepted-fg)}.timeline{border-left:2px solid var(--border);padding-left:24px;margin-left:6px}.timeline-item{position:relative;margin-bottom:24px}.timeline-item:last-child{margin-bottom:0}.timeline-item:before{content:"";position:absolute;left:-31px;top:7px;width:10px;height:10px;border-radius:50%;background:var(--brand-solid);border:2px solid var(--bg);box-shadow:0 0 0 2px var(--brand-solid);transition:transform .25s ease,box-shadow .25s ease}.timeline-item:hover:before{transform:scale(1.35);box-shadow:0 0 0 4px rgba(var(--brand-rgb),.3)}.timeline-date{font-size:.82rem;color:var(--muted);font-weight:500;letter-spacing:.2px;margin-bottom:2px;text-transform:uppercase}.timeline-title{font-weight:600;font-size:.98rem;color:var(--text);line-height:1.4}.timeline-title.news-text{font-weight:500;line-height:1.55}.timeline-sub{color:var(--muted);font-size:.9rem;margin-top:2px}.skills-grid{display:flex;flex-direction:column;gap:14px}.skills-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.skills-label{font-weight:600;font-size:.88rem;min-width:150px;color:var(--text)}.skill-tag{display:inline-block;background:var(--surface);color:var(--brand);border:1px solid var(--border);border-radius:4px;padding:2px 10px;font-size:.83rem;font-weight:500;transition:background .2s,color .2s,transform .2s}.skill-tag:hover{background:var(--brand-solid);color:#fff;transform:translateY(-2px)}.container a{color:var(--brand);text-decoration:none;position:relative;transition:color .2s}.container a:after{content:"";position:absolute;width:0;height:1px;left:0;bottom:-2px;background:var(--brand);transition:width .25s ease}.container a:hover:after{width:100%}.badge:after,.profile-links a:after,.skill-tag:after{display:none}.hobby-intro{color:var(--muted);margin-bottom:40px}.gallery-section{margin-top:60px}.gallery-title{font-size:1.35rem;margin-bottom:28px;color:var(--brand)}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:12px;gap:12px}.gallery-item{aspect-ratio:4/3;overflow:hidden;border-radius:8px;border:1px solid var(--border);cursor:pointer;transition:transform .35s ease,box-shadow .35s ease}.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease,filter .5s ease;display:block}.gallery-item:hover{transform:translateY(-5px);box-shadow:0 12px 28px var(--shadow)}.gallery-item:hover img{transform:scale(1.06);filter:brightness(1.04)}.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.88);display:flex;justify-content:center;align-items:center;animation:fadeIn .35s ease;z-index:999}.lightbox img{max-width:90%;max-height:85vh;border-radius:8px;animation:zoomIn .35s ease;box-shadow:0 20px 60px rgba(0,0,0,.5)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes zoomIn{0%{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.fade-in{opacity:1;transform:none}}.flow-cylinder{position:absolute;left:0;top:0;border-radius:50%;border:1px solid rgba(var(--brand-rgb),.5);background:rgba(var(--brand-rgb),.1);pointer-events:none;will-change:transform}