:root {
  --bg: #fbfaf7;
  --text: #22201c;
  --muted: #6d675e;
  --accent: #8a2c1d;
  --accent-soft: rgba(138, 44, 29, 0.35);
  --rule: #e4dfd5;
}
* { box-sizing: border-box; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font: 20px/1.55 "Newsreader", Georgia, serif;
  font-optical-sizing: auto;
  -webkit-font-smoothing: antialiased;
}
a {
  color: var(--accent);
  text-decoration: underline;
  text-decoration-color: var(--accent-soft);
  text-underline-offset: 3px;
}
a:hover { text-decoration-color: var(--accent); }
.wrap { max-width: 640px; margin: 0 auto; padding: 72px 20px 80px; }

header { display: flex; gap: 24px; align-items: center; margin-bottom: 32px; }
.photo {
  flex: none; width: 96px; height: 96px; border-radius: 50%;
  object-fit: cover; object-position: 50% 30%;
}
h1 { font-weight: 500; font-size: 40px; line-height: 1.1; margin: 0; letter-spacing: -0.015em; }
.role { color: var(--muted); margin-top: 4px; font-size: 18px; }

.contact { color: var(--muted); font-size: 17px; margin-top: 2px; }
.nowrap { white-space: nowrap; }

p { margin: 0 0 16px; }

h2 {
  font-weight: 500; font-size: 15px; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--muted); margin: 56px 0 18px; padding-bottom: 8px; border-bottom: 1px solid var(--rule);
}
ol.pubs { list-style: none; padding: 0; margin: 0; }
.pubs li { margin-bottom: 24px; }
.pubs .t { font-weight: 500; color: var(--text); text-decoration: none; }
.pubs .t:hover { color: var(--accent); }
.pubs .a { font-size: 18px; }
.pubs .a b { font-weight: 500; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.pubs .v { font-size: 18px; color: var(--muted); }
.pubs .v i { color: var(--text); }
.pubs .l { font-size: 16px; margin-left: 8px; }
.pubs .l a { margin-right: 6px; }

.note { font-size: 16px; color: var(--muted); }

footer { margin-top: 64px; font-size: 15px; color: var(--muted); }

@media (max-width: 600px) {
  header { flex-direction: column; align-items: flex-start; gap: 16px; }
  .contact .sep { display: none; }
  .contact > * { display: block; }
}
@media (max-width: 640px) {
  body { font-size: 18px; }
  .wrap { padding: 40px 16px 56px; }
  .photo { width: 76px; height: 76px; }
  h1 { font-size: 32px; }
}
