:root{
  --paper:#EFEFEA;
  --paper-2:#E4E3DA;
  --ink:#15181B;
  --ink-soft:#5C6167;
  --rule:#C9C8BE;
  --marine:#1F3A93;
  --marine-soft:#E2E5F2;
  --display:"Newsreader",Georgia,serif;
  --body:"Inter",system-ui,-apple-system,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,monospace;
  --gutter:clamp(20px,5vw,64px);
}

*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--body);
  font-size:16px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block;}
a{color:var(--marine);text-decoration:none;border-bottom:1px solid rgba(31,58,147,.35);}
a:hover{border-bottom-color:var(--marine);}
a:focus-visible,button:focus-visible{outline:2px solid var(--marine);outline-offset:3px;}

.wrap{max-width:1080px;margin:0 auto;padding:0 var(--gutter);}
.measure{max-width:64ch;}

.label{
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--ink-soft);
}

/* ---- nav ---- */
.nav{
  position:sticky;top:0;z-index:20;
  background:rgba(239,239,234,.92);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--rule);
}
.nav__inner{display:flex;gap:22px;align-items:center;height:52px;overflow-x:auto;scrollbar-width:none;}
.nav__inner::-webkit-scrollbar{display:none;}
.nav a{
  font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink);border-bottom:none;white-space:nowrap;
}
.nav a:hover{color:var(--marine);}
.nav a[aria-current="page"]{color:var(--marine);border-bottom:1px solid var(--marine);}
.nav a.nav__name{font-family:var(--display);font-size:16px;letter-spacing:0;text-transform:none;margin-right:auto;border-bottom:none;}

/* ---- hero (home) ---- */
.hero{padding:clamp(56px,11vw,120px) 0 clamp(36px,6vw,56px);}
.hero h1{
  font-family:var(--display);font-weight:300;
  font-size:clamp(44px,9vw,86px);line-height:1.02;letter-spacing:-.02em;margin:0 0 22px;
}
.hero__lede{
  font-family:var(--display);font-size:clamp(20px,3.1vw,27px);font-weight:300;
  line-height:1.42;max-width:26ch;margin:0 0 26px;
}
.hero__body{max-width:58ch;color:#2B3035;margin:0 0 34px;}
.hero__actions{display:flex;flex-wrap:wrap;gap:10px;}

/* ---- page header (inner pages) ---- */
.pagehead{padding:clamp(44px,8vw,84px) 0 clamp(28px,4vw,44px);border-bottom:1px solid var(--rule);margin-bottom:clamp(40px,6vw,64px);}
.pagehead .label{display:block;margin-bottom:14px;}
.pagehead h1{
  font-family:var(--display);font-weight:300;
  font-size:clamp(34px,6.4vw,62px);line-height:1.06;letter-spacing:-.02em;margin:0 0 22px;max-width:18ch;
}
.pagehead p{max-width:62ch;color:#2B3035;margin:0;font-size:17px;}

.btn{
  font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
  padding:11px 18px;border:1px solid var(--marine);color:var(--marine);
  background:none;border-radius:0;display:inline-block;
}
.btn--solid{background:var(--marine);color:var(--paper);}
.btn:hover{background:var(--marine);color:var(--paper);}

/* ---- institution strip ---- */
.strip{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:16px 0;margin-bottom:clamp(48px,8vw,88px);}
.strip ul{display:flex;flex-wrap:wrap;gap:8px 26px;list-style:none;margin:0;padding:0;}
.strip li{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);}

/* ---- section shell ---- */
.section{padding:0 0 clamp(56px,9vw,96px);}
.section__head{display:grid;grid-template-columns:110px 1fr;gap:22px;border-top:1px solid var(--ink);padding-top:14px;margin-bottom:36px;}
.section__head h2{font-family:var(--display);font-weight:300;font-size:clamp(28px,4.4vw,40px);line-height:1.12;margin:0;letter-spacing:-.015em;}
.section__head .label{padding-top:9px;}

/* ---- records ---- */
.record{border-top:1px solid var(--rule);padding:28px 0;}
.record:first-of-type{border-top:none;}
.record h3{font-family:var(--display);font-weight:400;font-size:clamp(21px,2.9vw,26px);line-height:1.25;margin:0 0 8px;max-width:34ch;}
.record__meta{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--ink-soft);margin:0 0 20px;text-transform:uppercase;}
.record dl{margin:0;display:grid;gap:14px;}
.record .row{display:grid;grid-template-columns:110px 1fr;gap:22px;align-items:start;}
.record dt{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--marine);padding-top:3px;}
.record dd{margin:0;max-width:62ch;color:#24282C;}

/* ---- role list ---- */
.roles{list-style:none;margin:0;padding:0;}
.roles li{display:grid;grid-template-columns:1fr auto;gap:8px 22px;align-items:baseline;border-bottom:1px solid var(--rule);padding:16px 0;}
.roles strong{font-weight:500;font-size:16.5px;display:block;margin-bottom:3px;}
.roles p{margin:0;color:var(--ink-soft);font-size:14.5px;max-width:60ch;line-height:1.55;}
.roles .when{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--ink-soft);text-align:right;white-space:nowrap;}

