:root{
  --bg:#fafaf9;--surface:#fff;--text:#1c1917;--muted:#6b6560;--line:#e7e5e4;
  --accent:#0f6e6e;--accent-soft:#e3f2f1;--accent-text:#0b5757;
  --radius:12px;--max:1040px;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#121110;--surface:#1b1a19;--text:#ecebe9;--muted:#a09a94;--line:#2e2c2a;
    --accent:#4fc3c0;--accent-soft:#163131;--accent-text:#7fd9d6;
  }
}
:root[data-theme="dark"]{
  --bg:#121110;--surface:#1b1a19;--text:#ecebe9;--muted:#a09a94;--line:#2e2c2a;
  --accent:#4fc3c0;--accent-soft:#163131;--accent-text:#7fd9d6;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);
  font:17px/1.65 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;-webkit-font-smoothing:antialiased}
a{color:var(--accent-text);text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{text-decoration-thickness:2px}
h1,h2,h3{line-height:1.25;letter-spacing:-.01em}
h1{font-size:2.3rem;margin:0 0 .4em}
h2{font-size:1.4rem;margin:2.2em 0 .6em}
h3{font-size:1.05rem;margin:1.4em 0 .3em}
.wrap{max-width:var(--max);margin:0 auto;padding:0 20px}
.skip{position:absolute;left:-999px}.skip:focus{left:10px;top:10px;background:var(--surface);padding:8px;z-index:9}

header.site{position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--bg) 88%,transparent);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
header.site .wrap{display:flex;align-items:center;gap:20px;height:58px}
.brand{font-weight:700;color:var(--text);text-decoration:none;font-size:1.05rem}
nav.main{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap}
nav.main a{color:var(--muted);text-decoration:none;padding:6px 12px;border-radius:8px;font-size:.95rem}
nav.main a:hover{background:var(--accent-soft);color:var(--accent-text)}
nav.main a[aria-current="page"]{color:var(--accent-text);background:var(--accent-soft);font-weight:600}
.theme{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:8px;
  width:36px;height:36px;cursor:pointer;font-size:1rem}
@media(max-width:720px){
  header.site .wrap{height:auto;flex-wrap:wrap;padding-top:8px;padding-bottom:8px}
  nav.main{order:3;width:100%;margin-left:-12px;overflow-x:auto;flex-wrap:nowrap}
  .theme{margin-left:auto}
}

main{padding:40px 0 70px}
.hero{display:grid;grid-template-columns:200px 1fr;gap:36px;align-items:center;margin-bottom:24px}
.hero img{width:200px;height:200px;border-radius:50%;object-fit:cover;border:4px solid var(--surface);
  box-shadow:0 0 0 1px var(--line),0 8px 24px rgba(0,0,0,.08)}
.hero .role{color:var(--muted);margin:0 0 14px}
.hero .lede{font-size:1.1rem;margin:0 0 16px}
.pron{color:var(--muted);font-size:.9rem}
@media(max-width:720px){.hero{grid-template-columns:1fr;text-align:center;justify-items:center}}
.btns{display:flex;gap:10px;flex-wrap:wrap}
@media(max-width:720px){.btns{justify-content:center}}
.btn{display:inline-block;padding:9px 18px;border-radius:999px;border:1px solid var(--line);
  background:var(--surface);color:var(--text);text-decoration:none;font-size:.95rem;font-weight:500}
.btn:hover{border-color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.dark .btn.primary{color:#062}
.social{display:flex;gap:16px;flex-wrap:wrap;margin-top:16px;font-size:.92rem}
@media(max-width:720px){.social{justify-content:center}}
.social a{color:var(--muted)}.social a:hover{color:var(--accent-text)}

.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px}
.card h3{margin-top:0}
.card p{margin:.4em 0;color:var(--muted);font-size:.97rem}
.tag{display:inline-block;font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;
  padding:2px 9px;border-radius:999px;background:var(--accent-soft);color:var(--accent-text);margin-bottom:6px}
.tag.alt{background:var(--line);color:var(--muted)}

.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin:30px 0}
.stat{text-align:center;padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
.stat b{display:block;font-size:1.8rem;color:var(--accent-text)}
.stat span{color:var(--muted);font-size:.88rem}

ul.plain{list-style:none;padding:0;margin:0}
ul.plain li{padding:10px 0;border-bottom:1px solid var(--line)}
ul.plain li:last-child{border:0}
.when{color:var(--muted);font-size:.9rem;white-space:nowrap}
.row{display:flex;justify-content:space-between;gap:16px}
@media(max-width:600px){.row{flex-direction:column;gap:0}}

/* publications */
.controls{position:sticky;top:58px;background:var(--bg);padding:12px 0;z-index:3;border-bottom:1px solid var(--line)}
.controls input{width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:10px;
  background:var(--surface);color:var(--text);font:inherit}
.controls input:focus{outline:2px solid var(--accent);border-color:transparent}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.chip{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:999px;
  padding:4px 12px;font:inherit;font-size:.85rem;cursor:pointer}
.chip[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}
.count{color:var(--muted);font-size:.9rem;margin:14px 0 0}
.year{font-size:1.2rem;margin:1.8em 0 .3em;color:var(--accent-text);border-bottom:2px solid var(--accent-soft);padding-bottom:4px}
.pub{padding:12px 0;border-bottom:1px solid var(--line)}
.pub .t{font-weight:600;line-height:1.4}
.pub .t a{color:var(--text);text-decoration:none}.pub .t a:hover{color:var(--accent-text);text-decoration:underline}
.pub .a,.pub .j{color:var(--muted);font-size:.93rem}
.pub .a b{color:var(--text)}
.pub .j em{color:var(--text)}
mark{background:#ffe58a;color:#000;border-radius:2px}

footer.site{border-top:1px solid var(--line);padding:26px 0;color:var(--muted);font-size:.88rem}
footer.site .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
@media print{header.site,footer.site,.controls,.theme{display:none}}
