:root{
  --bg:#FBF8F1;
  --ink:#221D14;
  --muted:#7A705D;
  --accent:#3C4A6B;
  --rule:#DED4BC;
}
*{box-sizing:border-box;}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:Georgia,"Iowan Old Style","Times New Roman",serif;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;}
a:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}

/* ---------- nav ---------- */
.site-nav{border-bottom:1px solid var(--rule);}
.site-nav .inner{
  max-width:880px; margin:0 auto; padding:1.1rem 2rem;
  display:flex; align-items:center; justify-content:space-between; gap:1.5rem; flex-wrap:wrap;
  font-family:"Optima","Segoe UI",Helvetica,Arial,sans-serif;
}
.site-nav .brand{font-size:.95rem; font-weight:600; text-decoration:none; letter-spacing:-.005em;}
.site-nav .links{display:flex; gap:1.4rem; flex-wrap:wrap;}
.site-nav .links a{
  font-size:.78rem; text-transform:uppercase; letter-spacing:.09em;
  color:var(--muted); text-decoration:none; padding-bottom:.2rem; border-bottom:2px solid transparent;
}
.site-nav .links a:hover{color:var(--accent);}
.site-nav .links a[aria-current="page"]{color:var(--accent); border-bottom-color:var(--accent);}

.page{max-width:880px; margin:0 auto; padding:3.5rem 2rem 5rem;}

/* ---------- homepage hero ---------- */
.hero{display:flex; gap:2.5rem; align-items:center; margin-bottom:2.75rem;}
.hero img{
  width:140px; height:140px; border-radius:50%; object-fit:cover; flex:none;
  box-shadow:0 1px 3px rgba(0,0,0,.12);
}
h1{font-size:2.35rem; margin:0 0 .5rem; font-weight:400; letter-spacing:-.005em;}
.affil{
  font-family:"Optima","Segoe UI",Helvetica,Arial,sans-serif;
  font-size:.85rem; color:var(--muted); line-height:1.8; margin:0 0 .4rem;
}
.affil a{text-decoration:none; border-bottom:1px solid var(--rule);}
.affil a:hover{color:var(--accent); border-bottom-color:var(--accent);}
.contact{font-family:"Optima","Segoe UI",Helvetica,Arial,sans-serif; font-size:.85rem; margin:0;}
.contact a{text-decoration:none; border-bottom:1px solid var(--rule);}
.contact a:hover{color:var(--accent); border-bottom-color:var(--accent);}

.books{
  font-family:"Optima","Segoe UI",Helvetica,Arial,sans-serif;
  font-size:.85rem; color:var(--muted);
  display:flex; flex-wrap:wrap; align-items:baseline; gap:.3rem 0;
  padding:1rem 0; border-top:1px solid var(--rule); border-bottom:1px solid var(--rule);
  margin-bottom:2.5rem;
}
.books .label{font-weight:600; color:var(--ink); margin-right:.7rem;}
.books a{color:var(--ink); text-decoration:none; border-bottom:1px solid var(--rule); margin-right:1.3rem;}
.books a:hover{color:var(--accent); border-bottom-color:var(--accent);}

.cols{display:grid; grid-template-columns:1fr 1fr; gap:2.5rem;}
.group h2{
  font-family:"Optima","Segoe UI",Helvetica,Arial,sans-serif;
  font-size:.68rem; text-transform:uppercase; letter-spacing:.11em;
  color:var(--accent); margin:0 0 .9rem; font-weight:600;
}
.group ul{list-style:none; margin:0 0 1.9rem; padding:0;}
.group li{margin-bottom:.6rem; font-size:1.02rem; line-height:1.45;}
.group a{text-decoration:none;}
.group a:hover{color:var(--accent);}

/* ---------- subpage title ---------- */
.page-title{margin-bottom:2.5rem;}
.page-title h1{font-size:1.9rem; margin:0 0 .4rem;}
.page-title p.lede{
  font-family:"Optima","Segoe UI",Helvetica,Arial,sans-serif;
  font-size:.88rem; color:var(--muted); margin:0; max-width:60ch; line-height:1.6;
}

.section-block{margin-bottom:2.75rem;}
.section-block:last-child{margin-bottom:0;}
.section-block h2{
  font-family:"Optima","Segoe UI",Helvetica,Arial,sans-serif;
  font-size:.68rem; text-transform:uppercase; letter-spacing:.11em;
  color:var(--accent); margin:0 0 1rem; font-weight:600;
}

/* ---------- publications list ---------- */
.pub-list{list-style:none; margin:0; padding:0;}
.pub-list li{padding:1rem 0; border-bottom:1px solid var(--rule); font-size:1rem; line-height:1.55;}
.pub-list li:first-child{padding-top:0;}
.pub-list .authors{
  font-family:"Optima","Segoe UI",Helvetica,Arial,sans-serif;
  font-size:.8rem; color:var(--muted); display:block; margin-bottom:.3rem;
}
.pub-list .title a{text-decoration:none;}
.pub-list .title a:hover{color:var(--accent);}
.pub-list .venue{font-style:italic; color:var(--muted);}
.pub-list .extra{
  font-family:"Optima","Segoe UI",Helvetica,Arial,sans-serif;
  font-size:.78rem; margin-left:.4rem;
}
.pub-list .extra a{color:var(--muted); border-bottom:1px solid var(--rule); text-decoration:none;}
.pub-list .extra a:hover{color:var(--accent); border-bottom-color:var(--accent);}

/* ---------- generic entry lists (students / talks / teaching) ---------- */
.entry-list{list-style:none; margin:0; padding:0;}
.entry-list li{padding:.75rem 0; border-bottom:1px solid var(--rule); font-size:1.02rem; line-height:1.5;}
.entry-list li:first-child{padding-top:0;}
.entry-list li:last-child{border-bottom:none;}
.entry-list .who{
  font-family:"Optima","Segoe UI",Helvetica,Arial,sans-serif;
  font-size:.8rem; color:var(--muted); display:block; margin-bottom:.2rem;
}
.entry-list a{text-decoration:none;}
.entry-list a:hover{color:var(--accent);}
.entry-list .meta{font-style:italic; color:var(--muted); font-size:.92rem;}
.entry-list .plain{color:var(--ink);}

.name-grid{display:flex; flex-wrap:wrap; gap:.5rem 0;}
.name-grid li{
  flex:0 0 100%; border-bottom:none; padding:.35rem 0; font-size:1rem;
}

/* ---------- footer ---------- */
footer.site-footer{
  margin-top:1.5rem; padding:1.5rem 2rem 3rem; border-top:1px solid var(--rule);
  font-family:"Optima","Segoe UI",Helvetica,Arial,sans-serif;
  font-size:.78rem; color:var(--muted);
  max-width:880px; margin-left:auto; margin-right:auto;
}
footer.site-footer a{text-decoration:none; border-bottom:1px solid var(--rule);}
footer.site-footer a:hover{color:var(--accent); border-bottom-color:var(--accent);}

@media (max-width: 640px){
  .page{padding:2.75rem 1.25rem 3.5rem;}
  .hero{flex-direction:column; align-items:flex-start; text-align:left; gap:1.25rem;}
  h1{font-size:1.9rem;}
  .cols{grid-template-columns:1fr;}
  .site-nav .inner{padding:1rem 1.25rem;}
  footer.site-footer{padding-left:1.25rem; padding-right:1.25rem;}
}
