:root{--ink:#101010;--paper:#fff;--muted:#6d6d6d;--rule:#dcdcd8;
  --accent:#c8102e;--accent-tint:#fbe9ec;--margin-col:76px;--gap:36px;--max:1060px}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);
  font-family:"Source Serif 4",Georgia,serif;font-size:17px;line-height:1.62;
  -webkit-font-smoothing:antialiased}
a{color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.skip{position:absolute;left:-9999px}
.skip:focus{left:8px;top:8px;background:var(--ink);color:var(--paper);padding:8px 12px;z-index:50}
.mono{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:11px;
  letter-spacing:.14em;text-transform:uppercase;font-weight:500}
.wrap{max-width:var(--max);margin:0 auto;padding:0 28px}

.bar{position:sticky;top:0;z-index:20;background:var(--paper);border-bottom:1px solid var(--rule)}
.bar .wrap{display:flex;align-items:center;gap:18px;height:52px}
.sigil{font-family:"Archivo",sans-serif;font-weight:700;font-size:14px;text-decoration:none}
.sigil span{color:var(--accent)}
.nav{display:flex;gap:20px;margin-right:auto;margin-left:14px;flex-wrap:wrap}
.nav a{text-decoration:none;color:var(--muted);border-bottom:1px solid transparent;padding-bottom:2px}
.nav a:hover,.nav a[aria-current]{color:var(--ink);border-bottom-color:var(--accent)}
.lang{text-decoration:none;color:var(--muted);border:1px solid var(--rule);padding:5px 10px}
.lang:hover{color:var(--ink);border-color:var(--ink)}

.hero .wrap{display:grid;grid-template-columns:var(--margin-col) 1fr 250px;
  gap:0 var(--gap);padding-top:70px;padding-bottom:42px;align-items:start}
.pagehead .wrap{display:grid;grid-template-columns:var(--margin-col) 1fr;
  gap:0 var(--gap);padding-top:60px;padding-bottom:34px}
.rz{font-family:"IBM Plex Mono",monospace;font-size:10.5px;color:var(--muted);
  padding-top:.6em;text-decoration:none;border-right:1px solid var(--rule);
  padding-right:14px;text-align:right;display:block;min-height:1.4em}
.rz:hover{color:var(--accent)}
.eyebrow{color:var(--accent);margin:0 0 18px}
h1{font-family:"Archivo",sans-serif;font-weight:700;
  font-size:clamp(2.5rem,6.4vw,4.6rem);line-height:.94;letter-spacing:-.033em;margin:0}
h1.ph{font-size:clamp(2rem,4.6vw,3rem)}
h1 .post{display:block;font-size:.26em;letter-spacing:.05em;font-weight:500;
  color:var(--muted);margin-top:18px;font-family:"IBM Plex Mono",monospace}
.standfirst{font-size:1.2rem;line-height:1.5;margin:26px 0 0;max-width:40ch}
.standfirst.sm{font-size:1.06rem;max-width:56ch;margin-top:18px;color:var(--muted)}
.standfirst b{font-weight:600;box-shadow:inset 0 -.42em 0 var(--accent-tint)}
.portrait{width:100%;height:auto;display:block;filter:grayscale(1) contrast(1.04)}
figure{margin:6px 0 0}
figcaption{margin:10px 0 0;color:var(--muted)}

.control{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}
.control .wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:18px 28px;
  padding-top:16px;padding-bottom:16px}
.control dt{color:var(--muted);margin:0 0 5px}
.control dd{margin:0;font-family:"Archivo",sans-serif;font-size:.9rem;font-weight:500}
.control dd a{text-decoration:none;border-bottom:1px solid var(--rule)}

section{border-bottom:1px solid var(--rule)}
section .wrap{display:grid;grid-template-columns:var(--margin-col) 1fr;
  gap:0 var(--gap);padding-top:44px;padding-bottom:44px}
h2{font-family:"Archivo",sans-serif;font-weight:600;font-size:1.5rem;
  letter-spacing:-.018em;margin:0 0 22px}
