:root{
  --bg:#fbfaf7; --surface:#ffffff; --ink:#1c1f24; --muted:#5d636d; --faint:#6b717a;
  --line:#e6e2da; --accent:#1f5c4f; --accent-soft:#e7efec;
  --serif: Charter, "Bitstream Charter", "Iowan Old Style", "Sitka Text", Cambria, Georgia, serif;
  --sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --max: 46rem; --wide: 64rem;
}
@media (prefers-color-scheme: dark){
  :root{ --bg:#14171b; --surface:#1b1f24; --ink:#e8e6e1; --muted:#a7adb6; --faint:#959ba4;
    --line:#2c3138; --accent:#7cc4b0; --accent-soft:#1e2b28; }
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;color-scheme:light dark;scroll-padding-top:1rem}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.65 var(--sans)}
a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.skip{position:absolute;left:-999px;top:0;background:var(--surface);padding:.5rem 1rem}
.skip:focus{left:1rem}
.wrap{max-width:var(--max);margin:0 auto;padding:0 1.25rem}
.wide{max-width:var(--wide)}

/* header */
.site-head{border-bottom:1px solid var(--line)}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:1rem;padding-bottom:1rem;flex-wrap:wrap}
.brand{font-family:var(--serif);font-size:1.15rem;color:var(--ink);text-decoration:none;font-weight:600}
.nav{display:flex;gap:1.25rem;flex-wrap:wrap;font-size:.95rem}
.nav a{color:var(--muted);text-decoration:none}
.nav a:hover,.nav a[aria-current]{color:var(--ink)}

/* type */
h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.2;letter-spacing:-.005em}
h1{font-size:clamp(2rem,5vw,2.9rem);margin:0 0 1rem}
h2{font-size:1.5rem;margin:0 0 1rem}
h3{font-size:1.1rem;margin:0 0 .35rem}
.kicker{font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin:0 0 .75rem;font-weight:600}
.lede{font-size:1.2rem;color:var(--muted);margin:0 0 1.5rem;max-width:38rem}
p{margin:0 0 1rem}
section{padding:3.25rem 0;border-top:1px solid var(--line)}
section:first-of-type{border-top:0}
.hero{padding:4.5rem 0 3rem}

/* focus cards */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:1rem}
.card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:1.25rem}
.card p{margin:0;color:var(--muted);font-size:.95rem}

/* timeline */
.timeline{list-style:none;margin:0;padding:0;border-left:2px solid var(--line)}
.timeline li{position:relative;padding:0 0 1.5rem 1.5rem}
.timeline li::before{content:"";position:absolute;left:-7px;top:.45rem;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--accent)}
.timeline .when{display:block;font-size:.85rem;color:var(--faint);font-variant-numeric:tabular-nums}
.timeline p{margin:.15rem 0 0;color:var(--muted);font-size:.95rem}

/* lists */
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1.75rem}
.plain{list-style:none;margin:0;padding:0}
.plain li{padding:.4rem 0;border-bottom:1px solid var(--line);font-size:.95rem}
.plain li:last-child{border-bottom:0}
.plain .sub{display:block;color:var(--faint);font-size:.85rem}

/* thumbnail strip */
.strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:6px;margin:1.5rem 0}
.strip img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:6px;display:block;background:#fff;border:1px solid var(--line)}
.button{display:inline-block;padding:.6rem 1rem;border-radius:8px;border:1px solid var(--accent);color:var(--accent);text-decoration:none;font-weight:500}
.button:hover{background:var(--accent-soft)}
.links{display:flex;flex-wrap:wrap;gap:.75rem}

/* publications */
.year{font-family:var(--serif);font-size:1.3rem;margin:2.25rem 0 .75rem;color:var(--muted)}
.pub{display:grid;grid-template-columns:64px 1fr;gap:1rem;padding:.9rem 0;border-bottom:1px solid var(--line)}
.pub img{width:64px;height:64px;object-fit:cover;border-radius:6px;background:#fff;border:1px solid var(--line)}
.pub .title{font-weight:600;line-height:1.35;display:block}
.pub .authors{color:var(--muted);font-size:.9rem;display:block;margin-top:.2rem}
.pub .venue{color:var(--faint);font-size:.88rem;display:block}
.pub .pl{font-size:.88rem;margin-top:.25rem;display:flex;gap:.9rem;flex-wrap:wrap}
.tag{display:inline-block;font-size:.72rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);padding:.1rem .45rem;border-radius:4px;margin-left:.35rem;vertical-align:.1em}
.toc{display:flex;gap:.6rem 1.1rem;flex-wrap:wrap;font-size:.92rem;margin:0 0 1rem}
.note{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--accent);padding:1rem 1.25rem;border-radius:6px;color:var(--muted);font-size:.95rem}

/* footer */
.site-foot{border-top:1px solid var(--line);padding:2rem 0 3rem;color:var(--faint);font-size:.88rem}
.site-foot p{margin:.25rem 0}
@media (max-width:520px){ body{font-size:16px} .hero{padding:3rem 0 2rem} section{padding:2.5rem 0} }
@media print{ .site-head .nav,.skip{display:none} body{background:#fff;color:#000} }

.nav a,.toc a{padding:.45rem .2rem}
.button.ghost{border-color:var(--line);color:var(--ink)}
.button.ghost:hover{border-color:var(--accent)}
.after-cards{margin:1.25rem 0 0;color:var(--muted)}
.bio{font-size:.95rem;color:var(--muted)}
.pub.solo{border:0}
.m0{margin:0}
.year .up{font-family:var(--sans);font-size:.8rem;margin-left:.6rem;font-weight:400}
@media (max-width:520px){ .pub .pl a{padding:.35rem 0} .nav{gap:.1rem .8rem;font-size:.92rem} .site-head .wrap{padding-top:.75rem;padding-bottom:.5rem} }
