:root{
  --monarch:#003057; --silver:#828A8F; --sky:#98C5EA;
  --ink:#1c2733; --muted:#55606b; --line:#e4e8ec; --bg:#ffffff; --bg-alt:#f4f7fa;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:"Open Sans",system-ui,Arial,sans-serif;color:var(--ink);
  background:var(--bg);line-height:1.65;font-size:17px}
h1,h2,h3,h4{font-family:"Sora","Open Sans",sans-serif;color:var(--monarch);line-height:1.2;font-weight:700}
h1{font-size:2.3rem;margin:.2em 0}
h2{font-size:1.5rem;margin:2rem 0 .6rem;padding-bottom:.3rem;border-bottom:3px solid var(--sky)}
h3{font-size:1.15rem;margin:1.6rem 0 .4rem;color:var(--monarch)}
a{color:#0a5ca8;text-decoration:none}
a:hover{text-decoration:underline}
.container{max-width:980px;margin:0 auto;padding:2rem 1.25rem 3rem}

/* header */
.site-header{background:var(--monarch);position:sticky;top:0;z-index:10}
.site-header .bar{max-width:1100px;margin:0 auto;padding:.6rem 1.25rem;display:flex;
  align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.brand{color:#fff;font-family:"Sora",sans-serif;font-weight:800;font-size:1.15rem}
.brand:hover{text-decoration:none}
.site-nav ul{list-style:none;display:flex;gap:.25rem;margin:0;padding:0;flex-wrap:wrap}
.site-nav a{color:#dbeafe;padding:.4rem .7rem;border-radius:6px;font-size:.95rem;font-weight:600}
.site-nav a:hover{background:rgba(255,255,255,.12);text-decoration:none;color:#fff}
.site-nav a.active{background:var(--sky);color:var(--monarch)}

/* hero */
.hero{display:flex;gap:1.8rem;align-items:center;flex-wrap:wrap;
  background:linear-gradient(135deg,var(--bg-alt),#fff);border:1px solid var(--line);
  border-radius:14px;padding:1.6rem;margin-bottom:1.4rem}
.hero-photo{width:180px;height:225px;border-radius:12px;object-fit:cover;object-position:top center;
  border:4px solid #fff;box-shadow:0 6px 22px rgba(0,48,87,.18)}
.hero-text{flex:1;min-width:260px}
.hero-text h1{margin-top:0}
.role{font-weight:700;color:var(--monarch);font-size:1.1rem;margin:.2rem 0}
.affil{color:var(--muted);margin:.3rem 0}
.contact-line{font-size:.95rem;margin:.5rem 0 0}

/* stats */
.stats{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:.8rem;
  padding:0;margin:0 0 1rem}
.stats li{background:var(--monarch);color:#fff;border-radius:12px;padding:1rem .6rem;text-align:center}
.stats strong{display:block;font-family:"Sora",sans-serif;font-size:1.7rem;line-height:1}
.stats span{display:block;font-size:.82rem;color:var(--sky);margin-top:.35rem}

/* content lists */
.pubs li,ol li,ul li{margin:.45rem 0}
.pubs{padding-left:1.3rem}
.metric{display:inline-block;background:var(--sky);color:var(--monarch);font-size:.72rem;
  font-weight:700;padding:.08rem .45rem;border-radius:10px;margin-left:.25rem;white-space:nowrap}
.pubs a[href^="https://doi"]{font-size:.82rem;font-weight:700;margin-left:.25rem;text-transform:uppercase}
/* journal vs conference color coding */
ul.paper-list{padding-left:0;list-style:none}
ul.paper-list li{padding:.35rem .6rem;margin:.35rem 0;border-left:4px solid var(--line);border-radius:0 6px 6px 0}
.paper-list li.pub-journal{border-left-color:#003057;background:rgba(0,48,87,.04)}
.paper-list li.pub-conf{border-left-color:#0e7c86;background:rgba(14,124,134,.05)}
.paper-list li.pub-pre{border-left-color:var(--silver);background:rgba(130,138,143,.06)}
.tag{display:inline-block;font-size:.62rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
  padding:.08rem .4rem;border-radius:4px;margin-right:.45rem;vertical-align:middle;color:#fff}
.tag-j{background:#003057}
.tag-c{background:#0e7c86}
.tag-p{background:var(--silver)}
.legend{font-size:.85rem;color:var(--muted);margin:.2rem 0 1rem}
ul.news li{list-style:none}
.book-covers{display:grid;grid-template-columns:repeat(5,1fr);gap:1rem;margin:.5rem 0 1rem;align-items:start}
.book-covers a{display:block}
.book-covers img{display:block;width:100%;aspect-ratio:13/20;object-fit:cover;object-position:center;
  border:1px solid var(--line);border-radius:6px;box-shadow:0 3px 10px rgba(0,0,0,.08);transition:.18s}
.book-covers a:hover img{transform:translateY(-3px);box-shadow:0 10px 22px rgba(0,48,87,.18)}

/* team photo cards */
.people{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1.1rem;margin:.6rem 0 1.6rem}
.person{margin:0;display:flex;flex-direction:column;align-items:center;text-align:center}
.person-photo{width:112px;height:112px;border-radius:50%;object-fit:cover;object-position:top center;
  border:3px solid var(--bg);box-shadow:0 4px 14px rgba(0,48,87,.16);background:var(--bg-alt)}
.person-initials{display:inline-flex;align-items:center;justify-content:center;background:var(--monarch);
  color:var(--sky);font-family:"Sora",sans-serif;font-weight:800;font-size:1.7rem}
.person figcaption{margin-top:.55rem}
.person strong{display:block;color:var(--monarch);font-size:.98rem;line-height:1.2}
.person span{display:block;color:var(--muted);font-size:.82rem;margin-top:.15rem}
html.dark .person-photo{border-color:#16212c}

/* footer */
.site-footer{background:var(--bg-alt);border-top:1px solid var(--line);margin-top:2rem}
.site-footer .container{padding:1.4rem 1.25rem;color:var(--muted);font-size:.9rem}
.site-footer p{margin:.2rem 0}

/* skip link + focus */
.skip-link{position:absolute;left:-999px;top:0;background:var(--monarch);color:#fff;padding:.6rem 1rem;z-index:100}
.skip-link:focus{left:0}
:focus-visible{outline:3px solid var(--sky);outline-offset:2px}

/* header layout + toggles */
.site-header .bar{flex-wrap:nowrap}
.brand{flex:0 0 auto}
.site-nav{margin-left:auto}
.bar-right{display:flex;align-items:center;gap:.4rem;flex:0 0 auto}
.theme-toggle,.nav-toggle{background:rgba(255,255,255,.14);border:0;color:#fff;cursor:pointer;
  width:40px;height:40px;border-radius:8px;font-size:1.05rem;display:inline-flex;align-items:center;justify-content:center}
.theme-toggle:hover,.nav-toggle:hover{background:rgba(255,255,255,.26)}
.nav-toggle{display:none;flex-direction:column;gap:4px}
.nav-toggle span{width:20px;height:2px;background:#fff;border-radius:2px}

/* hero CTAs */
.tagline{color:var(--monarch);font-weight:600;margin:.7rem 0 .2rem;font-size:1.02rem}
.cta{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.8rem}
.btn{display:inline-block;padding:.55rem 1.1rem;border-radius:8px;font-weight:700;font-size:.95rem;
  border:2px solid var(--monarch);color:var(--monarch);background:transparent;transition:.15s}
.btn:hover{background:var(--monarch);color:#fff;text-decoration:none;transform:translateY(-1px)}
.btn-primary{background:var(--monarch);color:#fff}
.btn-primary:hover{background:#00213d}

/* research-area cards */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin:.6rem 0 1rem}
.card{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:1.1rem;
  box-shadow:0 2px 10px rgba(0,48,87,.05);transition:.18s}
.card:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(0,48,87,.12);border-color:var(--sky)}
.card-ico{font-size:1.6rem;line-height:1}
.card h3{margin:.5rem 0 .3rem;border:0}
.card p{margin:0;color:var(--muted);font-size:.92rem}

/* funders band */
.funders{margin-top:1.6rem;border-top:1px solid var(--line);padding-top:1rem}
.funders h2{border:0;font-size:.95rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:.2rem 0 .6rem;padding:0}
.funder-list{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem;padding:0;margin:0}
.funder-list li{background:var(--bg-alt);border:1px solid var(--line);border-radius:20px;
  padding:.3rem .85rem;font-size:.85rem;font-weight:600;color:var(--monarch)}

/* news head */
.news-head{display:flex;align-items:baseline;gap:.7rem;flex-wrap:wrap}
.see-all{font-size:.9rem;font-weight:700}

/* publications controls */
.pub-controls{position:sticky;top:56px;z-index:6;background:var(--bg);border:1px solid var(--line);
  border-radius:12px;padding:.8rem;margin:0 0 1.2rem;box-shadow:0 3px 10px rgba(0,0,0,.05)}
#pub-search{width:100%;padding:.55rem .8rem;border:1px solid var(--line);border-radius:8px;font-size:.95rem;background:var(--bg);color:var(--ink)}
.pub-filters{display:flex;gap:.4rem;flex-wrap:wrap;margin:.6rem 0 .4rem}
.pf{border:1px solid var(--line);background:var(--bg);color:var(--ink);padding:.3rem .85rem;border-radius:20px;font-weight:700;font-size:.82rem;cursor:pointer}
.pf.active{background:var(--monarch);color:#fff;border-color:var(--monarch)}
.year-jump{display:flex;gap:.25rem;flex-wrap:wrap;font-size:.8rem}
.year-jump a{padding:.1rem .4rem;border-radius:5px;font-weight:700}
.year-jump a:hover{background:var(--bg-alt);text-decoration:none}
.pub-count{font-size:.82rem;color:var(--muted);margin:.4rem 0 0}
#pub-list h3{scroll-margin-top:150px}

/* back to top */
.to-top{position:fixed;right:1rem;bottom:1rem;width:44px;height:44px;border-radius:50%;border:0;
  background:var(--monarch);color:#fff;font-size:1.2rem;cursor:pointer;box-shadow:0 4px 14px rgba(0,48,87,.3);z-index:20}
.to-top[hidden]{display:none}

/* reveal-on-scroll — never hides content; only plays a one-time entrance animation */
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.reveal.in{animation:rise .5s ease both}
@media(prefers-reduced-motion:reduce){.reveal.in{animation:none}html{scroll-behavior:auto}}

/* dark mode */
html.dark{--ink:#e6edf3;--muted:#a9b4bf;--line:#2a3742;--bg:#0f1720;--bg-alt:#16212c}
html.dark body{background:var(--bg)}
html.dark h1,html.dark h2,html.dark h3,html.dark h4{color:#cfe3f5}
html.dark h2{border-bottom-color:#24465f}
html.dark a{color:#7db8ec}
html.dark .hero{background:linear-gradient(135deg,#16212c,#0f1720)}
html.dark .card,html.dark .pub-controls,html.dark #pub-search{background:#16212c}
html.dark .btn{color:#cfe3f5;border-color:#cfe3f5}
html.dark .btn:hover{background:#cfe3f5;color:#0f1720}
html.dark .btn-primary{background:#1d3a52;color:#fff;border-color:#1d3a52}
html.dark .stats li,html.dark .funder-list li{background:#16212c}
html.dark .funder-list li{color:#cfe3f5}
html.dark .pf{background:#16212c;color:#e6edf3}
html.dark .paper-list li.pub-journal{background:rgba(152,197,234,.08)}

/* hero motif + photo ring + larger name */
.hero{position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;z-index:0;
  background-image:radial-gradient(rgba(0,48,87,.07) 1.3px,transparent 1.3px);background-size:20px 20px;
  -webkit-mask-image:linear-gradient(180deg,#000,transparent 85%);mask-image:linear-gradient(180deg,#000,transparent 85%)}
.hero>*{position:relative;z-index:1}
.hero-text h1{font-size:2.7rem}
.hero-photo{border:0;box-shadow:0 0 0 4px var(--bg),0 0 0 8px var(--sky),0 12px 28px rgba(0,48,87,.22)}
html.dark .hero::before{background-image:radial-gradient(rgba(152,197,234,.10) 1.3px,transparent 1.3px)}

/* scroll progress */
.scroll-progress{position:fixed;top:0;left:0;height:3px;width:0;background:var(--sky);z-index:40;transition:width .08s linear}

/* heading accents */
main h2{position:relative}
main h2::before{content:"";display:inline-block;width:.55rem;height:1.05rem;background:var(--sky);
  border-radius:3px;margin-right:.6rem;vertical-align:-1px}
main h2.news-head::before,.funders h2::before{display:none}

/* animated content-link underline */
main a:not(.btn):not(.see-all){background-image:linear-gradient(var(--sky),var(--sky));
  background-size:0% 2px;background-position:0 100%;background-repeat:no-repeat;transition:background-size .25s}
main a:not(.btn):not(.see-all):hover{background-size:100% 2px;text-decoration:none}

/* richer footer */
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.3fr;gap:1.6rem;padding-bottom:1rem}
.f-brand{display:flex;gap:.7rem;align-items:flex-start}
.f-mark{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;flex:0 0 auto;
  background:var(--monarch);color:var(--sky);font-family:"Sora",sans-serif;font-weight:800;border-radius:10px}
.f-brand strong{color:var(--monarch);font-family:"Sora",sans-serif}
.f-brand p{margin:.2rem 0 0}
.f-col h4{font-family:"Sora",sans-serif;color:var(--monarch);font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;margin:.2rem 0 .5rem;border:0}
.f-col ul{list-style:none;padding:0;margin:0}
.f-col li{margin:.22rem 0}
.f-col p{margin:0}
.f-bottom{border-top:1px solid var(--line);padding-top:.8rem;margin-top:.4rem}
.f-bottom p{margin:0}
html.dark .f-mark{background:#1d3a52}
@media(max-width:760px){.footer-grid{grid-template-columns:1fr 1fr;gap:1.2rem}}
@media(max-width:460px){.footer-grid{grid-template-columns:1fr}}

/* mobile nav */
@media(max-width:820px){
  .nav-toggle{display:inline-flex}
  .site-nav{flex-basis:100%;order:3;margin-left:0;display:none}
  .site-header.nav-open .site-nav{display:block}
  .site-nav ul{flex-direction:column;gap:.1rem;padding:.5rem 0}
  .site-nav a{display:block;padding:.65rem .7rem;font-size:1rem}
  .site-header .bar{flex-wrap:wrap}
  .pub-controls{position:static}
}

@media(max-width:640px){
  body{font-size:16px}
  h1{font-size:1.8rem}
  .stats{grid-template-columns:repeat(2,1fr)}
  .book-covers{grid-template-columns:repeat(2,1fr)}
  .cards{grid-template-columns:1fr}
  .hero{justify-content:center;text-align:center}
  .cta{justify-content:center}
}
