:root{color-scheme:dark;--bg: #0b0e14;--nav-bg: rgba(11, 14, 20, 0.78);--bg-elev: #131722;--bg-elev-2: #1a1f2c;--text: #ffffff;--text-dim: #e6e4de;--text-faint: #a8a6a0;--accent: #b48eea;--accent-soft: rgba(180, 142, 234, 0.16);--accent-dim: #8f68c2;--border: rgba(255, 255, 255, 0.09);--border-strong: rgba(255, 255, 255, 0.18);--font-display: 'Fraunces', Georgia, serif;--font-body: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;--font-mono: 'IBM Plex Mono', ui-monospace, 'SF Mono', 'Cascadia Code', 'Roboto Mono', Consolas, monospace;--content-w: 740px;--wide-w: 880px;--nav-h: 64px}@media (prefers-color-scheme: light){:root{color-scheme:light;--bg: #ffffff;--nav-bg: rgba(255, 255, 255, 0.78);--bg-elev: #f6f6f6;--bg-elev-2: #ececec;--text: #0a0a0a;--text-dim: #47474a;--text-faint: #7a7a7d;--accent: #6a2bc2;--accent-soft: rgba(106, 43, 194, 0.1);--accent-dim: #52218f;--border: rgba(0, 0, 0, 0.1);--border-strong: rgba(0, 0, 0, 0.2)}}:root[data-theme="dark"]{color-scheme:dark;--bg: #0b0e14;--nav-bg: rgba(11, 14, 20, 0.78);--bg-elev: #131722;--bg-elev-2: #1a1f2c;--text: #ffffff;--text-dim: #e6e4de;--text-faint: #a8a6a0;--accent: #b48eea;--accent-soft: rgba(180, 142, 234, 0.16);--accent-dim: #8f68c2;--border: rgba(255, 255, 255, 0.09);--border-strong: rgba(255, 255, 255, 0.18)}:root[data-theme="light"]{color-scheme:light;--bg: #ffffff;--nav-bg: rgba(255, 255, 255, 0.78);--bg-elev: #f6f6f6;--bg-elev-2: #ececec;--text: #0a0a0a;--text-dim: #47474a;--text-faint: #7a7a7d;--accent: #6a2bc2;--accent-soft: rgba(106, 43, 194, 0.1);--accent-dim: #52218f;--border: rgba(0, 0, 0, 0.1);--border-strong: rgba(0, 0, 0, 0.2)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}h1,h2,h3{font-family:var(--font-display);font-weight:600;margin:0;text-wrap:balance}p{margin:0 0 1em;color:var(--text-dim)}a{color:inherit;text-decoration:none}::selection{background:var(--accent-soft);color:var(--text)}.text-link{color:var(--accent)}.text-link:hover{text-decoration:underline}.eyebrow{font-family:var(--font-mono);font-size:0.72rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--accent);display:inline-block;margin-bottom:0.9rem}#topnav{position:fixed;top:0;left:0;right:0;z-index:100;height:var(--nav-h);display:flex;align-items:center;background:var(--nav-bg);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.nav-inner{width:100%;max-width:1080px;margin:0 auto;padding:0 1.5rem;display:flex;align-items:center;justify-content:space-between}.brand{font-family:var(--font-mono);font-weight:700;letter-spacing:0.05em;color:var(--accent);font-size:1.4rem}.nav-links{display:flex;align-items:center;gap:1.9rem;list-style:none;margin:0;padding:0}.nav-links a{font-family:var(--font-mono);font-size:0.78rem;letter-spacing:0.04em;color:var(--text-dim);text-transform:uppercase;position:relative;padding:0.3rem 0;transition:color .15s ease}.nav-links a:hover,.nav-links a.active{color:var(--text)}.nav-links a.active::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:var(--accent)}.nav-links a.external{color:var(--text-dim)}#theme-toggle{width:34px;height:34px;border-radius:50%;border:1px solid var(--border-strong);background:transparent;color:var(--text-dim);cursor:pointer;display:flex;align-items:center;justify-content:center;margin-left:1.6rem;transition:border-color .15s ease, color .15s ease}#theme-toggle:hover{color:var(--accent);border-color:var(--accent)}#theme-toggle svg{width:16px;height:16px}.nav-toggle{display:none}@media (max-width: 780px){.nav-links{position:fixed;top:var(--nav-h);left:0;right:0;background:var(--bg);border-bottom:1px solid var(--border);flex-direction:column;align-items:flex-start;padding:1.2rem 1.5rem 1.6rem;gap:1.1rem;transform:translateY(-8px);opacity:0;pointer-events:none;transition:opacity .18s ease, transform .18s ease}.nav-links.open{opacity:1;transform:translateY(0);pointer-events:auto}.nav-toggle{display:flex;flex-direction:column;gap:4px;width:30px;background:none;border:none;cursor:pointer}.nav-toggle span{height:1px;background:var(--text);display:block}}section{padding:clamp(3.5rem, 7vw, 6rem) 1.5rem;scroll-margin-top:var(--nav-h)}.wrap{max-width:var(--content-w);margin:0 auto}.wrap-wide{max-width:800px;margin-left:calc((100% - var(--content-w)) / 2);margin-right:auto}.section-head{max-width:var(--content-w);margin:0 auto 2.6rem}.section-head h2{font-size:clamp(1.6rem, 1.25rem + 1.4vw, 2.2rem);margin-bottom:0.7rem}.section-head p{max-width:56ch}.pub-stats{display:flex;gap:1.6rem;margin-top:1rem;font-family:var(--font-mono);font-size:0.8rem;color:var(--text-faint)}.pub-stats strong{color:var(--text);font-weight:600}.reveal{opacity:0;transform:translateY(14px);transition:opacity .6s ease, transform .6s ease}.reveal.is-visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion: reduce){.reveal{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}}#home{padding-top:calc(var(--nav-h) + clamp(3rem, 8vw, 6rem));position:relative;overflow:hidden}#home::before{content:"";position:absolute;top:-10%;right:-10%;width:640px;height:640px;background:radial-gradient(circle, var(--accent-soft) 0%, transparent 68%);filter:blur(10px);pointer-events:none}#home::after{content:"";position:absolute;inset:0;opacity:0.5;background-image:radial-gradient(circle, var(--border-strong) 1px, transparent 1px);background-size:26px 26px;mask-image:linear-gradient(to bottom, #000, transparent 85%);pointer-events:none}.hero-inner{position:relative;max-width:var(--content-w);margin:0 auto}.hero-name{font-size:clamp(1.7rem, 1.3rem + 1.7vw, 2.7rem);line-height:1.08;margin-bottom:0.6rem;text-align:center}.hero-role{font-family:var(--font-body);font-size:1.05rem;color:var(--text-dim);margin-bottom:1.6rem;text-align:center}.hero-role strong{color:var(--text);font-weight:600}.hero-role-sep{color:var(--text-faint);margin:0 0.3em}.hero-photo{float:right;width:200px;height:200px;border-radius:50%;object-fit:cover;border:1px solid var(--border-strong);box-shadow:0 0 0 8px var(--bg-elev);margin:0.2rem 0 1.4rem 2.2rem;shape-outside:circle(50%);shape-margin:0.9rem}.hero-inner p{font-size:1rem}.hero-outro{margin-top:2.4rem}@media (max-width: 640px){.hero-photo{float:none;width:130px;height:130px;margin:0 0 1.4rem;shape-outside:none}}.tag-cloud{max-width:var(--content-w);margin:2.4rem auto 0;clear:both;display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:0.9rem 1.4rem;text-align:center}.tag{font-family:var(--font-mono);font-size:0.74rem;padding:0.2rem 0;color:var(--text-dim);text-transform:uppercase;letter-spacing:0.02em;transition:color .15s ease}.tag:hover{color:var(--accent)}.tag-xl{font-size:1.05rem;color:var(--text);font-weight:500}.tag-l{font-size:0.86rem;color:var(--text-dim)}.tag-m{font-size:0.78rem;color:var(--text-dim)}.tag-s{font-size:0.64rem;color:var(--text-faint)}.tag-c1{color:#0a7568}.tag-c2{color:#1a6fb0}.tag-c3{color:#0e7550}.tag-c4{color:#2e55b8}.tag-c5{color:#087478}.tag-c6{color:#1d7a68}:root[data-theme="dark"] .tag-c1{color:#5ee6d1}:root[data-theme="dark"] .tag-c2{color:#6bc9f2}:root[data-theme="dark"] .tag-c3{color:#5fe0a0}:root[data-theme="dark"] .tag-c4{color:#7fa8f5}:root[data-theme="dark"] .tag-c5{color:#4fd6c4}:root[data-theme="dark"] .tag-c6{color:#8fe0d0}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .tag-c1{color:#5ee6d1}:root:not([data-theme="light"]) .tag-c2{color:#6bc9f2}:root:not([data-theme="light"]) .tag-c3{color:#5fe0a0}:root:not([data-theme="light"]) .tag-c4{color:#7fa8f5}:root:not([data-theme="light"]) .tag-c5{color:#4fd6c4}:root:not([data-theme="light"]) .tag-c6{color:#8fe0d0}}#publications .section-head{text-align:center}#publications .section-head p{margin-left:auto;margin-right:auto}#publications .pub-stats{justify-content:center}.pub-year-group{display:grid;grid-template-columns:84px 1fr;gap:1.2rem;margin-bottom:2.4rem;padding-top:1.6rem;border-top:1px solid var(--border)}.pub-year-group:first-child{padding-top:0;border-top:none}.pub-year{font-family:var(--font-mono);font-size:1.3rem;color:var(--text-faint);padding-top:0.15rem}.pub-list{display:flex;flex-direction:column;gap:1.5rem}.pub-item{border-bottom:1px solid var(--border);padding-bottom:1.5rem}.pub-item:last-child{border-bottom:none;padding-bottom:0}.pub-title{font-family:var(--font-display);font-size:1.08rem;font-weight:600;line-height:1.4;margin-bottom:0.4rem}.pub-note{color:var(--text-faint);font-family:var(--font-mono);font-size:0.7rem;font-weight:400}.pub-authors{font-size:0.86rem;color:var(--text-dim);margin-bottom:0.6rem}.pub-authors b{color:var(--text);font-weight:600}.pub-collab{color:var(--text-faint)}.pub-tags{display:flex;flex-wrap:wrap;gap:0.5rem}.pub-tag{font-family:var(--font-mono);font-size:0.68rem;letter-spacing:0.03em;color:var(--text-faint);border:1px solid var(--border);border-radius:3px;padding:0.18rem 0.5rem}a.pub-tag:hover{color:var(--accent);border-color:var(--accent)}.pub-categories{margin-top:0.4rem;font-family:var(--font-mono);font-size:0.76rem;letter-spacing:0.02em;word-spacing:0.6em;color:var(--text-faint)}.pub-tag--arxiv{background:#8a1010;border:none;font-weight:700;letter-spacing:0.02em;color:#ffffff}.pub-tag--citations{background:#5a5a5a;border:none;font-weight:700;letter-spacing:0.02em;color:#ffffff}.pub-tag--thesis{background:#8f5ae8;border:none;font-weight:700;letter-spacing:0.02em;color:#ffffff}a.pub-tag--thesis:hover{color:#ffffff;border-color:transparent;opacity:0.82}a.pub-tag--arxiv:hover{color:#ffffff;border-color:transparent;opacity:0.82}.pub-tag--journal{border:none;font-weight:700;letter-spacing:0.02em;color:#ffffff}a.pub-tag--journal:hover{color:#ffffff;border-color:transparent;opacity:0.82}.pub-tag--journal[data-journal="PRD"]{background:#2a78d6}.pub-tag--journal[data-journal="JCAP"]{background:#1baf7a}.pub-tag--journal[data-journal="Phys. Rept."]{background:#eb6834}.pub-tag--journal[data-journal="Phys. Dark Univ."]{background:#eda100}.pub-tag--journal[data-journal="NeurIPS"]{background:#e87ba4}.pub-tag--journal[data-journal="MNRAS"]{background:#008300}.pub-tag--journal[data-journal="JHEAp"]{background:#4a3aa7}.pub-tag--journal[data-journal="JHEP"]{background:#e34948}:root[data-theme="dark"] .pub-tag--journal[data-journal="PRD"]{background:#3987e5}:root[data-theme="dark"] .pub-tag--journal[data-journal="JCAP"]{background:#199e70}:root[data-theme="dark"] .pub-tag--journal[data-journal="Phys. Rept."]{background:#d95926}:root[data-theme="dark"] .pub-tag--journal[data-journal="Phys. Dark Univ."]{background:#c98500}:root[data-theme="dark"] .pub-tag--journal[data-journal="NeurIPS"]{background:#d55181}:root[data-theme="dark"] .pub-tag--journal[data-journal="MNRAS"]{background:#008300}:root[data-theme="dark"] .pub-tag--journal[data-journal="JHEAp"]{background:#9085e9}:root[data-theme="dark"] .pub-tag--journal[data-journal="JHEP"]{background:#e66767}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .pub-tag--journal[data-journal="PRD"]{background:#3987e5}:root:not([data-theme="light"]) .pub-tag--journal[data-journal="JCAP"]{background:#199e70}:root:not([data-theme="light"]) .pub-tag--journal[data-journal="Phys. Rept."]{background:#d95926}:root:not([data-theme="light"]) .pub-tag--journal[data-journal="Phys. Dark Univ."]{background:#c98500}:root:not([data-theme="light"]) .pub-tag--journal[data-journal="NeurIPS"]{background:#d55181}:root:not([data-theme="light"]) .pub-tag--journal[data-journal="MNRAS"]{background:#008300}:root:not([data-theme="light"]) .pub-tag--journal[data-journal="JHEAp"]{background:#9085e9}:root:not([data-theme="light"]) .pub-tag--journal[data-journal="JHEP"]{background:#e66767}}@media (max-width: 640px){.pub-year-group{grid-template-columns:1fr;gap:0.5rem}.wrap-wide{margin-left:auto}.code-subsection{margin-left:auto}}#seminars .section-head{text-align:center}#seminars .section-head p{margin-left:auto;margin-right:auto}.seminars-layout{max-width:880px;margin-left:calc((100% - var(--content-w)) / 2);margin-right:auto;display:grid;grid-template-columns:0.85fr 0.8fr;gap:2.5rem;align-items:start}.seminars-map-wrap{position:sticky;top:calc(var(--nav-h) + 1.5rem)}#seminars-map{width:100%;height:360px;border-radius:6px;border:1px solid var(--border);background:var(--bg-elev)}.seminars-layout .timeline{transform:translateX(-1.5rem)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--bg-elev);color:var(--text);box-shadow:0 4px 16px rgba(0,0,0,0.25)}.leaflet-popup-content{font-family:var(--font-body);font-size:0.86rem;line-height:1.5}.leaflet-popup-content strong{font-family:var(--font-display);font-weight:600}.leaflet-container a.leaflet-popup-close-button{color:var(--text-faint)}.leaflet-bar a{background:var(--bg-elev);color:var(--text);border-bottom:1px solid var(--border)}.leaflet-bar a:hover{background:var(--bg-elev-2)}@media (max-width: 900px){.seminars-layout{grid-template-columns:1fr;margin-left:auto}.seminars-map-wrap{position:static}#seminars-map{height:320px}.seminars-layout .timeline{transform:none}}.timeline{position:relative;padding-left:1.8rem}.timeline::before{content:"";position:absolute;left:4px;top:6px;bottom:6px;width:1px;background:var(--border-strong)}.tl-year{font-family:var(--font-mono);color:var(--accent);font-size:0.85rem;letter-spacing:0.08em;margin:2rem 0 0.9rem;position:relative}.tl-year:first-child{margin-top:0}.tl-item{position:relative;padding:0 0 1.3rem 1.4rem}.tl-item::before{content:"";position:absolute;left:-1.8rem;top:0.35rem;width:9px;height:9px;border-radius:50%;background:var(--bg);border:1px solid var(--accent-dim)}.tl-kind{font-family:var(--font-mono);font-size:0.68rem;text-transform:uppercase;letter-spacing:0.08em;color:var(--text-faint)}.tl-venue{font-family:var(--font-display);font-size:1rem;font-weight:600;margin:0.2rem 0}.tl-venue a:hover{color:var(--accent)}.tl-place{font-size:0.86rem;color:var(--text-dim)}.tl-links{margin-top:0.4rem;display:flex;gap:0.6rem}.tl-links a{font-family:var(--font-mono);font-size:0.72rem;color:var(--accent);border-bottom:1px solid transparent}.tl-links a:hover{border-color:var(--accent)}#codes .section-head{text-align:center}#codes .section-head p{margin-left:auto;margin-right:auto}.code-subsection{max-width:800px;margin-left:calc((100% - var(--content-w)) / 2);margin-right:auto;margin-bottom:2.4rem}.code-subsection:last-child{margin-bottom:0}.code-subhead{font-family:var(--font-mono);font-size:1.1rem;text-transform:uppercase;letter-spacing:0.08em;color:var(--accent);margin-bottom:1rem;font-weight:500;text-align:center}.code-subtext{margin-bottom:1.4rem}.code-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(230px, 1fr));gap:1.1rem}.code-card{background:rgba(59,111,214,0.1);border:1px solid rgba(59,111,214,0.35);border-radius:6px;padding:1.4rem;display:flex;flex-direction:column;gap:0.6rem}.code-card h3{font-family:var(--font-mono);font-size:0.98rem;font-weight:700}.code-card p{font-size:0.86rem;margin:0;flex:1}.code-links{display:flex;gap:0.9rem;margin-top:0.3rem}.code-links a{font-family:var(--font-mono);font-size:0.75rem;color:var(--accent)}.code-links a:hover{text-decoration:underline}.code-card.placeholder{border-style:dashed;opacity:0.6}.code-card.placeholder h3,.code-card.placeholder p,.code-card.placeholder a{color:var(--text-faint)}#contact .section-head{text-align:center}#contact .section-head p{margin-left:auto;margin-right:auto}.contact-grid{max-width:680px;margin-left:calc((100% - 680px) / 2 + 2.5rem);margin-right:auto;display:grid;grid-template-columns:0.75fr 1.25fr;gap:1.5rem}.contact-block h3{font-family:var(--font-mono);font-size:0.72rem;text-transform:uppercase;letter-spacing:0.1em;color:var(--text-faint);margin-bottom:0.9rem;font-weight:500}.contact-block:last-child{margin-left:3rem}.contact-block-spaced{margin-top:3rem}.contact-block p{font-size:0.95rem;margin-bottom:0.3rem}.contact-block a.email{color:var(--accent);font-size:1.05rem}.map-embed{margin-top:1.2rem;max-width:300px;border:1px solid var(--border);border-radius:6px;overflow:hidden;line-height:0}.map-embed iframe{display:block;width:100%}.social-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0.7rem}.social-list a{display:flex;align-items:center;gap:0.7rem;font-size:0.95rem;color:var(--text-dim);transition:color .15s ease}.social-list a:hover{color:var(--accent)}.social-list svg{width:16px;height:16px;flex-shrink:0}.social-icon[data-icon="linkedin"]{color:#0a66c2}.social-icon[data-icon="orcid"]{color:#a6ce39}.social-icon[data-icon="inspire"]{color:#1a5fb4}.social-icon[data-icon="github"]{color:#181717}:root[data-theme="dark"] .social-icon[data-icon="github"]{color:#ffffff}@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .social-icon[data-icon="github"]{color:#ffffff}}@media (max-width: 640px){.contact-grid{grid-template-columns:1fr;gap:2.2rem;margin-left:auto}.contact-block:last-child{margin-left:0}}footer{padding:2.5rem 1.5rem;text-align:center;border-top:1px solid var(--border)}footer p{font-family:var(--font-mono);font-size:0.72rem;color:var(--text-faint);margin:0;letter-spacing:0.03em}.footer-dot{opacity:0.5}.notfound{min-height:calc(100vh - var(--nav-h));margin-top:var(--nav-h);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2rem}.notfound h1{font-size:clamp(2.4rem, 2rem + 2vw, 4rem);margin-bottom:0.8rem}.notfound p{max-width:40ch;margin:0 auto 1.6rem}.notfound a{color:var(--accent)}.notfound a:hover{text-decoration:underline}
