@import url("https://fonts.googleapis.com/css2?family=Source+Serif+4:opsz,wght@8..60,400;8..60,500;8..60,600;8..60,700&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap");:root{color-scheme:light;--bg: #fbfcff;--bg-alt: #f0f4fc;--bg-card: #ffffff;--border: #d8e1ef;--text: #20304a;--text-muted: #4e5f79;--text-faint: #5c6881;--accent: #2453ac;--accent-fill: #2453ac;--accent-fill-hover: #193e88;--accent-soft: #eaf0ff;--accent-2: #a35c13;--amber-soft: #fff2dc;--teal: #087580;--teal-soft: #e5f5f4;--rose: #b33f65;--rose-soft: #fcebf1;--link: #2453ac;--link-hover: #193e88;--shadow: 0 2px 5px rgba(36, 83, 172, 0.04), 0 8px 24px rgba(36, 83, 172, 0.06);--radius: 10px;--serif: "Source Serif 4", Georgia, "Times New Roman", serif;--sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--maxw: 860px}@media (prefers-color-scheme: dark){:root:not([data-theme]){color-scheme:dark;--bg: #111b2c;--bg-alt: #152137;--bg-card: #17243a;--border: #30425f;--text: #e7edf8;--text-muted: #b2c0d8;--text-faint: #9cacc5;--accent: #a8c2ff;--accent-fill: #315fb6;--accent-fill-hover: #3c6bc4;--accent-soft: #1e3153;--accent-2: #f0ba75;--amber-soft: #332a23;--teal: #79d5d2;--teal-soft: #173638;--rose: #f4a7c0;--rose-soft: #35273d;--link: #a8c2ff;--link-hover: #c8d8ff;--shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 4px 16px rgba(0, 0, 0, 0.25)}}:root[data-theme="dark"]{color-scheme:dark;--bg: #111b2c;--bg-alt: #152137;--bg-card: #17243a;--border: #30425f;--text: #e7edf8;--text-muted: #b2c0d8;--text-faint: #9cacc5;--accent: #a8c2ff;--accent-fill: #315fb6;--accent-fill-hover: #3c6bc4;--accent-soft: #1e3153;--accent-2: #f0ba75;--amber-soft: #332a23;--teal: #79d5d2;--teal-soft: #173638;--rose: #f4a7c0;--rose-soft: #35273d;--link: #a8c2ff;--link-hover: #c8d8ff;--shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 4px 16px rgba(0, 0, 0, 0.25)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}img{max-width:100%}a{color:var(--link);text-decoration-color:transparent;text-underline-offset:3px;transition:color 0.15s ease, text-decoration-color 0.15s ease}a:hover{color:var(--link-hover);text-decoration-color:currentColor;text-decoration-line:underline}a:focus-visible,button:focus-visible,select:focus-visible{outline:3px solid var(--teal);outline-offset:4px}h1,h2,h3,h4{font-family:var(--serif);font-weight:600;line-height:1.25;color:var(--accent);letter-spacing:-0.01em}h1{font-size:2.1rem;margin:0 0 0.4em}h2{font-size:1.5rem;margin:2.2em 0 0.7em;padding-top:0.6em;border-top:1px solid var(--border);color:var(--accent)}h2:first-child{border-top:none;margin-top:0;padding-top:0}h3{font-size:1.15rem;margin:1.6em 0 0.5em}h4{font-size:1rem;margin:1.4em 0 0.4em}p{margin:0 0 1.1em}.container p a:not(.btn){text-decoration-line:underline;text-decoration-color:currentColor;text-decoration-thickness:0.08em;text-underline-offset:0.18em}ul,ol{padding-left:1.3em}li{margin-bottom:0.4em}.container{max-width:var(--maxw);margin:0 auto;padding:0 1.5rem}.wide{max-width:1080px}.site-header{border-bottom:1px solid var(--border);padding-top:4px;background:linear-gradient(90deg, var(--accent) 0% 65%, var(--teal) 65%) top/100% 4px no-repeat,var(--bg-card);position:sticky;top:0;z-index:50}.site-header__inner{max-width:1080px;margin:0 auto;padding:0.9rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:0.75rem}.header-controls{display:flex;align-items:center;gap:0.5rem;flex-shrink:0}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--accent);cursor:pointer}.theme-toggle:hover{background:var(--accent-soft)}.theme-toggle svg{flex-shrink:0}.theme-toggle .theme-icon--sun{display:none}.theme-toggle[data-current-theme="dark"] .theme-icon--moon{display:none}.theme-toggle[data-current-theme="dark"] .theme-icon--sun{display:block}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.brand{font-family:var(--serif);font-weight:600;font-size:1.08rem;color:var(--accent);text-decoration:none;white-space:nowrap}.brand:hover{color:var(--teal);text-decoration:none}.brand .brand__suffix{color:var(--teal);font-weight:400}.nav-toggle{display:none;background:none;border:1px solid var(--border);border-radius:var(--radius);width:38px;height:38px;color:var(--text);font-size:1.1rem;cursor:pointer}nav.primary-nav{display:flex;margin-left:auto}nav.primary-nav>ul{display:flex;align-items:center;gap:0.15rem;list-style:none;margin:0;padding:0;flex-wrap:nowrap;justify-content:flex-end}nav.primary-nav>ul>li{position:relative}nav.primary-nav a{display:block;padding:0.5rem 0.65rem;border-radius:var(--radius);color:var(--text-muted);font-size:0.92rem;font-weight:500;text-decoration:none;white-space:nowrap}nav.primary-nav>ul>li>a:hover{color:var(--accent);background:var(--accent-soft)}nav.primary-nav>ul>li.active>a{color:#fff;background:var(--accent-fill);font-weight:600;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px}.has-children{display:flex;align-items:center}.submenu{list-style:none;margin:0;padding:0.35rem;position:absolute;top:100%;left:0;min-width:190px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity 0.15s ease, transform 0.15s ease, visibility 0.15s}.has-children:hover .submenu,.has-children:focus-within .submenu{opacity:1;visibility:visible;transform:translateY(0)}.submenu a{padding:0.5rem 0.6rem;font-size:0.9rem}.submenu a.active{color:var(--accent);background:var(--accent-soft);font-weight:600;text-decoration:underline;text-underline-offset:4px}@media (max-width: 1000px){.nav-toggle{display:inline-flex;align-items:center;justify-content:center}nav.primary-nav{display:none;position:absolute;top:100%;left:0;right:0;background:var(--bg);border-bottom:1px solid var(--border);box-shadow:var(--shadow)}nav.primary-nav.is-open{display:block}nav.primary-nav>ul{flex-direction:column;align-items:stretch;padding:0.6rem 1rem 1rem;gap:0}nav.primary-nav>ul>li{width:100%}.has-children{flex-direction:column;align-items:stretch}.submenu{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:none;padding-left:0.75rem;display:none}.has-children.is-open .submenu{display:block}}.hero{padding:3.2rem 0 2.6rem;margin:-2.6rem 0 2.6rem;border-bottom:1px solid var(--border);background:radial-gradient(ellipse at 0% 0%, var(--accent-soft), transparent 65%),radial-gradient(ellipse at 100% 20%, var(--teal-soft), transparent 60%),linear-gradient(120deg, var(--bg-card), var(--teal-soft))}.hero__inner{max-width:1080px;margin:0 auto;padding:0 1.5rem;display:grid;grid-template-columns:auto 1fr;gap:2.2rem;align-items:center}.hero__photo{width:148px;height:148px;border-radius:50%;object-fit:cover;border:5px solid var(--bg-card);box-shadow:0 0 0 2px var(--teal),var(--shadow);background:var(--bg-alt)}.hero__photo--placeholder{display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:2.6rem;color:var(--accent);background:var(--accent-soft)}.hero h1{font-size:2.15rem;margin-bottom:0.15em;color:var(--accent)}.hero__role{color:var(--teal);font-weight:600;margin-bottom:0.35em;font-size:1.05rem}.hero__affil{color:var(--text-muted);margin-bottom:0.4em;max-width:60ch}.hero__emails{display:flex;flex-wrap:wrap;align-items:center;gap:0.35rem 0.6rem;margin-bottom:0.55rem;font-size:0.9rem}.hero__email-address{display:inline-flex;align-items:center;gap:0.6rem}.hero__email-icon{width:19px;height:19px;flex-shrink:0;color:var(--teal)}.hero__email-separator{color:var(--text-muted)}.hero__orcid{margin:0;font-size:0.9rem}.hero__orcid a{display:inline-flex;align-items:center;gap:0.5rem}.hero__orcid img{width:20px;height:20px;flex-shrink:0}@media (max-width: 640px){.site-header__inner{padding:0.75rem 1rem;gap:0.5rem}.brand{font-size:1rem}.hero__inner{grid-template-columns:1fr;text-align:center;justify-items:center}.hero__emails{flex-direction:column}.hero__email-separator{display:none}}.btn{display:inline-flex;align-items:center;gap:0.4em;padding:0.45rem 0.85rem;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-card);color:var(--text);font-size:0.88rem;font-weight:500;text-decoration:none !important}.btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.btn--accent{background:var(--accent-fill);border-color:var(--accent-fill);color:#fff}.btn--accent:hover{background:var(--accent-fill-hover);border-color:var(--accent-fill-hover);color:#fff}.tag{display:inline-block;font-size:0.72rem;font-weight:600;letter-spacing:0.02em;text-transform:uppercase;color:var(--teal);background:var(--teal-soft);border-radius:4px;padding:0.15em 0.5em}main{padding:2.6rem 0 4rem}.page-title{margin-bottom:0.3em;color:var(--accent)}.page-title::after{content:"";display:block;width:76px;height:4px;margin-top:0.65rem;border-radius:2px;background:linear-gradient(90deg, var(--accent), var(--teal))}.page-lede{color:var(--text-muted);font-size:1.05rem;margin-bottom:2em;max-width:68ch}.callout{border:1px solid var(--border);background:var(--amber-soft);border-left:4px solid var(--accent-2);border-radius:var(--radius);padding:0.9rem 1.1rem;margin:0 0 2em;font-size:0.94rem;color:var(--text-muted)}.callout a{color:var(--accent-2)}.callout strong{color:var(--accent-2)}.subnav{display:flex;gap:0.4rem;margin-bottom:2.2rem;flex-wrap:wrap}.subnav a{padding:0.45rem 0.9rem;border-radius:999px;border:1px solid var(--border);color:var(--text-muted);font-size:0.9rem;font-weight:500;text-decoration:none}.subnav a:hover{color:var(--accent);border-color:var(--accent)}.subnav a.active{background:var(--accent-fill);border-color:var(--accent-fill);color:#fff}.entry-list{list-style:none;margin:0;padding:0}.entry{padding:1.1rem 0;border-bottom:1px solid var(--border);display:flex;gap:1rem}.entry:first-child{padding-top:0}.entry__index{font-family:var(--mono);color:var(--accent);font-size:0.85rem;min-width:2.4em;height:2.4em;padding:0.35em;text-align:center;border-radius:50%;background:var(--accent-soft)}.entry__body{flex:1;min-width:0}.entry__title{font-weight:600;color:var(--accent)}.entry__meta{color:var(--text-muted);font-size:0.94rem;margin-top:0.2em}.entry__venue{font-style:italic}.entry__extra{margin-top:0.35rem;font-size:0.85rem;color:var(--text-faint)}.entry__extra a{color:var(--text-faint)}.entry__links{margin-top:0.45rem;display:flex;gap:0.6rem;flex-wrap:wrap}.entry__links a{font-size:0.82rem;font-weight:600;color:var(--accent);text-decoration:none;border:1px solid var(--border);border-radius:4px;padding:0.15em 0.55em}.entry__links a:hover{border-color:var(--accent);background:var(--accent-soft)}.entry__links a:nth-child(2){color:var(--teal);background:var(--teal-soft)}.timeline{list-style:none;margin:0;padding:0}.timeline li{position:relative;padding:0 0 1.6rem 1.5rem;border-left:2px solid var(--teal);margin:0}.timeline li:last-child{border-color:transparent;padding-bottom:0}.timeline li::before{content:"";position:absolute;left:-5px;top:0.3rem;width:8px;height:8px;border-radius:50%;background:var(--teal)}.timeline__dates{font-family:var(--mono);font-size:0.8rem;color:var(--teal);font-weight:500}.timeline__role{font-weight:600;margin-top:0.15em}.timeline__place{color:var(--text-muted);font-size:0.94rem}.timeline__note{color:var(--text-faint);font-size:0.85rem;margin-top:0.25em}.card-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(260px, 1fr));gap:1rem}.card{--card-accent: var(--accent);--card-soft: var(--accent-soft);border:1px solid var(--border);border-top:4px solid var(--card-accent);background:linear-gradient(155deg, var(--card-soft), var(--bg-card) 75%);border-radius:var(--radius);padding:1.2rem 1.3rem;display:flex;flex-direction:column;gap:0.5rem;box-shadow:var(--shadow)}.card:nth-child(even){--card-accent: var(--teal);--card-soft: var(--teal-soft)}.card-grid--datasets .card:nth-child(4n+1){--card-accent: var(--accent);--card-soft: var(--accent-soft)}.card-grid--datasets .card:nth-child(4n+2){--card-accent: var(--teal);--card-soft: var(--teal-soft)}.card-grid--datasets .card:nth-child(4n+3){--card-accent: var(--accent-2);--card-soft: var(--amber-soft)}.card-grid--datasets .card:nth-child(4n+4){--card-accent: var(--rose);--card-soft: var(--rose-soft)}.card h3{margin:0;font-size:1.02rem;color:var(--card-accent)}.card p{margin:0;color:var(--text-muted);font-size:0.9rem}.card__meta{font-size:0.8rem;color:var(--text-faint)}.card__link{margin-top:auto;font-size:0.85rem;font-weight:600;color:var(--card-accent);text-decoration:none}.card__link:hover{color:var(--card-accent);text-decoration:underline}.card__link::after{content:" →"}.profile-links{display:flex;flex-wrap:wrap;gap:0.65rem}.profile-links a{display:inline-flex;align-items:center;gap:0.6rem;padding:0.4rem 1rem 0.4rem 0.4rem;border:1px solid var(--border);border-radius:999px;background:var(--bg-card);color:var(--text);font-size:0.88rem;font-weight:600;text-decoration:none !important;transition:border-color 0.15s ease, color 0.15s ease, background 0.15s ease}.profile-links a:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.profile-badge{width:28px;height:28px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);font-family:var(--serif);font-weight:700;font-size:0.66rem;letter-spacing:-0.02em;transition:background 0.15s ease, color 0.15s ease}.profile-links a:hover .profile-badge{background:var(--accent-fill);color:#fff}.profile-links a:nth-child(3n+2) .profile-badge{background:var(--teal-soft);color:var(--teal)}.table-wrap{overflow-x:auto;margin-bottom:2rem}table{border-collapse:collapse;width:100%;font-size:0.88rem}th,td{text-align:left;padding:0.55rem 0.8rem;border-bottom:1px solid var(--border);vertical-align:top}th{font-family:var(--sans);font-weight:600;color:var(--accent);background:var(--accent-soft);font-size:0.78rem;text-transform:uppercase;letter-spacing:0.03em;white-space:nowrap}tbody tr:nth-child(even){background:var(--bg-alt)}tbody tr:hover{background:var(--teal-soft)}.map-embed{margin-top:1.5rem;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.map-embed iframe{display:block}.site-footer{border-top:1px solid var(--border);background:linear-gradient(110deg, var(--accent-soft), var(--teal-soft));padding:2rem 0;color:var(--text-faint);font-size:0.85rem}.site-footer__inner{max-width:1080px;margin:0 auto;padding:0 1.5rem;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:0.75rem 1.5rem}.site-footer__links{display:flex;align-items:center;flex-wrap:wrap;gap:0.25rem 1.1rem}.site-footer__links a{display:inline-flex;align-items:center;gap:0.4rem;min-height:40px}.site-footer__links .site-footer__social{width:36px;justify-content:center;gap:0;border-radius:var(--radius)}.site-footer__social:hover{background:var(--accent-soft)}.site-footer__social .footer-icon{width:18px;height:18px;color:currentColor}.site-footer a{color:var(--text-muted)}.site-footer a:hover .footer-icon{color:var(--accent)}.footer-icon{width:16px;height:16px;flex-shrink:0;color:var(--text-faint);transition:color 0.15s ease}@media (max-width: 640px){.site-footer__inner{flex-direction:column;align-items:flex-start}.site-footer__links{width:100%;gap:0.1rem 1.2rem}.site-footer__email{flex-basis:100%}}.section-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));gap:1.5rem;margin-bottom:1rem}.list-plain{list-style:none;padding:0;margin:0}.list-plain li{margin-bottom:0.55em}.list-plain.section-grid{gap:0.65rem}.list-plain.section-grid li{margin:0;padding:0.65rem 0.85rem;border-left:3px solid var(--accent);border-radius:0 var(--radius) var(--radius) 0;background:var(--accent-soft)}.list-plain.section-grid li:nth-child(3n+2){border-color:var(--teal);background:var(--teal-soft)}.muted{color:var(--text-muted)}.small{font-size:0.85rem}hr.rule{border:none;border-top:1px solid var(--border);margin:2.4rem 0}
