

:root{
  --bg:#F3F4F1;
  --ink:#1A1C19;
  --ink-2:#555B54;
  --ink-3:#868C84;
  --rule:#D7D9D2;
  --rule-2:#E4E5DF;
  --accent:#9E2E22;
  --accent-quiet:#B8564A;
  --serif:"Newsreader",Charter,"Iowan Old Style",Georgia,serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}

@media (prefers-color-scheme:dark){
  :root{
    --bg:#131512;--ink:#E9EAE3;--ink-2:#A8AEA3;--ink-3:#7B8177;
    --rule:#2E312B;--rule-2:#24271F;--accent:#E0796A;--accent-quiet:#C4685A;
  }
}

*{box-sizing:border-box}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--serif);
  font-size:1.0625rem;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{margin:0;font-weight:400;text-wrap:balance;line-height:1.2}
p{margin:0}
ol,ul{margin:0;padding:0;list-style:none}
sub{font-size:.7em}

a{color:inherit;text-decoration:none;border-bottom:1px solid var(--ink-3);
  transition:border-color .15s ease,color .15s ease}
a:hover{color:var(--accent);border-bottom-color:var(--accent-quiet)}
a:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:1px}

.wrap{max-width:64rem;margin-inline:auto;padding-inline:clamp(1.25rem,4.5vw,3.5rem)}

.bar{position:sticky;top:0;z-index:10;background:var(--bg);border-bottom:1px solid var(--rule)}
.bar-in{display:flex;align-items:center;gap:1rem;height:3rem}
.wordmark{border:0;font-size:.9375rem}
.nav{margin-left:auto;display:flex;gap:1.4rem;font-family:var(--mono);font-size:.75rem;
  letter-spacing:.09em;text-transform:uppercase}
.nav a{border:0;padding-block:.3rem;color:var(--ink-3)}
.nav a:hover{color:var(--ink)}
.nav a[aria-current="page"]{color:var(--ink);box-shadow:inset 0 -1px 0 0 var(--accent)}

.masthead{padding-top:clamp(1.75rem,4vw,2.75rem);padding-bottom:clamp(1.5rem,3.5vw,2.25rem)}
.masthead-in{display:flex;gap:clamp(1.5rem,4vw,2.75rem);align-items:flex-start;flex-wrap:wrap}
.portrait{flex:0 0 auto;width:11.5rem;margin:0}
.portrait img{display:block;width:100%;height:auto;image-orientation:from-image}
.portrait figcaption{margin-top:.45rem;font-family:var(--mono);font-size:.625rem;
  letter-spacing:.05em;color:var(--ink-3)}
.masthead-text{flex:1 1 24rem;min-width:0}
.kicker{font-family:var(--mono);font-size:.6875rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink-3);margin-bottom:.85rem}
h1{font-size:clamp(2.1rem,5.2vw,2.9rem);font-weight:300;letter-spacing:-.015em}
.roles{margin-top:.8rem;color:var(--ink-2);max-width:34rem}
.contact-line{margin-top:1.1rem;display:flex;flex-wrap:wrap;gap:.35rem 1.75rem;
  font-family:var(--mono);font-size:.8125rem;color:var(--ink-2)}

.dir{border-top:1px solid var(--rule);padding-top:.25rem;padding-bottom:1rem;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:.5rem 2.75rem}
.group{padding-top:1.5rem;align-content:start}
.group h2{font-family:var(--mono);font-size:.6875rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-3);margin-bottom:.9rem}
.group ul{display:grid;gap:.85rem}
.t{line-height:1.3}
.d{font-size:.8125rem;line-height:1.45;color:var(--ink-3);margin-top:.12rem}
.d a{border-bottom-color:var(--ink-3)}
.when{font-family:var(--mono);font-size:.6875rem;letter-spacing:.03em}
.addr{font-size:.9375rem;line-height:1.45;color:var(--ink-2)}
.addr span{color:var(--ink)}
.addr + .addr{margin-top:.85rem}
.now{font-family:var(--mono);font-size:.5625rem;letter-spacing:.09em;text-transform:uppercase;
  color:var(--accent);border:1px solid var(--accent);border-radius:2px;padding:.05rem .28rem;
  margin-left:.4rem;white-space:nowrap;vertical-align:.12em}

.lead{margin-top:.8rem;color:var(--ink-2);max-width:34rem}
.pubs{border-top:1px solid var(--rule);padding-bottom:1rem}
.year-group{display:grid;grid-template-columns:5.5rem minmax(0,1fr);gap:0 2.25rem;
  padding-block:1.5rem;border-top:1px solid var(--rule-2)}
.year-group:first-child{border-top:0}
.year{font-family:var(--mono);font-size:.8125rem;letter-spacing:.05em;
  font-variant-numeric:tabular-nums;color:var(--ink-2);padding-top:.28rem}
.pub-list{display:grid;gap:1.5rem}
.pub-title{font-size:1.0625rem;line-height:1.32}
.pub-authors{color:var(--ink-2);font-size:.9375rem;margin-top:.15rem}
.pub-venue{color:var(--ink-3);font-size:.875rem;font-style:italic;margin-top:.08rem}
.pub-links{display:flex;flex-wrap:wrap;gap:.3rem .9rem;margin-top:.4rem;
  font-family:var(--mono);font-size:.75rem}
.l-id{color:var(--ink-2);border-bottom-color:var(--ink-3)}
.l-doc{color:var(--ink-3);border-bottom:1px dotted var(--ink-3)}
.pub-links a:hover{color:var(--accent)}

footer{border-top:1px solid var(--rule);padding-block:1.75rem 2.5rem;margin-top:1.5rem}
.foot{display:flex;flex-wrap:wrap;gap:.6rem 1.75rem;align-items:baseline;
  font-family:var(--mono);font-size:.75rem;color:var(--ink-3)}
.foot a{color:var(--ink-2);border-bottom-color:var(--ink-3)}

@media (max-width:640px){
  .year-group{grid-template-columns:1fr;gap:.5rem}
  .year{padding-top:0}
  .portrait{width:9rem}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