h2::after{content:"";display:block;width:26px;height:3px;background:var(--accent);margin-top:14px}
.lede{max-width:60ch;margin:0 0 26px;color:var(--muted);font-size:1rem}
.sub{color:var(--muted);margin:0 0 4px}
.flag{color:var(--accent);margin:0 0 12px}

.matrix{width:100%;border-collapse:collapse;font-family:"Archivo",sans-serif}
.matrix th,.matrix td{text-align:left;padding:11px 8px;border-bottom:1px solid var(--rule)}
.matrix thead th{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);font-weight:400;border-bottom:1px solid var(--ink)}
.matrix tbody th{font-weight:600;font-size:1rem;width:34%}
.matrix tbody th small{display:block;font-family:"IBM Plex Mono",monospace;font-size:10px;
  letter-spacing:.1em;color:var(--muted);font-weight:400;text-transform:uppercase;margin-top:3px}
.matrix td{text-align:center;width:13.2%}
.mark{display:inline-block;width:11px;height:11px;background:var(--accent)}
.mark.past{background:none;box-shadow:inset 0 0 0 1px var(--muted)}
.none{color:var(--rule)}
.legend{display:flex;gap:22px;flex-wrap:wrap;margin-top:16px;color:var(--muted)}
.legend span{display:flex;align-items:center;gap:8px}
.coverage{margin-top:24px;display:grid;gap:12px}
.coverage div{display:flex;gap:14px;align-items:baseline;flex-wrap:wrap}
.coverage dt{color:var(--muted);white-space:nowrap;min-width:150px}
.coverage dd{margin:0;font-family:"Archivo",sans-serif;font-weight:600;font-size:1rem}

.tally{display:grid;grid-template-columns:repeat(4,1fr);gap:26px;margin:0 0 32px;padding:0;list-style:none}
.tally b{display:block;font-family:"Archivo",sans-serif;font-weight:700;font-size:2.3rem;
  letter-spacing:-.03em;line-height:1}
.tally span{display:block;font-family:"IBM Plex Mono",monospace;font-size:10px;
  letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-top:8px}

.rows{border-top:1px solid var(--rule)}
.row{display:grid;grid-template-columns:1fr 170px;gap:6px 24px;padding:14px 0;
  border-bottom:1px solid var(--rule);align-items:baseline}
.row .role{font-family:"Archivo",sans-serif;font-weight:600;font-size:1rem}
.row .org,.note{color:var(--muted);font-size:.94rem}
.note{margin-top:4px}
.thesis{color:var(--muted);font-size:.92rem;font-style:italic;margin-top:5px;max-width:56ch}
.when{color:var(--muted);justify-self:end;white-space:nowrap;
  font-family:"IBM Plex Mono",monospace;font-size:11px;letter-spacing:.1em}
.when.now::before{content:"";display:inline-block;width:5px;height:5px;background:var(--accent);
  border-radius:50%;margin-right:8px;vertical-align:.18em}
.entry{padding:22px 0;border-bottom:1px solid var(--rule)}
.entry:first-child{border-top:1px solid var(--rule)}
.entry-head{display:grid;grid-template-columns:1fr 170px;gap:4px 24px;align-items:baseline}
.entry .role{font-family:"Archivo",sans-serif;font-weight:600;font-size:1.06rem}
.entry .org{color:var(--muted);font-size:.95rem;margin-top:3px}
.entry p{margin:12px 0 0;max-width:62ch;font-size:.98rem}
.early{margin-top:30px}

.fields{list-style:none;margin:0 0 26px;padding:0;display:grid;
  grid-template-columns:1fr 1fr;gap:11px 28px;max-width:620px}
.fields li{font-family:"Archivo",sans-serif;font-weight:600;font-size:1.1rem;
  letter-spacing:-.012em;padding-left:16px;position:relative}
