:root{--ink: #111;--ink-mid: #444;--ink-light: #777;--ink-faint: #aaa;--bg: #fff;--bg-subtle: #f9f9f9;--rule: #e4e4e4;--accent: #2a5caa;--accent-light: #e8eef8;--tag-bg: #f0f4fa;--tag-color: #2a5caa}*{margin:0;padding:0;box-sizing:border-box}html{scroll-padding-top:3.5rem}body{font-family:"Source Sans 3",sans-serif;background:var(--bg);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased}.nav{position:sticky;top:0;z-index:100;background:#fffffff5;backdrop-filter:blur(8px);border-bottom:1px solid var(--rule)}.nav-inner{max-width:760px;margin:0 auto;padding:0 1.5rem;display:flex;align-items:center;justify-content:space-between;height:3rem}.nav-name{font-family:EB Garamond,serif;font-size:1.05rem;font-weight:500;color:var(--ink);text-decoration:none}.nav-links{display:flex;gap:.1rem}.nav-links a{font-size:.75rem;font-weight:600;color:var(--ink-light);text-decoration:none;padding:.3rem .55rem;border-radius:3px;letter-spacing:.05em;text-transform:uppercase;transition:color .15s,background .15s}.nav-links a:hover{color:var(--ink);background:var(--bg-subtle)}.nav-links a.active{color:var(--accent)}.mobile-toggle{display:none;background:none;border:none;font-size:1.1rem;color:var(--ink-light);cursor:pointer;padding:.4rem}.mobile-nav{display:none;border-bottom:1px solid var(--rule);padding:.5rem 1.5rem .75rem}.mobile-nav.open{display:block}.mobile-nav a{display:block;font-size:.85rem;font-weight:600;color:var(--ink-light);text-decoration:none;padding:.4rem 0;text-transform:uppercase;letter-spacing:.04em}.mobile-nav a:hover{color:var(--ink)}@media(max-width:640px){.nav-links{display:none}.mobile-toggle{display:block}}.page{max-width:760px;margin:0 auto;padding:0 1.5rem}.hero{padding:3rem 0 2.25rem;display:flex;gap:2.25rem;align-items:flex-start}.hero-photo img{width:150px;height:150px;border-radius:50%;object-fit:cover;filter:grayscale(10%);border:3px solid var(--rule)}.hero-text{padding-top:.1rem}.hero-text h1{font-family:EB Garamond,serif;font-size:2rem;font-weight:500;line-height:1.15;margin-bottom:.3rem}.hero-text .subtitle{font-family:EB Garamond,serif;font-size:1.05rem;color:var(--ink-mid);font-style:italic;margin-bottom:.15rem}.hero-text .affil{font-size:.87rem;color:var(--ink-light);margin-bottom:1.1rem}.hero-links{display:flex;gap:.9rem;flex-wrap:wrap;align-items:center}.hero-links a{font-size:.82rem;color:var(--ink-light);text-decoration:none;transition:color .15s;display:flex;align-items:center;gap:.3rem}.hero-links a:hover{color:var(--accent)}.hero-links .sep{color:var(--rule);font-size:.8rem}@media(max-width:540px){.hero{flex-direction:column;align-items:center;text-align:center;gap:1.25rem;padding:2.25rem 0 1.5rem}.hero-links{justify-content:center}.hero-text h1{font-size:1.7rem}}.section{padding:1.75rem 0;border-top:1px solid var(--rule)}.section-heading{font-family:EB Garamond,serif;font-size:1.25rem;font-weight:600;color:var(--ink);margin-bottom:1.1rem;letter-spacing:.01em}.about p{font-family:EB Garamond,serif;font-size:1.05rem;line-height:1.82;color:var(--ink-mid);margin-bottom:.8rem}.about p:last-child{margin-bottom:0}.interests-grid{display:flex;flex-wrap:wrap;gap:.4rem}.interest-tag{font-size:.8rem;font-weight:500;background:var(--tag-bg);color:var(--tag-color);padding:.3rem .7rem;border-radius:4px;border:1px solid #d2ddf5;transition:background .15s}.interest-tag:hover{background:#dde7f7}.pub-year{font-family:JetBrains Mono,monospace;font-size:.75rem;color:var(--ink-faint);margin-top:1.35rem;margin-bottom:.6rem;letter-spacing:.04em;text-transform:uppercase}.pub-year:first-child{margin-top:0}.pub-entry{padding:.65rem 0;border-bottom:1px solid #f4f4f4}.pub-entry:last-child{border-bottom:none}.pub-title{font-family:EB Garamond,serif;font-size:1.02rem;font-weight:500;color:var(--ink);line-height:1.45;margin-bottom:.22rem}.pub-authors{font-family:EB Garamond,serif;font-size:.95rem;color:var(--ink-mid);line-height:1.5;margin-bottom:.18rem}.pub-authors .me{font-weight:600;color:var(--ink)}.pub-venue{font-family:EB Garamond,serif;font-size:.95rem;color:var(--ink-light);font-style:italic;margin-bottom:.4rem}.pub-links{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.pub-link{font-family:"Source Sans 3",sans-serif;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-light);text-decoration:none;padding:.15rem .45rem;border:1px solid var(--rule);border-radius:3px;transition:all .15s}.pub-link:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-light)}.pub-bib-btn{cursor:pointer;background:none;font-family:"Source Sans 3",sans-serif;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-light);padding:.15rem .45rem;border:1px solid var(--rule);border-radius:3px;transition:all .15s}.pub-bib-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-light)}.pub-bib-btn.copied{color:#2e7d32;border-color:#2e7d32;background:#e8f4e8}.pub-abstract-toggle{cursor:pointer;background:none;border:none;font-family:"Source Sans 3",sans-serif;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-light);padding:.15rem 0;transition:color .15s}.pub-abstract-toggle:hover{color:var(--accent)}.pub-abstract{font-family:EB Garamond,serif;font-size:.95rem;color:var(--ink-mid);line-height:1.7;margin-top:.6rem;padding:.7rem .9rem;background:var(--bg-subtle);border-left:2px solid var(--rule);border-radius:0 3px 3px 0;display:none}.pub-abstract.open{display:block}.pub-loading,.pub-error{text-align:center;padding:2rem 0;color:var(--ink-light);font-style:italic;font-size:.9rem}.contact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.25rem}.contact-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint);font-weight:700;margin-bottom:.2rem}.contact-val{font-family:EB Garamond,serif;font-size:1rem;color:var(--ink-mid)}.contact-val a{color:var(--ink-mid);text-decoration:none;transition:color .15s}.contact-val a:hover{color:var(--accent)}.footer{border-top:1px solid var(--rule);margin-top:2.5rem;padding:1.5rem 0;text-align:center;font-size:.77rem;color:var(--ink-faint)}.footer a{color:var(--ink-faint);text-decoration:none}.footer a:hover{color:var(--ink-light)}@media print{.nav,.mobile-toggle,.mobile-nav{display:none}.page{max-width:100%}}