.arc{margin-top:26px;padding:18px 20px;background:var(--marine-soft);font-family:var(--mono);font-size:12px;line-height:1.9;letter-spacing:.04em;color:#1B2A5E;}

/* ---- project cards ---- */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1px;background:var(--rule);border:1px solid var(--rule);}
.card{background:var(--paper);padding:24px 22px 26px;display:flex;flex-direction:column;gap:10px;border-bottom:none;}
a.card{border-bottom:none;color:inherit;}
a.card:hover{background:var(--paper-2);}
.card .label{color:var(--marine);}
.card h3{font-family:var(--display);font-weight:400;font-size:21px;line-height:1.25;margin:0;}
.card p{margin:0;font-size:14.5px;color:var(--ink-soft);line-height:1.55;}
.card .more{margin-top:auto;padding-top:12px;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--marine);}

/* ---- networks (lower tier) ---- */
.networks{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px 14px;}
.networks li{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;color:var(--ink-soft);border:1px solid var(--rule);padding:7px 12px;}

/* ---- writing ---- */
.piece{border-top:1px solid var(--rule);padding:22px 0;}
.piece:first-of-type{border-top:none;}
.piece h3{font-family:var(--display);font-weight:400;font-size:21px;margin:0 0 6px;line-height:1.3;}
.piece p{margin:0;max-width:62ch;color:#24282C;}
.piece .label{display:block;margin-bottom:9px;}

/* ---- table ---- */
.talks{width:100%;border-collapse:collapse;text-align:left;}
.talks th{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);font-weight:400;border-bottom:1px solid var(--ink);padding:0 16px 10px 0;}
.talks td{border-bottom:1px solid var(--rule);padding:15px 16px 15px 0;vertical-align:top;font-size:15px;}
.talks td:first-child{font-weight:500;}
.talks .yr{font-family:var(--mono);font-size:12px;color:var(--ink-soft);white-space:nowrap;}

/* ---- education ---- */
.edu{list-style:none;margin:0;padding:0;}
.edu li{border-bottom:1px solid var(--rule);padding:15px 0;}
.edu strong{font-weight:500;}
.edu span{display:block;color:var(--ink-soft);font-size:14.5px;}

/* ---- figures ---- */
figure{margin:0 0 8px;}
figure img{width:100%;height:auto;object-fit:cover;background:var(--paper-2);}
figcaption{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--ink-soft);padding-top:9px;line-height:1.6;}

/* ---- contact ---- */
.contact{background:var(--ink);color:var(--paper);padding:clamp(48px,8vw,88px) 0;}
.contact h2{font-family:var(--display);font-weight:300;font-size:clamp(28px,4.4vw,42px);margin:0 0 18px;letter-spacing:-.015em;}
.contact p{max-width:54ch;color:#BFC4C9;margin:0 0 26px;}
.contact a{color:var(--paper);border-bottom-color:rgba(239,239,234,.4);}
.contact .email{font-family:var(--display);font-size:clamp(20px,3.4vw,30px);font-weight:300;}
.contact .label{color:#8A9096;}

footer{padding:26px 0 40px;border-top:1px solid var(--rule);}
footer p{margin:0;font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--ink-soft);text-transform:uppercase;}

/* ---- motion ---- */
.reveal{opacity:0;transform:translateY(14px);transition:opacity .6s ease,transform .6s ease;}
.reveal.in{opacity:1;transform:none;}

@media (max-width:720px){
  .section__head{grid-template-columns:1fr;gap:8px;}
  .section__head .label{padding-top:0;}
  .record .row{grid-template-columns:1fr;gap:3px;}
  .roles li{grid-template-columns:1fr;}
  .roles .when{text-align:left;}
  .talks thead{display:none;}
  .talks tr{display:block;border-bottom:1px solid var(--rule);padding:14px 0;}
  .talks td{display:block;border:none;padding:1px 0;}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  .reveal{opacity:1;transform:none;transition:none;}
}