.fields li::before{content:"";position:absolute;left:0;top:.62em;width:7px;height:2px;background:var(--accent)}
.paper{border:1px solid var(--rule);border-left:2px solid var(--accent);padding:20px 22px;margin-bottom:18px}
.paper .mono{color:var(--muted);margin:0}
.paper h3{font-family:"Archivo",sans-serif;font-weight:600;font-size:1.04rem;margin:8px 0 10px;line-height:1.3}
.paper p{margin:0 0 12px;color:var(--muted);font-size:.95rem}
.doi{color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent-tint)}
.doi:hover{border-bottom-color:var(--accent)}
.biobox{border-left:2px solid var(--accent);padding:2px 0 2px 22px;max-width:64ch}
.biobox p{margin:0}
.bigportrait{max-width:340px}
.bigportrait img{width:100%;height:auto;display:block}
.more{display:inline-block;margin-top:22px;text-decoration:none;
  border-bottom:1px solid var(--accent);padding-bottom:2px;color:var(--accent)}
.contact{display:flex;flex-wrap:wrap;gap:10px 34px;margin:0;padding:0;list-style:none}
.contact a{text-decoration:none;border-bottom:1px solid var(--rule)}
.contact a:hover{border-bottom-color:var(--accent);color:var(--accent)}
footer .wrap{padding:26px 28px 54px;color:var(--muted);display:flex;gap:28px;flex-wrap:wrap}
footer a{text-decoration:none;border-bottom:1px solid var(--rule)}

@media (max-width:860px){
  :root{--margin-col:0px;--gap:0px}
  .hero .wrap,section .wrap,.pagehead .wrap{grid-template-columns:1fr}
  .hero .wrap{padding-top:42px}
  .rz{display:none}
  .nav{display:none}
  figure{order:-1;max-width:170px;margin:0 0 26px}
  .row,.entry-head{grid-template-columns:1fr}
  .when{justify-self:start;margin-top:6px}
  .control .wrap,.tally{grid-template-columns:1fr 1fr}
  .fields{grid-template-columns:1fr}
  .matrix thead{display:none}
  .matrix,.matrix tbody,.matrix tr,.matrix th,.matrix td{display:block;width:auto}
  .matrix tr{padding:13px 0;border-bottom:1px solid var(--rule)}
  .matrix tbody th{width:auto;border:0;padding:0 0 7px}
  .matrix td{display:inline-block;width:auto;text-align:left;border:0;padding:0 16px 0 0}
  .matrix td::before{content:attr(data-label);font-family:"IBM Plex Mono",monospace;
    font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-right:6px}
  .matrix td.empty{display:none}
}
@media print{.bar,.nav,.lang,.more,.skip{display:none}
  body{font-size:11pt}.rz{display:none}
  section .wrap,.pagehead .wrap{grid-template-columns:1fr;padding:14px 0}}

/* --- footer, crest, LinkedIn --- */
footer .wrap{display:grid;grid-template-columns:64px 1fr 1fr;gap:26px;align-items:start}
.crest{width:64px;height:auto;opacity:.85}
.fcol{display:flex;flex-direction:column;gap:9px}
.fcol a{text-decoration:none;border-bottom:1px solid transparent;width:fit-content}
.fcol a:hover{border-bottom-color:var(--accent)}
.li{display:inline-flex;align-items:center;gap:7px}
.li img{display:block}

/* --- contact form --- */
.cform{display:grid;grid-template-columns:1fr 1fr;gap:18px 24px;max-width:640px}
.cform label{display:flex;flex-direction:column;gap:7px}
.cform label.full{grid-column:1/-1}
.cform span{color:var(--muted)}
.cform input,.cform textarea{font:inherit;font-size:1rem;padding:10px 12px;
  border:1px solid var(--rule);background:var(--paper);color:var(--ink);border-radius:0}
.cform input:focus,.cform textarea:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--ink)}
.cform textarea{resize:vertical}
.cform button{grid-column:1/-1;justify-self:start;background:var(--ink);color:var(--paper);
  border:0;padding:12px 26px;cursor:pointer}
.cform button:hover{background:var(--accent)}
.hp{position:absolute;left:-9999px}
.sent{color:var(--accent);border-left:2px solid var(--accent);padding-left:16px}
.alt{margin-top:30px}
.err{color:var(--accent)}
@media (max-width:860px){
  footer .wrap{grid-template-columns:1fr;gap:20px}
  .cform{grid-template-columns:1fr}
}
.crest.big{width:96px;margin:0 0 24px}
